您好,登錄后才能下訂單哦!
回顧MySQL創建表語句users(id整型/name字符串/birthday日期型,默認值) drop table if exists users; create table users( id int(5) auto_increment primary key, name varchar(4) not null, birthday date default '2015-4-27' ); |
使用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(1,'A',6666.66);
insert into users(id,name,sal) values(11,'AA',6666.66);
insert into users(id,name,sal) values(111,'AAA',6666.66);
insert into users(id,name,sal) values(1111,'AAAA',6666.66);
insert into users(id,name,sal) values(99999,'AAAAA',6666.66);
insert into users(id,name,sal) values(100000,'AAAAAA',6666.66); 錯
5表示最多存99999
(2)number(6,2):
col sal for 9999.99
insert into users(id,name,sal) values(1,'A',6.66);
insert into users(id,name,sal) values(11,'AA',66.666);
insert into users(id,name,sal) values(111,'AAA',666.6666);
insert into users(id,name,sal) values(1111,'AAAA',6666.66666);
insert into users(id,name,sal) values(11111,'AAAAA',66666.666666);錯
number(6,2)
其中2表示最多顯示2位小數,采用四舍五入,不足位數補0,同時要設置col ... for ...
其中6表示小數+整數不多于6位
其中整數位數不得多于4位,可以等于4位
(3)varchar2(8):
insert into users(id,name,sal) values(1,'A',7777.77);
insert into users(id,name,sal) values(2,'AA',7777.77);
insert into users(id,name,sal) values(3,'AAA',7777.77);
insert into users(id,name,sal) values(4,'AAAA',7777.77);
insert into users(id,name,sal) values(5,'AAAAA',7777.77);
insert into users(id,name,sal) values(6,'AAAAAA',7777.77);
insert into users(id,name,sal) values(7,'AAAAAAA',7777.77);
insert into users(id,name,sal) values(8,'AAAAAAAA',7777.77);
insert into users(id,name,sal) values(9,'AAAAAAAAA',7777.77);錯
insert into users(id,name,sal) values(1,'哈',7777.77);
insert into users(id,name,sal) values(2,'哈哈',7777.77);
insert into users(id,name,sal) values(3,'哈哈哈',7777.77);
insert into users(id,name,sal) values(4,'哈哈哈哈',7777.77);
insert into users(id,name,sal) values(5,'哈哈哈哈哈',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表增加p_w_picpath列,alter table 表名 add 列名 類型(寬度)
alter table users add p_w_picpath blob;
修改name列的長度為20個字節,alter table 表名 modify 列名 類型(寬度)
alter table users modify name varchar2(20);
刪除p_w_picpath列,alter table 表名 drop column 列名
alter table users drop column p_w_picpath;
重名列名name為username,alter table 表名 rename column 原列名 to 新列名
alter table users rename column name to username;
將users表重命名myusers,rename 原表名 to 新表名
rename users to myusers;
注意:修改表時,不會影響表中原有的數據
筆試題:有【1000億】條會員記錄,如何用最高效的方式將薪水字段清零,其它字段內容不變?
第一:從emp表中刪除sal字段
alter table emp drop column sal;
第二:向emp表中添加sal字段,且內容默認0
alter table emp add sal number(6) default 0;
修改表不可回滾
創建表customers(單)和orders(多),使用primary key/not null/unique/default/foreign key約束
要體現【on delete cascade/on delete set null】
需求:刪除客戶,級聯刪除他所有的訂單
delete from customers where id = 1;
需求:刪除客戶,不級聯刪除他所有的訂單,只是將外健設置為NULL
delete from customers where id = 1;
create table customers( id number(3) primary key, name varchar2(4) not null unique ); insert into customers(id,name) values(1,'A'); insert into customers(id,name) values(2,'B');
create table orders( id number(3) primary key, isbn varchar2(6) not null unique, price number(3) not null, cid number(3), --constraint cid_FK foreign key(cid) references customers(id) on delete cascade constraint cid_FK foreign key(cid) references customers(id) on delete set null ); insert into orders(id,isbn,price,cid) values(1,'isbn10',10,1); insert into orders(id,isbn,price,cid) values(2,'isbn20',20,1); insert into orders(id,isbn,price,cid) values(3,'isbn30',30,2); insert into orders(id,isbn,price,cid) values(4,'isbn40',40,2);
創建表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);對
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。