一sql语言的分类
sql语言分为4类:DQL(数据查询语言),DML(数据操纵语言),数据定义语言(DDL),数据控制语言(DCL)。
二数据定义语言
数据定义语言用于建立,删除,修改数据库中的各种对象,对象比如-表,索引,视图,同义词、聚簇等
CREATETABLE/VIEW/INDEX/SYN/CLUSTER
1.创建表
语法:create table table_name(列1 列1名,
列2,列2名
列3,列3名
。。。。。)
注意:创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型。
删除表:
drop table 表名:删除表结构和数据
2.oracle常用的数据类型:
(1).文本,二进制型
char(size):定长 定义最大两千个字节
varchar(size)变长:定义最大四千个字节
nchar(n)定长:unicode数据类型,定义两千个字节
nvarchar2(n)变长:unicode数据类型,四千个字节
clob:字符型大数据,最大8tb
blob:二进制数据,存放声音,视频,最大8tb
(2)数值型
number(p,s)
p位精度位,s为小数位.范围: 1 <= p <=38,-84 <= s <= 127
保存数据范围:-1.0e-130 <= number value< 1.0e+126
保存在机器内部的范围: 1 ~ 22 bytes
有效位:左边第一个不为0的数算起
默认值取决于p,如果没有指定p,那么s是最大范围,如果指定了p,那么s=0。
p>0,对s分2种情况:
s>0
精确到小数点右边s位,并四舍五入。然后检验有效数位是否<=p;如果s>p,小数点右边至少有s-p个0填充。
s<0
精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s|
s=0等价于NUMBER(p)
此时NUMBER表示整数
例:123.456
number(5,2)--------------123.46 小数点四舍五入
number(5,3)----------错误,小数点左边最多有(p-s)2位,实际有三位
number(5,-2)-------100
12345678
number(5,-2)---错误,有效位>p+|s|
0.1
number(4,5)---错误 (0.10000 有效位P)
0.01
number(4,5)--0.01000
3.对表的添加,修改,删除
(1)表的添加
alert table table_name add(列名,列的数据类型)
(2)表的修改
alert table table_name modify (列名,列的类型)
(3)表的删除‘
alert table table_name drop column 列名
三数据操纵语言
数据操纵语言包括数据的插入,更新,删除
1.数据的插入
语法格式:
INSERT INTO table_name(column1,column2...)
VALUES (value1 ,value2.....);
注意:
插入空值有两种方法:
隐式插入:
insert into emp(empno,ename,job)values(1234,'alex',1300);
显示插入
insert into emp(ename,job,mgr)values(1234,'alex',1300,null);
创建脚本
在sql语句中使用&变量指定列值,可以看做是一占位符
例:
SQL> insert into emp(empno,ename,job) values(&empno,&ename,&job);
输入 empno 的值: 1005
输入 ename 的值: 'tom'
输入 job 的值: 'clerk'
原值 1: insert into emp(empno,ename,job) values(&empno,&ename,&job)
新值 1: insert into emp(empno,ename,job) values(1005,'tom','clerk')
已创建 1 行。
SQL> select ename ,job from emp where empno=1005;
ENAME JOB
---------- ---------
tom clerk
SQL> spool off;
2.数据的更新
语法格式:
update table_name set 字段名=值 ,.....,where [条件];
注意:
lUPDATE语法可以用新值更新原有表行中的各列。 lSET子句指示要修改哪些列和要给予哪些值。 lWHERE子句指定应更新哪些行。如没有WHERE子句,则更新所有的行。3.数据的删除
语法格式:
deletefrom tbl_name [WHEREwhere_definition]
几种删除的比较:
delete from 表名;
dml语句,删除所有记录,表结构还在,写日志,可以恢复的,速度快,不会释放空间,产生碎片,可以闪回,可以回滚
drop table 表名; 删除表的结构和数据
delete from student where xh='A001'; 删除一条记录
truncate table 表名;
ddl中的语句,删除表中的所有记录,表结构还在,不写日志,无法找回删除的记录,速度慢,释放空间,不产生碎片,不可以闪回,不可以回滚