表的约束

null不能使用任何运算符与其他字段或者变量进行运算

NOT NULL - 指示某列不能存储 NULL 值。
UNIQUE - 保证某列的每行必须有唯一的值。
DEFAULT - 规定没有给列赋值时的默认值。
PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标
识,有助于更容易更快速地找到表中的一个特定的记录。
FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
CHECK - 保证列中的值符合指定的条件。对于MySQL数据库,对CHECK子句进行分析,但是忽略
CHECK子句

DROP TABLE IF EXISTS student;
CREATE TABLE student (
   id INT NOT NULL PRIMARY KEY,
   --指定id列不为空;
   --主键是 NOT NULL 和 UNIQUE 的结合,可以不用 NOT NULL
   --id INT  PRIMARY KEY,
   --对于整数类型的主键,常配搭自增长auto_increment来使用。
   --插入数据对应字段不给值时,使用最大值+1。
   --id INT PRIMARY KEY auto_increment,
   
   sn INT UNIQUE,
   --指定sn列列为唯一的、不重复的
   
   name VARCHAR(20) DEFAULT 'unkown',
   --指定插入数据时,name列为空,默认值unkown:
   
   qq_mail varchar(20) DEFAULT '110@qq.com'
   
);

insert into student(id,sn,name)values(3,103,'bit3');
在此时只要不指定 qq_mail列,不给qq_mail任何 值。就会赋予默认值

FOREIGN KEY 外键约束
用于关联其他表的主键或者唯一键,语法:

foreign key (字段名) references 主表() 
drop table if exists classes;
 create table classes( 
 id int PRIMARY KEY AUTO_INCREMENT, 
 name varchar(20), 
 `desc` varchar(30) 
 );
 
 drop table if exists student;
 create table student( 
 id int PRIMARY KEY AUTO_INCREMENT, 
 sn int unique, 
 name varchar(20) NOT NULL,
qq_mail varchar(20) DEFAULT '110@qq.com' ,
classes_id int ,
FOREIGN KEY (classes_id) REFERENCES classes(id) 
); 

classes_id就是外键,关联的是classes(主表)这张表的id字段 这样做:安全!!!student表为子表。
建表: 先创建主表!!在创建子表。
插入数据:先插入主表!!在插入子表
删除:一般先删除子表。但是,删除 主表也是可以的,前提是主表当中的这个id(主键)没有被关联。 如果被关联了,那么就会失败!就只能删除子表,或者删除子表中的关联的元组后,才可以删除;

CHECK约束(了解)

drop table if exists test_user; 
create table test_user ( 
id int, 
name varchar(20), 
sex varchar(1), 
check (sex ='男' or sex='女') 
);

将来在插入数据的时候,只能插入sex为男或者女。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值