【数据库】约束讲解1、2

本文介绍了如何在SQL中创建数据库和表,包括主键、唯一约束、检查约束和默认约束的定义和使用实例。通过实例演示了如何设置表结构、添加约束,并展示了check约束的功能和应用场景,如范围规定、枚举值限制和特定匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

create database seven
on primary
(
name='seven_data',
filename = 'D:\sqltest\seven_data.mdf',
size = 3MB,
maxsize = 20MB,
filegrowth = 20%
)

log on 
(
name = 'seven_log',
filename = 'D:\sqltest\seven_log.ldf',
size = 1MB,
filegrowth = 10%
)

2:第一种约束:主键约束
关系:民族(民族代码,民族名称)   民族代码为主键
create table nation
(
nationCode  char(4) primary key,
nationName varchar(20)

对表添加主键
create table  student
(
code char(8) not null, //【想设置主键的属性】一定不能为空
name varchar(10)
)

alter table student add constraint pk_code primary key(code);

3:第二种:唯一约束
关系: 体育项目(体育项目id,体育项目名)
create table sports
(
sports_id  char(3) primary key,
sports_name varchar(15) unique   //unique:唯一约束
)

insert into sports(sports_id,sports_name) 
values('1','篮球'),('2','羽毛球')

alter table sports 
add constraint unique_name unique(sports_name);  


4:第三种:检查约束
注册表(注册号,注册日期,分数)
create  table register
(
re_num int primary key,
re_date date,
score float check(score>=0 and score<=100)
)

insert into register values('1','2016-3-31',101)//错误的

insert into register values('1','2016-3-31',98)

select * from register;

练习
1:用户登录表(id,name) 
 name要求必须是zhangsan,lisi,wangwu

2:学生(id,性别,年龄)------达标要求
 性别要求必须是男和女

3:会员(会员id,会员名,会员等级)
  会员等级是A,B,C,D,E

4:学生(学号,姓名,班级名)
  班级名必须以‘计网’开头


==================================
备注
那check约束可以实现那些功能呢?

  1范围规定:CHECK (jine>0)  

  2枚举值规定(等级)
    ALTER TABLE tablename  ADD CHECK (nandu in (1,2,3,4)) //定位为整形时  

  3特定的匹配
    CHECK (fieldName like'9%')  

check中可以使用的运算符,主要有>,<,and ,or,not,like,in等。

=====================
扩展学习:
check约束的操作https://blog.youkuaiyun.com/xuexiaodong009/article/details/49421603
表的相关操作
https://docs.microsoft.com/zh-cn/sql/relational-databases/tables/tables


 

5:第四种约束:默认约束
关系:教师(教师id,名字,性别)
create table teacher
(
teacher_id char(4) primary key,
teacher_name varchar(8),
sex char(4) not null default 'man'
)
//插入数据,sex属性使用默认值
insert into teacher(teacher_id,teacher_name)
 values('02','he')

insert into teacher values('03','zhang','wmen')
//查询数据
select * from teacher


6:第五种约束:外键约束
班级表(班级id,班级名称)
学生表(学生id,班级名称)
create  table classes  //主表,必须先创建
(
class_id char(4) primary key,
class_name varchar(4) not null unique
)

create table student1  //从表
(
stu_id char(8) primary key,
classname char(4) references classes(class_name)
)
//插入数据,必须先插入主表的数据
insert into classes 
values('01','1504'),('02','1505')
insert into student values('01','1504'),('02','1504')

SELECT * FROM classes

SELECT * FROM student
注意:主表参照列必须是主键或唯一约束

7:第六种约束:not null 
  参照上面创建表

8:关键词identity的使用,id自动增长
   identity(a,b):a是初始值,b是步长
happy(id,name)
create table happy

id int  identity(1,1) primary key,
name varchar(10) not null

insert  into happy values('good')
insert  into happy values('good')
insert  into happy values('good')
insert  into happy values('good')
select * from happy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值