Oracle(十)-------------------创建与管理表

常见的数据库对象
1、	表:基本数据存储集合,由行和列组成
2、	视图:从表中抽出的逻辑上相关的数据集合
3、	序列:提供有规律的数值
4、	索引:提高查询的效率
5、	同义词:给对象起别名
用户定义的表:
a)	用户自己创建并维护的一组表
b)	包含了用户所需的信息
数据字典:
c)	由 Oracle Server 自动创建的一组表
d)	包含数据库信息
命名规则:
表名和列名:
必须以字母开头
必须在 1–30 个字符之间
必须只能包含 A–Z, a–z, 0–9, _, $, 和 #
必须不能和用户定义的其他对象重名
必须不能是Oracle 的保留字
Oracle默认存储是都存为大写
数据库名只能是1~8位,datalink可以是128位,和其他一些特殊字符
Create table 语句:
必须具备:
CREATE TABLE权限
存储空间
必须指定:
表名
列名, 数据类型, 数据类型的大小
   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  (id NUMBER(8),hire_date  DATE  DEFAULT  SYSDATE);
数据类型:
1、	varchar2(size):可变长字符数据		最大长度为4000 bytes 可做索引的最大长度为749
2、	char(size):固定长字符数据		最大长度为2000 bytes
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:行地址    是一个伪列

ALTER TABLE 语句
使用 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;
表已更改。

删除表:
数据和结构都被删除
所有正在运行的相关事物被提交
所有相关索引被删除
DROP TABLE 语句不能回滚
SQL> drop table qqq;

改变对象的名称:
执行RENAME语句改变表, 视图, 序列, 或同义词的名称
必须是对象的拥有者
SQL> rename demo2 to qqq;

清空表:
TRUNCATE TABLE 语句:
删除表中所有的数据
释放表的存储空间
TRUNCATE语句不能回滚
可以使用 DELETE 语句删除数据
SQL> truncate table qqq;

约束
约束是表一级的限制
如果存在依赖关系,约束可以防止错误的删除数据
约束的类型:
NOT NULL
UNIQUE 
PRIMARY KEY
FOREIGN KEY
CHECK
约束规则:
用户可以自定义约束,也可以使用Oracle Server的sys_cn格式命名约束
约束创建的时机:
创建表的时候,同时创建约束
表结构创建完成后
约束可以定义在列一级,或者是表一级
通过数据字典查看约束

非空性约束与唯一性约束:
create table checkTable(email varchar2(30) not null,constraint chk_email unique(email));
insert into 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) on delete cascade
  7* )
SQL> /
不能删除有外键约束的记录


外键约束(续)
FOREIGN KEY: 在子表中,定义了一个表级的约束
REFERENCES: 指定表和父表中的列
ON DELETE CASCADE: 当删除父表时,级联删除子表记录
ON DELETE 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  sal number(3,2)
  3  ,
  4  constraint sal_ck check(sal>0.2)
  5  );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值