Oracle第四节课总结

来源:互联网 发布:淘宝卖家返钱 编辑:程序博客网 时间:2024/05/30 23:35


今天学习了创建和管理表以及表的约束。

创建表:

表名 

列名, 数据类型, 数据类型的大小 

   create table demo (name varchar(20) ) 

使用子查询创建表: 

时候用 AS subquery 选项,将创建表和插入数据结合起来 

指定的列和子查询中的列要一一对应 

通过列名和默认值定义列 

SQL>create table demo2 

  2 as 

  3 select ename,sal from emp ; 

Default值: 

执行insert操作时,可以为其指定默认值 

值、表达式和SQL语句都可以作为默认值 

其他的列名或者是伪列都是非法的 

默认值的类型必须和该列的类型一致 

CREATE  TABLE hire_dates  (idNUMBER(8),hire_date  DATE  DEFAULT SYSDATE); 

数据类型: 

1、  varchar2(size):可变长字符数据      最大长度为4000 bytes 可做索引的最大长度为749 

2、  char(size):固定长字符数据      最大长度为2000bytes 

3、  number(p,s):可变字符数据    数字类型    P有效位,S为小数位 

4、  date:日期型数据 

5、  long:可变长字符数据,最大可达2G 

6、  clob:字符数据,最大可达到4G 

7、  raw(long,raw):原始的二进制数据 

8、  blob:二进制数据,最大可达到4G 

9、  bfile:存储外部文件的二进制数据,最大可达到4G 

10、 rowid:行地址    是一个伪列 

 

ALTERTABLE 语句 

使用 ALTER TABLE 语句追加, 修改, 或删除列的语法. 

追加一个新列,新列是表中的最后一列 

SQL>alter table demo add ( 

     2 sal number 

     3 ); 

表已更改。 

可以修改列的数据类型, 尺寸, 和默认值。对默认值的修改只影响今后对表的修改 

SQL>alter table demo modify (sal varchar2(20)); 

表已更改。 

使用 DROP COLUMN 子句删除不再需要的列. 

SQL>alter table demo drop column sal; 

表已更改。 

 

删除表: 

数据和结构都被删除 

所有正在运行的相关事物被提交 

所有相关索引被删除 

DROPTABLE 语句不能回滚 

SQL>drop table qqq; 

 

改变对象的名称: 

执行RENAME语句改变表, 视图, 序列, 或同义词的名称 

必须是对象的拥有者 

SQL>rename demo2 to qqq; 

 

清空表: 

TRUNCATETABLE 语句: 

删除表中所有的数据 

释放表的存储空间 

TRUNCATE语句不能回滚 

可以使用 DELETE 语句删除数据 

SQL>truncate table qqq; 

约束:

约束 

约束是表一级的限制 

如果存在依赖关系,约束可以防止错误的删除数据 

约束的类型: 

NOTNULL 

UNIQUE  

PRIMARYKEY 

FOREIGNKEY 

CHECK 

约束规则: 

用户可以自定义约束,也可以使用Oracle Server的sys_cn格式命名约束 

约束创建的时机: 

创建表的时候,同时创建约束 

表结构创建完成后 

约束可以定义在列一级,或者是表一级 

通过数据字典查看约束 

 

非空性约束与唯一性约束: 

createtable checkTable(email varchar2(30) not null,constraint chk_emailunique(email)); 

insertinto checkTable values ('111@111.com'); 

会插入一条记录,如果再插入一条相同的记录,会报错,因为有唯一性约束,当然如果再增加几个字段,向其它字段中插入信息而不向email中插入任何数据也是会报错的,因为有不为空的约束,如果email有一个默认值就不会出现由于不能为空而出现的问题了 

 

主键约束: 

  1 create table bookType( 

  2 bt_id number(9), 

  3 bt_name varchar2(30), 

  4 constraint bt_id_pk primary key(bt_id) 

  5* ) 

 

外键约束: 

  1 create table books( 

  2 bk_id number(9), 

  3 bk_name varchar2(30), 

  4 bt_id number(9), 

  5 constraint bk_id_pk primary key(bk_id), 

  6 constraint bt_id_fk foreign key (bt_id) references bookType(bt_id) ondelete cascade 

  7* ) 

SQL>/ 

不能删除有外键约束的记录 

 

 

外键约束(续) 

FOREIGNKEY: 在子表中,定义了一个表级的约束 

REFERENCES:指定表和父表中的列 

ONDELETE CASCADE: 当删除父表时,级联删除子表记录 

ONDELETE SET NULL: 将子表的相关依赖记录的外键值置为null 

SQL>delete from bookType where bt_id=1; 

 

check约束 

定义每一行记录所必须满足的条件 

下面的表达式可以使用在check约束中: 

引用CURRVAL, NEXTVAL, LEVEL, 和ROWNUM 

调用SYSDATE, UID, USER, 和USERENV 函数 

另一个表的查询记录 

SQL>create table check01( 

  2  salnumber(3,2) 

  3 , 

  4 constraint sal_ck check(sal>0.2) 

  5  );  

原创粉丝点击