JAVA开发常用数据库技术——约束

约束(主要是用于保证数据安全和数据完整性。)

 

 创建表,添加约束
create table tb_user (
       id int primary key,  
       name varchar(50) not null,
       age int check (age > 0 and age < 65),
       sex char(4) check (sex = '男' or sex = '女'),
       phone varchar(20) unique,
       address varchar(50) default '广州天河'
);

-- 约束
-- 约束其实就是一个规则
-- 为了使数据库数据能够符合商业逻辑或者企业规则,需要采用约束,触发器
-- 甚至可以直接使用代码逻辑来进行甄别判断,得到一个正常的值。
-- 在实际开发中,我们一般选择直接在 SQL 语句中使用约束,最直观最快最便捷。

-- 约束的种类
-- 1)检查约束:check    特殊的检查约束:not null 不为空
-- 2)唯一约束:unique
-- 3)主键约束:primary key
-- 4)外键约束:foreign key   一般用于多张表之间的关联
-- 5)默认值:default

-- 约束它也是数据库的对象,可以有自己的名字,可以单独放在系统表中。

-- 创建的两种方式:
-- 1)在创建表的时候,直接指定。(建议:基本的约束)
-- 2)建表后再去创建,通过修改动作。(建议:外键约束)

-- 主键:primary key
-- 作用:用来唯一区别确定的一行数据。不能重复的。
-- 1)从功能上来看,相当于你同时用了非空和唯一两个约束。
-- 2)一个表中,只允许一个主键。
-- 3)主键可以是单字段的,也可以是多字段的。
-- 4)当我们创建了主键之后,Oracle 默认会为主键创建对应的索引。
-- 以后面试时,人家问你怎么调优 SQL 的查询,回答多用索引。
-- 索引,只有两个字段,找到索引值,即可找到对应的数据,搜索速度非常快。
-- 5)现在数据库建模,建议一张表一定要有主键,并且主键应该和业务数据无关
-- 然后我们需要使用序列的方式来实现自动增长。

表级约束

-- 创建好表的结构之后,再去添加约束。
-- 第一种写法
create table tb_stu4 (
       id int,
       name varchar(20),
       sex char(4),
       age int,
       address varchar(100) default '广州天河',
       phone varchar(30),
       clazz_id int,

       -- 当创建好表的结构之后,跟着就可以添加约束了
       primary key(id),
       check(name is not null),
       check(sex = '男' or sex = '女'),
       check(age > 0 and age < 65),
       unique(phone),
       
       -- 外键
       foreign key (clazz_id) references tb_clazz(id)   
);

-- 如果还碰到资源正忙,可以点击提交按钮,然后再继续执行即可。
-- 要不,就是直接断掉连接,重新连接即可

-- 第二种写法
create table tb_stu5 (
       id int,
       name varchar(20),
       sex char(4),
       age int,
       address varchar(100) default '广州天河',
       phone varchar(30),
       clazz_id int,

       -- 约束     约束名     约束类型(列名)
       constraint stu_pk primary key(id),
       constraint stu_name check(name is not null),
       constraint stu_sex check(sex = '男' or sex = '女'),
       constraint stu_age check(age > 0 and age < 65),
       constraint stu_phone unique(phone),
       
       -- 外键
       constraint stu_fk foreign key (clazz_id) references tb_clazz(id)   
);

-- 第三种:推荐写法,基本约束采用列级形式,外键采用表级形式
create table tb_stu6 (
       id int primary key,
       name varchar(20) not null,
       sex char(4) check(sex = '男' or sex = '女'),
       age int check(age > 0 and age < 65),
       address varchar(100) default '广州天河',
       phone varchar(30) unique,
       clazz_id int,

       -- 外键
       foreign key (clazz_id) references tb_clazz(id)   
);

你可能感兴趣的:(个人学习笔记)