-
1.创建表:
reate table table_name
(column_name datetype,...)
2.修改表:
2.1 添加字段
alter table zhaozy.student add notes varchar2(20);
2.2 更改字段数据类型(修改列无数据才可以修改)
--该列有数据无法修改数据类型
alter table zhaozy.student modify address number(20);
--该列有数据可以修改长度
alter table zhaozy.student modify address varchar2(100);
2.3 删除字段
alter table zhaozy.student drop column address;
2.4 修改字段名
alter table zhaozy.student rename column notes to modify_notes;
2.5 修改表名
rename student to new_student;
查看全部 -
select column_name as new_name,... from table_name;
查看全部 -
select * from table_name;
查看全部 -
由于学到这里各种约束的表级创建格式相似,直接来一个综合运用!!!!
SQL> create table userinfo_c(id varchar2(10) primary key,username varchar2(20),salary number(5,0) check(salary>0));
表已创建。
先创建一个userinfo_c表等会儿作为外键主表,设定id为主键约束,salary为检查约束
SQL> create table userinfo_c1(id varchar2(10),username varchar2(20),salary number(5,0),constraint fk_username_c foreign key(username) references userinfo_c(username),constraint ck_salary check(salary>0),constraint pk_id_c primary key(id));
尝试创建一个userinfo_c1表,并一次性设定主键约束、外键约束(从表userinfo_c1的username字段引自主表userinfo_c表中的username)、检查约束
报错信息:
第 1 行出现错误:
ORA-02270: 此列列表的唯一关键字或主键不匹配
发生报错
SQL> alter table userinfo_c add constraint un_username_new unique(username);
表已更改。
经过检查发现被引用的主表userinfo_c的字段username并没有唯一键或主键,需要将userinfo_c的username增加唯一键
SQL> create table userinfo_c1(id varchar2(10) primary key,username varchar2(20),salary number(5,0),constraint fk_username_c foreign key(username) references userinfo_c(id),constraint ck_salary check(salary>0));
表已创建。
重新创建一个userinfo_c1表,并一次性设定主键约束、外键约束(从表userinfo_c1的username字段引自主表userinfo_c表中的username,约束名为fk_username_c)、检查约束
创建成功
--------------------------------------------------------------------------------------------------------
假定并不知道userinfo_c的唯一键 un_username_new被userinfo_c的外键fk_username_c所引用
SQL> alter table userinfo_c drop constraint UN_USERNAME_NEW;
第 1 行出现错误:
ORA-02273: 此唯一/主键已被某些外键引用
对userinfo_c的唯一键 un_username_new进行删除操作
报错提示已经被某些外键所引用,需要反查这个唯一键被哪些外键引用了
SQL> select constraint_name from user_constraints where r_constraint_name='UN_USERNAME_NEW';
CONSTRAINT_NAME
------------------------------
FK_USERNAME_CC
FK_USERNAME_C
在user_constraints表中的r_constraint_name就是外键的引用来源的键名称
查看全部
举报