--使用oracleSQL,创建用户表users(id整型/name字符串/birthday日期/sal整型,默认今天)
create table users(
id number(5) primary key,
name varchar2(8) not null unique,
sal number(6,2) not null,
birthday date default sysdate
);
--进入回收站
drop table users;
--查询回收站中的对象
show recyclebin;
--闪回,即将回收站还原
flashback table 表名 to before drop;
flashback table 表名 to before drop rename to 新表名;
--彻底删除users表
drop table users purge;
--清空回收站
purge recyclebin;
测试如下类型
(1)number(5)
insert into users(id,name,sal) values(100000,'AAAAAA',6666.66); --错
5表示最多存99999
(2)number(6,2)
其中6表示小数+整数不多于6位
其中整数位数不得多于4位,可以等于4位
其中2表示最多显示2位小数,采用四舍五入,不足位数补0,同时要设置col sal for 9999.99
(3)varchar2(8)
insert into users(id,name,sal) values(9,'AAAAAAAAA',7777.77); --错
insert into users(id,name,sal) values(5,'哈哈哈哈哈',7777.77); --错
8表示字节,GBK,一个汉字"哈"2字节
(4)date:默认格式为:'27-4月-15'
(5)CLOB【Character Large OBject】:大文本对象,即超过65565字节的数据对象,最多存储4G
(6)BLOB【Binary Large OBject】:大二进制对象,即图片,音频,视频,最多存储4G
字段操作
--为emp表增加image列,alter table 表名 add 列名 类型(宽度)
alter table emp add image blob;
--修改ename列的长度为20个字节,alter table 表名 modify 列名 类型(宽度)
alter table emp modify ename varchar2(20);
--删除image列,alter table 表名 drop column 列名
alter table emp drop column image;
--重名列名ename为username,alter table 表名 rename column 原列名 to 新列名
alter table emp rename column ename to username;
--将emp表重命名emps,rename 原表名 to 新表名
rename emp to emps;
注意:修改表时,不会影响表中原有的数据,修改表不可回滚
笔试题:有【1000亿】条会员记录,如何用最高效的方式将薪水字段清零,其它字段内容不变?
--第一:从emp表中删除sal字段
alter table emp drop column sal;
--第二:向emp表中添加sal字段,且内容默认0
alter table emp add sal number(6) default 0;
check约束
--创建表students,包括id,name,gender,salary字段,使用check约束【性别只能是男或女,薪水介于6000到8000之间】
create table students(
id number(3) primary key,
name varchar2(4) not null unique,
gender varchar2(2) not null check ( gender in ('男','女') ),
salary number(6) not null check ( salary between 6000 and 8000 )
);
insert into students(id,name,gender,salary) values(1,'哈哈','中',6000); --错
insert into students(id,name,gender,salary) values(2,'呵呵','男',5000); --错
insert into students(id,name,gender,salary) values(3,'嘻嘻','女',7000); --对