回顾MysqL创建表语句users(id整型/name字符串/birthday日期型,默认值) droptableifexistsusers; createtableusers( idint(5)auto_incrementprimarykey,namevarchar(4)notnull,birthdaydatedefault'2015-4-27' ); |
使用oraclesql,创建用户表users(id整型/name字符串/birthday日期/sal整型,默认今天)
createtableusers( idnumber(5)primarykey,namevarchar2(8)notnullunique,salnumber(6,2)notnull,birthdaydatedefaultsysdate );
进入回收站
droptableusers;
查询回收站中的对象
showrecyclebin;
闪回,即将回收站还原
flashbacktable表名tobeforedrop; flashbacktable表名tobeforedroprenameto新表名;
彻底删除users表
droptableuserspurge;
清空回收站
purgerecyclebin;
测试如下类型
(1)number(5):
insert into users(id,name,sal) values(1,'A',6666.66);
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); 错
5表示最多存99999
(2)number(6,2):
col sal for 9999.99
insert into users(id,6.66);
insert into users(id,66.666);
insert into users(id,666.6666);
insert into users(id,6666.66666);
insert into users(id,sal) values(11111,66666.666666);错
number(6,2)
其中2表示最多显示2位小数,采用四舍五入,不足位数补0,同时要设置col ... for ...
其中6表示小数+整数不多于6位
其中整数位数不得多于4位,可以等于4位
(3)varchar2(8):
insert into users(id,7777.77);
insert into users(id,sal) values(2,sal) values(3,sal) values(4,7777.77);
insert into users(id,sal) values(5,sal) values(6,sal) values(7,'AAAAAAA',sal) values(8,'AAAAAAAA',sal) values(9,'AAAAAAAAA',7777.77);错
insert into users(id,'哈','哈哈','哈哈哈','哈哈哈哈','哈哈哈哈哈',7777.77);错
varchar2(8)
8表示字节
GBK 一个汉字2字节
UTF-8 一个汉字 3字节
(4)date:默认格式为:'27-4月-15'
(5)CLOB【Character Large OBject】:大文本对象,即超过65565字节的数据对象,最多存储4G
(6)BLOB【Binary Large OBject】:大二进制对象,即图片,音频,视频,最多存储4G
为users表增加image列,alter table 表名 add 列名 类型(宽度)
altertableusers addimageblob;
修改name列的长度为20个字节,alter table 表名 modify 列名 类型(宽度)
altertableusers modifynamevarchar2(20);
删除image列,alter table 表名 drop column 列名
altertableusers dropcolumnimage;
重名列名name为username,alter table 表名 rename column 原列名 to 新列名
altertableusers renamecolumnnametousername;
将users表重命名myusers,rename 原表名 to 新表名
renameuserstomyusers;
注意:修改表时,不会影响表中原有的数据
笔试题:有【1000亿】条会员记录,如何用最高效的方式将薪水字段清零,其它字段内容不变?
第一:从emp表中删除sal字段
altertableemp dropcolumnsal;
altertableemp addsalnumber(6)default0;
修改表不可回滚
创建表customers(单)和orders(多),使用primary key/not null/unique/default/foreign key约束
要体现【on delete cascade/on delete set null】
deletefromcustomerswhereid=1;
需求:删除客户,不级联删除他所有的订单,只是将外健设置为NULL
deletefromcustomerswhereid=1;
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);
创建表students,包括id,gender,salary字段,使用check约束【性别只能是男或女,薪水介于6000到8000之间】
createtablestudents( idnumber(3)primarykey,namevarchar2(4)notnullunique,gendervarchar2(2)notnullcheck(genderin('男','女')),salarynumber(6)notnullcheck(salarybetween6000and8000) );
insert into students(id,salary) values(1,'中',6000);错
insert into students(id,salary) values(2,'呵呵','男',5000);错
insert into students(id,salary) values(3,'嘻嘻','女',7000);对
原文链接:https://www.f2er.com/oracle/212692.html