Oracle学习第二天--约束

--0. 创建学生表:学号、姓名、性别、年龄、生日、邮箱、电话
create table student
(
stuno int,
stuname varchar2(50),
sex char(1),
age int,
birthday date,
email varchar2(50),
telephone varchar2(20)
);

---------------------1. 主键约束------------------------
-- 方式一:不推荐的方式,第一种方式主键的名字是由系统自定义的,不好区别
create table student
(
stuno int primary key,
stuname varchar2(50),
sex char(1),
age int,
birthday date,
email varchar2(50),
telephone varchar2(20)
);
-- 方式二:推荐
create table student
(
stuno int,
stuname varchar2(50),
sex char(1),
age int,
birthday date,
email varchar2(50),
telephone varchar2(20),
constraint pk_stuno primary key(stuno)
);
-- 方式三:推荐,当表创建成功之后,写一条语句新增主键
alter table student add constraint pk_stuno primary key(stuno);

-----------------------------2. 唯一约束----------------------------
-- 方式一:不推荐
create table student
(
stuno int primary key,
stuname varchar2(50),
sex char(1),
age int,
birthday date,
email varchar2(50) unique,
telephone varchar2(20) unique
);
-- 方式二:推荐
create table student
(
stuno int,
stuname varchar2(50),
sex char(1),
age int,
birthday date,
email varchar2(50),
telephone varchar2(20),
constraint pk_stuno primary key(stuno),
constraint uq_email unique(email),
constraint uq_telephone unique(telephone)
);
-- 方式三 alert(js)
alter table student add ....


-----------------------------3. 非空约束--------------------------
-- 方式一:推荐
create table student
(
stuno int,
stuname varchar2(50),
sex char(1),
age int,
birthday date not null,
email varchar2(50),
telephone varchar2(20),
constraint pk_stuno primary key(stuno),
constraint uq_email unique(email),
constraint uq_telephone unique(telephone)
);
-- 方式二:看看
alter table student modify age not null;


----------------------------4. 默认约束--------------------------
--推荐方式:默认约束,当插入的值为null的时候,用默认值代替
create table student
(
stuno int,
stuname varchar2(50),
sex char(3) default '男',
age int,
birthday date not null,
email varchar2(50),
telephone varchar2(20),
constraint pk_stuno primary key(stuno),
constraint uq_email unique(email),
constraint uq_telephone unique(telephone)
);


-------------------------5. 检查约束----------------------
--check约束:检查值是否符合范围
--方式一:
create table stuinfo
(
stuno int,
stuname varchar2(50),
sex varchar2(10) check (sex in ('男','女')),
sex1 varchar2(10) check (sex1 = '男' or sex1 = '女'),
age int check(age >0 and age<=100),
age1 int check(age1 between 0 and 100)
)
--方式二:
create table stuinfo
(
stuno int,
stuname varchar2(50),
sex varchar2(10) check (sex in ('男','女')),
sex1 varchar2(10) check (sex1 = '男' or sex1 = '女'),
age int check(age >0 and age<=100),
age int check(age between 0 and 100),
constraint ck_sex check(sex in ('男','女'))
)
--方式三
alter table stuinfo add constraint....


------------------------------6. 外键约束---------------------------------
--外键一定是另外一张表的主键
alter table stuinfo add constraint fk_stuno foreign key(stuno) references student(stuno)

-- 插入语句
-- sysdate:获取当前系统时间
insert into student(stuno,stuname,age,email,telephone,birthday)
values(2,'lucy',12,'lucy@126.com','110',sysdate);
insert into student(stuno,stuname,age,email,telephone,birthday)
values(3,'jack',12,'jack@126.com','111',sysdate);
insert into student(stuno,stuname,age) values(1,'lucy',12);

-- 删除表
drop table student;
select * from student;

-- 修改数据
update student set stuname = 'jack',sex='男',age=21,email = 'jack@163.com' where stuno=2;

-- 删除数据
delete from student where stuno=2
-- 删除所有
delete from student
-- 删除所有
truncate table student

原文地址:https://www.cnblogs.com/javaWHL/p/10308882.html