一 创建表
1.创建表(不加约束)
(1)创建新表(不加约束)
创建表
create table tb_user(
userid number(5),
username varchar2(30),
userpwd varchar2(20),
gender char(3)
)
加入注释
comment on table tb_user is '用户表';
comment on column tb_user.userid is '流水号,主键';
comment on column tb_user.username is '用户名';
comment on column tb_user.userpwd is '密码';
comment on column tb_user.gender is '性别';
(2)已有表中拷贝结构
--create table 表名 as select 字段列表 from 已有表 where 1!=1;
create table copy_emp as select * from emp where 1!=1; -- 只拷贝结构不拷贝数据
create table copy_emp2 as select empno,ename,sal from emp; --结构和数据全部拷贝
select * from copy_emp;
select * from copy_emp2;
(3)删除表
drop table copy_emp2; 删除表
--drop table 表名 cascade constraints 删除约束
2.创建表(同时创建约束+默认名称)
--表+约束 (1.字段后直接给约束|字段后指定约束名字添加约束 2.在创建表结构的最后指定约束) 3.表结构之后追加约束
create table tb_student(
--学号 主键 唯一+非空
--sid number(5) primary key,
--sid number(5) constraints pk_student_sid primary key,
sid number(5),
--学生名字不能为空
--sname varchar2(30) not null,
sname varchar2(30)constraints sname_notnull not null,
--年龄不能超过18~150
sage number(3) check(sage between 18 and 150),
--不是男就是女
sgender char(3) check(sgender='男' or sgender = '女'),
--唯一的
sqq varchar2(30) unique
)
3.创建表(同时创建约束+指定名称)
--表结构最后定义约束
create table tb_student(
--学号 主键 唯一+非空
sid number(5),
--学生名字不能为空
sname varchar2(30),
--年龄不能超过18~150
sage number(3),
--不是男就是女
sgender char(3),
--唯一的
sqq varchar2(30),
classid number(3),
--定义约束 指定名字,指定约束 ,指定字段
constraints pk_student_sid primary key(sid),
constraints sname_notnull check(sname is not null),
constraints ck_sage check(sage between 18 and 150),
constraint fk_student_classid_classid foreign key(classid) references clazz(classid) on delete set null --on delete cascade
)
4.创建表(追加创建约束+指定名称)
--表结构后面追加约束
alter table tb_student add constraints student_sqq unique(sqq);
--删除约束
alter table tb_student drop constraints student_sqq;
--班级表
create table clazz(
classid number(3) primary key,
classname varchar2(18) not null,
subject varchar2(15) not null
)
insert into clazz values(01,'27期','java');
insert into clazz values(02,'28期','java');
select * from clazz;
drop table clazz cascade constraints; --主表
delete from clazz where classid=02 ;
drop table tb_student;
select * from tb_student;
insert into tb_student(sid,sname,sage,sgender,sqq,classid) values(1,'杨建秋',23,'男',700707070,02);
insert into tb_student(sid,sname,sage,sgender,sqq,classid) values(2,'杨',23,'男',7007070702,03);
insert into tb_student(sid,sname,sage,sgender,sqq) values(2,'hah',23,'男',700707070);
insert into tb_student(sid,sname,sage,sgender,sqq) values(3,'hah',23,'男',700707070);
delete from tb_student where sid=1;
--存在主外键关系:
--删除数据:1.先删除从表中引用主表中当前这条数据的那些数据,然后再删除主表中的数据 ---默认