Oracle系列:(17)创建表和约束

前端之家收集整理的这篇文章主要介绍了Oracle系列:(17)创建表和约束前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


@H_403_2@


@H_403_2@

回顾MysqL创建表语句users(id整型/name字符串/birthday日期型,默认值)@H_403_2@

droptableifexistsusers;
createtableusers(
idint(5)auto_incrementprimarykey,namevarchar(4)notnull,birthdaydatedefault'2015-4-27'
);


@H_403_2@


@H_403_2@


@H_403_2@

使用oraclesql,创建用户表users(id整型/name字符串/birthday日期/sal整型,默认今天)@H_403_2@

createtableusers(
idnumber(5)primarykey,namevarchar2(8)notnullunique,salnumber(6,2)notnull,birthdaydatedefaultsysdate
);

wKiom1fQJ6axDnQnAAA0H-0qXv0882.png

@H_403_2@


@H_403_2@

进入回收站@H_403_2@

droptableusers;


@H_403_2@

查询回收站中的对象@H_403_2@

showrecyclebin;

wKiom1fQKBmwsCTeAAAmyDhoOkM755.png

@H_403_2@


@H_403_2@

闪回,即将回收站还原@H_403_2@

flashbacktable表名tobeforedrop;
flashbacktable表名tobeforedroprenameto新表名;

wKiom1fQKNPgESSCAABEc3i1k0M470.png

@H_403_2@

wKioL1fQKWiw-rPaAAA4PwXFr2o975.png

@H_403_2@


@H_403_2@

彻底删除users表@H_403_2@

droptableuserspurge;


@H_403_2@

清空回收站@H_403_2@

purgerecyclebin;

@H_403_2@

测试如下类型@H_403_2@

(1)number(5):@H_403_2@

insert into users(id,name,sal) values(1,'A',6666.66); @H_403_2@

insert into users(id,sal) values(11,'AA',sal) values(111,'AAA',sal) values(1111,'AAAA',sal) values(99999,'AAAAA',sal) values(100000,'AAAAAA',6666.66); 错@H_403_2@

5表示最多存99999 @H_403_2@


@H_403_2@

(2)number(6,2):@H_403_2@

col sal for 9999.99 @H_403_2@

insert into users(id,6.66); @H_403_2@

insert into users(id,66.666); @H_403_2@

insert into users(id,666.6666); @H_403_2@

insert into users(id,6666.66666); @H_403_2@

insert into users(id,sal) values(11111,66666.666666);错@H_403_2@

number(6,2)@H_403_2@

其中2表示最多显示2位小数,采用四舍五入,不足位数补0,同时要设置col ... for ...@H_403_2@

其中6表示小数+整数不多于6位@H_403_2@

其中整数位数不得多于4位,可以等于4位@H_403_2@

wKiom1fQPlujZpkyAAA3mQ5ZetE119.png

@H_403_2@


@H_403_2@


@H_403_2@

(3)varchar2(8):@H_403_2@

insert into users(id,7777.77); @H_403_2@

insert into users(id,sal) values(2,sal) values(3,sal) values(4,7777.77); @H_403_2@

insert into users(id,sal) values(5,sal) values(6,sal) values(7,'AAAAAAA',sal) values(8,'AAAAAAAA',sal) values(9,'AAAAAAAAA',7777.77);错@H_403_2@

wKiom1fQPs-C7iFnAAAnI5Z1-iA308.png

@H_403_2@

insert into users(id,'哈','哈哈','哈哈哈','哈哈哈哈','哈哈哈哈哈',7777.77);错 @H_403_2@

wKioL1fQP2fhd3OmAABRiwoDuME841.png

@H_403_2@


@H_403_2@

varchar2(8)@H_403_2@

8表示字节@H_403_2@

GBK 一个汉字2字节@H_403_2@

UTF-8 一个汉字 3字节@H_403_2@


@H_403_2@

(4)date:默认格式为:'27-4月-15'@H_403_2@

(5)CLOB【Character Large OBject】:大文本对象,即超过65565字节的数据对象,最多存储4G@H_403_2@

(6)BLOB【Binary Large OBject】:大二进制对象,即图片,音频,视频,最多存储4G@H_403_2@


@H_403_2@

为users表增加image列,@H_404_163@alter table 表名 add 列名 类型(宽度)@H_403_2@

altertableusers
addimageblob;

wKioL1fQQD-RJxZYAAAZ7Mth2eg830.png

@H_403_2@


@H_403_2@

修改name列的长度为20个字节,@H_404_163@alter table 表名 modify 列名 类型(宽度)@H_403_2@

altertableusers
modifynamevarchar2(20);

wKioL1fQQKmiM_U2AAAdpZYRz78943.png

@H_403_2@


@H_403_2@

删除image列,@H_404_163@alter table 表名 drop column 列名@H_403_2@

altertableusers
dropcolumnimage;

wKiom1fQQR7ASZPlAAAuOTJgV2M745.png

@H_403_2@


@H_403_2@

重名列名name为username,@H_404_163@alter table 表名 rename column 原列名 to 新列名@H_403_2@

altertableusers
renamecolumnnametousername;

wKioL1fQQbji81jtAAAsD5QkwUs777.png

@H_403_2@


@H_403_2@

将users表重命名myusers,@H_404_163@rename 原表名 to 新表名@H_403_2@

renameuserstomyusers;

wKioL1fQQjvi_MYFAAATN7xgzBU255.png

@H_403_2@


@H_403_2@

@H_404_163@注意:修改表时,不会影响表中原有的数据@H_403_2@


@H_403_2@

笔试题:有【1000亿】条会员记录,如何用最高效的方式将薪水字段清零,其它字段内容不变?@H_403_2@


@H_403_2@

第一:从emp表中删除sal字段@H_403_2@

altertableemp
dropcolumnsal;


@H_403_2@


@H_403_2@

第二:向emp表中添加sal字段,且内容默认0@H_403_2@

altertableemp
addsalnumber(6)default0;


@H_403_2@

修改表不可回滚 @H_403_2@


@H_403_2@

创建表customers(单)和orders(多),使用@H_404_163@primary key/not null/unique/default/foreign key约束@H_403_2@

要体现【@H_404_163@on delete cascade/on delete set null】@H_403_2@

需求:删除客户,级联删除他所有的订单@H_403_2@

deletefromcustomerswhereid=1;

需求:删除客户,不级联删除他所有的订单,只是将外健设置为NULL@H_403_2@

deletefromcustomerswhereid=1;


@H_403_2@

createtablecustomers(
idnumber(3)primarykey,namevarchar2(4)notnullunique
);
insertintocustomers(id,name)values(1,'A');
insertintocustomers(id,name)values(2,'B');
createtableorders(
idnumber(3)primarykey,isbnvarchar2(6)notnullunique,pricenumber(3)notnull,cidnumber(3),--constraintcid_FKforeignkey(cid)referencescustomers(id)ondeletecascade
constraintcid_FKforeignkey(cid)referencescustomers(id)ondeletesetnull
);
insertintoorders(id,isbn,price,cid)values(1,'isbn10',10,1);
insertintoorders(id,cid)values(2,'isbn20',20,cid)values(3,'isbn30',30,2);
insertintoorders(id,cid)values(4,'isbn40',40,2);


@H_403_2@

创建表students,包括id,gender,salary字段,使用check约束【性别只能是男或女,薪水介于6000到8000之间】@H_403_2@

createtablestudents(
idnumber(3)primarykey,namevarchar2(4)notnullunique,gendervarchar2(2)notnullcheck(genderin('男','女')),salarynumber(6)notnullcheck(salarybetween6000and8000)
);

insert into students(id,salary) values(1,'中',6000);错@H_403_2@

insert into students(id,salary) values(2,'呵呵','男',5000);错@H_403_2@

insert into students(id,salary) values(3,'嘻嘻','女',7000);对@H_403_2@

猜你在找的Oracle相关文章