复制了scott用户下的emp表
create table emp as select * from scott.emp;
在itzhenguser下查询emp表
select * from emp;
这种方式创建的表是有一个弊端的。
注意:只会复制表结构和表当中的数据,不会复制列的约束。
上面这种方式查询语句是没有任何结果的。
select * from scott.emp where 1=2;
如果查询语句有结果,就是复制 表结果和数据
如果查询语句没有结果,就是复制表结果
所以通过查询出来空语句来通过子查询创建的表是没有任何结果
复制空表的结果还是空
create table emp1 as select * from scott.emp where 1=2;
select * from emp1;
1、添加列
(1)创建一张表
create table stu(
stuid number,
sname varchar(10)
);
(2)在Command Window窗口当中,查看表结构
DDL:数据定义语言,修改结构alter create drop truncate
DML:数据操纵语言,操纵表中的数据 insert update delete
DCL:数据控制语言,grant
DQL :select
(3)添加一列(修改表的结构)
在SQL Windows窗口当中
在Command Window窗口当中:修改成功
(4)添加多列
alter table stu add (mobile varchar2(11),
sex varchar2(2)
);
2、修改列的类型
alter table stu modify sex varchar2(4);
修改成功
3、删除列
alter table stu drop column gender;
删除成功
4、修改列名(将sex该为gerder)
alter table stu rename column sex to gender;
修改成功
5、重命名表名
rename stu to student;
6、删除表
drop table student;
列的约束:约束主要用来约束表当中数据的规则
(一)单表约束:primary key 不能为空,必须唯一
(二)多表约束
1、主键约束
(1)先创建表
create table student (
stuid number primary key,
sname varchar2(10) unique,
age varchar2(10) not null,
gender varchar2(4) check(gender in (‘男’,‘女’))
);
select * from student;
创建成功
(2)插入数据
insert into student values(1,‘张三’,‘31’,‘男’);
insert into student values(2,‘李四’,‘31’,‘男’);
select * from student;
(3)实际测试,违反注主键约束
–主键的约束违反
insert into student values(1,‘张三’,‘31’,‘男’);
insert into student values(1,‘李四’,‘31’,‘男’);
2、非空约束
违反非空约束
insert into student values(1,‘赵六’,null,‘男’);
3、唯一约束
违反唯一约束
– 唯一约束违反
insert into student values(1,‘王五’,‘31’,‘男’);
insert into student values(2,‘赵六’,‘31’,‘男’);
4、检查约束
(1)在mysql当中是可以写的,但是mysql是直接忽略了检查约束
(2)在oracle当中违反检测约束
– 检查约束
insert into student values(1,‘李七’,‘31’,‘妖’);
5、外键约束
主要是用来约束从表A当中的记录,必须是存在于主表B当中的
(1)商品分类表
create table category(
cid number primary key,
cname varchar2(20)
);
(2)创建一个商品表
create table product(
pid number primary key,
pname varchar2(20),
cno number
);
(3)插入一些数据
在category表当中插入数据
insert into category values(1,‘手机数码’);
在没有外键约束的情况下,向product表当中插入没有意义的数据依旧可以插入
insert into product values(10,‘锤子’,11);
在category 表当中没有11这个对应的cid
(4)添加外键对其进行约束
alter table product add foreign key(cno) references category(cid);
因为在上面插入的数据就有错误
先删除对应的数据
使用TRUNCATE TABLE用于删除表中的所有行
然后在添加外键约束
alter table product add foreign key(cno) references category(cid);
再次插入
(5)再次插入这条没有意义的数据
insert into product values(2,‘锤子’,11);–插入失败
在category 表当中没有11这个cid ,所以报错
(6)插入正确的数据
insert into product values(10,‘锤子’,1);
(7)如果非得在product
插入上面的10,'锤子',11号
,先在主表中插入数据,在往子表当中插入数据
先向category当中插入
insert into category values(11,‘电脑办公’);
再向product表当中插入数据
insert into product values(2,‘锤子’,11);–插入成功
insert into product values(11,‘外星人’,11)
(8)删除Category
drop table category;
表中记录被外键关联,无法删除
(9)强制删除表(不建议使用):先删除外键关联表的外键约束,然后再删除自己,先删除product的外键约束,再删除category
drop table category cascade constraint;
查询表结构
select * from category;
证明已经没有该表
6、级联删除:首先从表当中找有没有关联数据,如果在从表当中找到关联数据,先删除从表当中关联数据,然后再删除主表当中的
(1)先删除product。
drop table product;
这是上面创建的两个表都没有了
(2)重新创建两个新的表。
create table category(
cid number primary key,
cname varchar2(20)
);
create table product(
pid number primary key,
pname varchar2(20),
cno number
);
(2)添加外键约束,使用级联约束。
alter table product add foreign key(cno) references category(cid) on delete cascade;
–在删除的时候使用级联删除
(3)重新插入一些测试数据。
insert into category values(2,‘办公电脑’);
insert into product values(11,‘外星人’,2);
(4)添加on delete cascade,在删除的时候使用级联删除
使用级联删除
delete from category where cid = 2;
两张表都没有了数据
1、语法
insert into 表名 values(所有列的值都要对应写上)
insert into 表名(列1,列2) values (值1,值2);
2、使用子查询插入数据
insert into 表名 查询语句
3、实际插入数据
(1)将emp当中的10号部门的员工信息,插入到emp1当中
insert into emp1 select * from emp where deptno = 10;
插入成功
1、语法
总结
阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了
1、JAVA面试核心知识整理(PDF):包含JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。
2、Redis学习笔记及学习思维脑图
3、数据面试必备20题+数据库性能优化的21个最佳实践
img.cn/20200906134218991.png#pic_center)
(1)将emp当中的10号部门的员工信息,插入到emp1当中
insert into emp1 select * from emp where deptno = 10;
插入成功
1、语法
总结
阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了
[外链图片转存中…(img-rkNQKan0-1714435617261)]
1、JAVA面试核心知识整理(PDF):包含JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。
[外链图片转存中…(img-Fe4AnIYm-1714435617262)]
2、Redis学习笔记及学习思维脑图
[外链图片转存中…(img-IT17Xyw8-1714435617263)]
3、数据面试必备20题+数据库性能优化的21个最佳实践
[外链图片转存中…(img-eSAoOIm4-1714435617263)]