语句类型

  • 数据定义语言(DDL),包括 CREATE(创建)命令、 ALTER(修改)命令、 DROP(删除)命令等。
  • 数据操纵语言(DML),包括 INSERT(插入)命令、 UPDATE(更新)命令、 DELETE(删除)命令、 SELECT … FOR UPDATE(查询)等。
  • 数据查询语言(DQL),包括基本查询语句、 Order By 子句、 Group By 子句等。
  • 事务控制语言(TCL),包括 COMMIT(提交)命令、 SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
  • 数据控制语言(DCL), GRANT(授权)命令、 REVOKE(撤销)命令。

建表

数据类型
数据类型 类型解释
VARCHAR2(length) 字符串类型:存储可变的长度的字符串,length:是字符串的最大长度,默认不填的时候是1,最大长度不超过4000。
CHAR(length) 字符串类型:存储固定长度的字符串,length:字符串的固定长度大小,默认是1,最大长度不超过2000。
NUMBER(a,b) 数值类型:存储数值类型,可以存整数,也可以存浮点型。a代表数值的最大位数:包含小数位和小数点,b代表小数的位数。例子:number(6,2),输入123.12345,实际存入:123.12 ;number(4,2),输入12312.345,实际春如:提示不能存入,超过存储的指定的精度。
DATA 时间类型:存储的是日期和时间,包括年、月、日、时、分、秒。例子:内置函数sysdate获取的就是DATA类型
TIMESTAMP 时间类型:存储的不仅是日期和时间,还包含了时区。例子:内置函数systimestamp获取的就是timestamp类型
CLOB 大字段类型:存储的是大的文本,比如:非结构化的txt文本,字段大于4000长度的字符串。
BLOB 二进制类型:存储的是二进制对象,比如图片、视频、声音等转换过来的二进制对象
建表语句
  1. -- Create table
  2. create table STUDENT.stuinfo
  3. (
  4. stuid varchar2(11) not null,--学号:'S'+班号(7位数)+学生序号(3位数)(1)
  5. stuname varchar2(50) not null,--学生姓名
  6. sex char(1) not null,--性别
  7. age number(2) not null,--年龄
  8. classno varchar2(7) not null,--班号:'C'+年级(4位数)+班级序号(2位数)
  9. stuaddress varchar2(100) default '地址未录入',--地址 (2)
  10. grade char(4) not null,--年级
  11. enroldate date,--入学时间
  12. idnumber varchar2(18) default '身份证未采集' not null--身份证
  13. )
  14. tablespace USERS --(3)
  15. storage
  16. (
  17. initial 64K
  18. minextents 1
  19. maxextents unlimited
  20. );
  21. -- Add comments to the table
  22. comment on table STUDENT.stuinfo --(4)
  23. is '学生信息表';
  24. -- Add comments to the columns
  25. comment on column STUDENT.stuinfo.stuid -- (5)
  26. is '学号';
  27. comment on column STUDENT.stuinfo.stuname
  28. is '学生姓名';
  29. comment on column STUDENT.stuinfo.sex
  30. is '学生性别';
  31. comment on column STUDENT.stuinfo.age
  32. is '学生年龄';
  33. comment on column STUDENT.stuinfo.classno
  34. is '学生班级号';
  35. comment on column STUDENT.stuinfo.stuaddress
  36. is '学生住址';
  37. comment on column STUDENT.stuinfo.grade
  38. is '年级';
  39. comment on column STUDENT.stuinfo.enroldate
  40. is '入学时间';
  41. comment on column STUDENT.stuinfo.idnumber
  42. is '身份证号';
  • (1)处: not null 表示学号字段(stuid)不能为空。
  • (2)处:default 表示字段stuaddress不填时候会默认填入‘地址未录入’值。
  • (3)处:表示表stuinfo存储的表空间是users,storage表示存储参数:区段(extent)一次扩展64k,最小区段数为1,最大的区段数不限制。
  • (4)处:comment on table 是给表名进行注释。
  • (5)处:comment on column 是给表字段进行注释。
为表字段添加约束
  1. -- Create/Recreate primary, unique and foreign key constraints
  2. alter table STUDENT.STUINFO
  3. add constraint pk_stuinfo_stuid primary key (STUID);
  4. --把stuid当做主键,主键字段的数据必须是唯一性的(学号是唯一的)
  5. -- Create/Recreate check constraints
  6. alter table STUDENT.STUINFO
  7. add constraint ch_stuinfo_age
  8. check (age>0 and age<=50);--给字段年龄age添加约束,学生的年龄只能0-50岁之内的
  9. alter table STUDENT.STUINFO
  10. add constraint ch_stuinfo_sex
  11. check (sex='1' or sex='2');
  12. alter table STUDENT.STUINFO
  13. add constraint ch_stuinfo_GRADE
  14. check (grade>='1900' and grade<='2999');

查询语句

  1. select *|列名|表达式 from 表名 where 条件 order by 列名 ASC 倒序)

备份查询数据命令结构

  1. create table table_name as select * from user.table;

插入语句

  1. insert into table_name (column1,column2,column3) value (value1,value2,value3);

当插入重复数据时会报错

insert插入一个select的结果集
  1. insert into table_name select * from table_name;

更新语句

  1. update table_name set column1=value1,column2=value2 where condition;
利用另外一张表关联更新本表数据的命令结构如下:
  1. update 1 set 列名=(select 列名 from 2 where 1.列名=表2.列名) where exists (select 1 from 2 where 1.列名=表2.列名)

删除语句

Oracle中对表数据的删除是利用delete命令进行的。当delete from不加where条件时,表示是把表中的数据全部删除。

  1. delete from 表名 where 条件

truncate命令也是数据删除命令,他是直接把Oracle表数据一次删除的命令,truncate命令是一个DDL命令,不同于delete是DML命令。

  1. truncate table 表名;
  • TRUNCATE 是 DDL 命令,命令执行完就提交,删除的数据不能恢复; DELETE 命令是 DML 命令,命令执行完需提交后才能生效,删除后的数据可以通过日志文件恢复。
  • 如果表中的数据量较大,TRUNCATE的速度比DELETE速度快很多。
  • truncate删除将重新设置表索引的初始大小,而delete不能。
  • delete能够触发表上相关的delete触发器,而truncate则不会触发。
  • delete删除的原理是一次一条从表中删除数据,并将删除操作当做事物记录在数据库的日志当中,以便进行数据回滚。而truncate是一次性进行数据页的删除,因此执行速度快,但是不能回滚。
  • truncate命令是属于DDL命令,一次性删除表中所有数据,并且数据不能恢复,在实际开发过程当中truncate命令慎用。

去重

Oracle DISTINCT关键字的作用可以对Oracle查询结果进行重复数据的消除。

  1. SELECT DISTINCT 1,列2,列3... from 表名;
文档更新时间: 2020-10-20 10:23   作者:张尚