Oracle系列:(17)创建表和约束
admin
2023-05-01 16:04:15
0次



回顾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
);

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


进入回收站

drop table users;


查询回收站中的对象

show recyclebin;

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


闪回,即将回收站还原

flashback table 表名 to before drop;
flashback table 表名 to before drop rename to  新表名;

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

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


彻底删除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位

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



(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);错

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

  

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);错  

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


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;

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


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

alter table users
modify name varchar2(20);

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


删除p_w_picpath列,alter table 表名 drop column 列名

alter table users
drop column p_w_picpath;

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


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

alter table users
rename column name to username;

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


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

rename users to myusers;

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


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


笔试题:有【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);对








相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...