免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 976 | 回复: 0
打印 上一主题 下一主题

oracle11g 007 sql 第1章 笔记 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-20 09:48 |只看该作者 |倒序浏览
sql是什么?
s是结构化
q是查询
l是语言
结构化有 shell 、Fortran
sql是没有办法做查询语言,是人工智能语言。(lisp、ark这种语言是神经元网络)
sql是不描述课程
sql有五类语言
1类是select
2类DML 开启交易 inster,update,delete
3类TCL commit,rollback,savepoint
4类DDL
1)数据字典是元数据 数据字典简称DD 对于DDL语句是数据字典的DDL
2)CREATE、DROP、trancate,alter,comment,rename.
5类DCL语言数据控制语言由:grant、revoke、set(在oracle 147的 pl/sql这门课会讲到)

isqlplus 创建于90年末期初的
cs 客户端时代 两层架构
bs 网业时代   三层架构
oracle是 ocfj j2ee
isqlpusctl start
select语句能做哪些事情:两张表连接,所有的数据库都要有第三范式:
1、列不能重复
2、列不可在分
3、行不能在分
所谓外键就是两张表:一张表是主表,一张是子表。(employees、departments)两张表只有一列是一样的。
以上两张表department是的 department_id是主键,(是唯一的)departments的department_id和employees的department_id关联
一条select 是statement,新加的列一定在最后;

select *from departments;  -----查询部门的表
select department_id,location_id from departments; ----查询部门的部门ID、定位ID
select 用 (*)比所有字段的区别是所有列出来的执行速度更快(在oracle调优还会讲到)。

在sqlplus的命令所有都可以缩写例如:conn hr/hr 完整命令是connect hr/hr
select *from employees;    -----在isqlplus查询一个雇员表,isqlplus默认查询的时候列头都是居中的(justified)
注意:(只有在9i和10g会体现居中,在11g就取消了)。
select中的数学运算符做表达式(+,-, *, /)
select salary,salary+300,salary-200,salary*2,salary/2 from employees;
  SALARY SALARY+300 SALARY-200   SALARY*2   SALARY/2
---------- ---------- ---------- ---------- ----------
   2600.00       2900       2400       5200       1300
   2600.00       2900       2400       5200       1300
   4400.00       4700       4200       8800       2200
  13000.00      13300      12800      26000       6500
   6000.00       6300       5800      12000       3000
   6500.00       6800       6300      13000       3250
  10000.00      10300       9800      20000       5000
  12000.00      12300      11800      24000       6000
desc employees;  ----查看employees的类型(专业点就是数据字典)
数据类型commission_pct number(2,2) 第一个2是有2位 第二个是小数点后有2位,(求出来的值是百分比)
COMMISSION_PCT
--------------
          0.40
          0.30
          0.30
          0.30
          0.20
          0.30
          0.25
          0.25
 
select department_id,department_name from departments where department_id =80; ---查询雇员表为雇员ID和雇员名称且雇员ID等于80的内容。
DEPARTMENT_ID DEPARTMENT_NAME
------------- ------------------------------
           80 Sales
select first_name,last_name,commission_pct,salary*(1+NVL(commission_pct,0))"anual salary" from employees;
FIRST_NAME           LAST_NAME                 COMMISSION_PCT anual salary
-------------------- ------------------------- -------------- ------------
Donald               OConnell                                         2600
Douglas              Grant                                            2600
Jennifer             Whalen                                           4400
Michael              Hartstein                                       13000
Pat                  Fay                                              6000
Susan                Mavris                                           6500
Hermann              Baer                                            10000
Shelley              Higgins                                         12000
William              Gietz                                            8300
Steven               King                                            24000
Neena                Kochhar                                         17000
Lex                  De Haan                                         17000
FIRST_NAME           LAST_NAME                 COMMISSION_PCT anual salary
-------------------- ------------------------- -------------- ------------
John                 Russell                             0.40        19600
Karen                Partners                            0.30        17550
Alberto              Errazuriz                           0.30        15600
Gerald               Cambrault                           0.30        14300
Eleni                Zlotkey                             0.20        12600
Peter                Tucker                              0.30        13000
David                Bernstein                           0.25        11875
Peter                Hall                                0.25        11250
 
以上的salary*(1+NVL(commission_pct,0)) null的时候要用NVL转一下,给列做别名 salary*(1+NVL(commission_pct,0)) “anual salary” 
(||)表示列与列、列与字符连接在一起
select last_name||' '||salary from employees;
LAST_NAME||''||SALARY
------------------------------------------------------------------
OConnell 2600
Grant 2600
Whalen 4400
Hartstein 13000
Fay 6000
Mavris 6500
Baer 10000
Higgins 12000
Gietz 8300
King 24000
Kochhar 17000
De Haan 17000
Hunold 9000
Ernst 6000
Austin 4800
Pataballa 4800
Lorentz 4200
Greenberg 12000
Faviet 9000
Chen 8200

select 'xxxx' from employees; 列名和内容都会变成XXXXX
'XXXX'
------
xxxx
xxxx
xxxx
xxxx
xxxx
xxxx
dual 是虚的表
select * from dual;
DUMMY
-----
X
重复的列进行压缩用distinct
select distinct department_id from employees;
DEPARTMENT_ID
-------------
          100
           30
           20
           70
           90
          110
           50
           40
           80
           10
           60
 
12 rows selected
sqlplus 和isqlplus的交互,isqlplus跟脚本交互的。
在Linux的sqlplus下用ed命令生成一条缓存内容,这个内容可以保存为TXT文本,可以为以后直接调用这个TXT文本执行。
PGA是程序全局区
任何语言都有变量
isqlplus 环境变量、替换变量(文字变量)、绑定变量(在oracle是存储环境的)、本地变量、包的私有变量、公共变量。
user_tab_columns保存了当前用户的表、视图和Clusters中的列信息。通过检索这个表,可以方便的获取到表的结构。
 
 
 
 
 
 

 
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP