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中的列信息。通过检索这个表,可以方便的获取到表的结构。
|