Class7:初学数据库之MySQL常见约束

1、主键PRIMARY KEY

特点:

一张表里面主键是唯一的;

主键可以用来唯一的标识一行数据,主键不能为空。

 

联合主键:表中字段不能作为唯一标识每一行数据时,选取表中两个或者多个字段作为联合主键

特点:如果去掉联合主键某个字段,剩下的字段任然可以构成联合主键,那么说明之前的联合主键是错误的

 

在修改表时添加主键

alter table 表名 add primary key(字段名);

 

删除主键:

alter table表名 drop primary key;

 

创建表的时候设置主键:

方式一:

create table 表名(

    -> id int(11) primary key,

    -> name varchar(12)

    -> );

 

方式二:

create table 表名(

    -> id int(11),

    -> name varchar(12),

    -> primary key(id))

 

创建联合主键:

 create table表名(

    -> name char(16),

    -> gender char(10),

    -> birthday date,

    -> city varchar(16),

    -> primary key(name,city)

    -> );

 

2、主键自增 AUTO_INCREMENT

 

特点:

              和主键结合使用,

              自增字段的数据类型是整数类型

              自增的数据开始值是1,没增加一行数据,自增1

 

添加自增

create table 表名(

id INT(11) PRIMARY key AUTO_INCREMENT,

name VARCHAR(25),

location VARCHAR(50)

);

 

设置自增默认值

CREATE TABLE表名(

id INT(11) PRIMARY key auto_increment,

name VARCHAR(25),

location VARCHAR(50)

)auto_increment=100;

 

删除自增

ALTER TABLE 表名 MODIFY id int(11);

 

在修改表时设置自增

ALTER TABLE表名 CHANGE COLUMN id id INT(11) auto_increment;

 

修改表时指定初始值

ALTER TABLE 表名 auto_increment=100;

 

 

3、外键

 

CONSTRAINT 别名 FOREIGN KEY (本表要外键的字段名) REFERENCES 要外键到的表名(字段名)

 

表间关系:

                     一对一

                     一对多

                     多对多

 

MySQL5.6中文支持问题

DEFAULT CHARSET=GB2312;

             

查看创建表是sql

show create table 表名;

 

外键特点:

                     外键关联时主表要先去从表创建

                     外键字段的值必然在主表中是可以一一对应的

                     外键可以为空,但是不为空的外键必然可以在主表中跟它对于

                     外键关联的必然是主表的主键

 

 

 

创建外键约束

CREATE TABLE 表名 (

id int(10) PRIMARY KEY auto_increment,

sid INT(10),

name varchar(50),

subject varchar(50),

score varchar(50) ,

CONSTRAINT 别名

FOREIGN KEY (本表要外键的字段名) REFERENCES studentinfo 要外键到的表名(字段名)

)

 

修改表时添加外键约束

alter table 表名 add CONSTRAINT 别名 FOREIGN KEY (本表要外键的字段名) REFERENCES要外键到的表名(字段名)

 

 

删除外键约束

ALTER TABLE 表名 drop FOREIGN KEY 外键名

 

 

4、唯一约束UNIQUE

特点:

              主键在一个表里面只能有一个

              但是唯一性约束可以有多个

              设置了唯一性约束的字段表中有且只能有一个空值

             

创建表的时候设置唯一性约束

CREATE TABLE表名(

id INT(11) PRIMARY KEY,

name VARCHAR(25) UNIQUE,

location VARCHAR(50)

);

 

修改表的时候添加唯一性约束

ALTER TABLE 表名 ADD  UNIQUE(name);

 

起别名:

ALTER TABLE 表名 ADD CONSTRAINT 别名 UNIQUE(字段);

 

 

删除唯一性约束

ALTER TABLE表名 DROP INDEX字段名;

 

5、默认值DEFAULT 'Beijing'

 

特点:

在插入数据时,如果不写入就使用默认值,如果写入就使用新值

             

新建表时创建默认值

CREATE TABLE 表名(

id INT(11) PRIMARY KEY,

name VARCHAR(25),

location VARCHAR(50) DEFAULT 'shanghai'

);

 

修改表时创建默认值

ALTER TABLE 表名 change location location VARCHAR(25) DEFAULT 'beijing';

 

删除默认值

alter table lx change location location varchar(50) default null;

 

 

 

6、非空约束(NOT NULL

 

特点:

              一张表中可以设置多个字段非空,主键默认非空

 

 

新建表时设置非空约束

 

CREATE TABLE表名(

id INT(11) NOT NULL,

name VARCHAR(35),

location VARCHAR(50)

);

 

修改表时设置非空约束

ALTER TABLE表名CHANGE name name VARCHAR(34) not NULL;

 

删除非空约束:

ALTER TABLE 表名CHANGE COLUMN name name VARCHAR(34) NULL;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值