MySql学习——2

Mysql中唯一性索引一般有三种:主键,唯一自增约束,唯一约束。

主键:只能有一个,并且不会自增,可以是任意类型,插入数据时字段必须有值,并且值不可重复。

唯一自增约束:可以有多个,一般为int类型,插入数据时不需要插入字段值,数据库会自动添加加入值,并且自增,不可重复。

唯一约束:可以有多个,但是字段值不可以重复,不会自增,可以为 null , 插入数据时需要手动插入值

主键关键字: PRIMARY KEY
唯一约束:UNIQUE KEY
自增主键: PRIMARY KEY 与 AUTO_INCREMENT 结合
注意:自增字段必须是主键

一:主键 PRIMARY KEY

主键的设置有多种方式:
1、创建表格时直接指定主键
方法一:

// 直接跟在字段类型后面
CREATE TABLE tb_test (字段名 字段类型 PRIMARY KEY);

方法二:

//定义完所有字段后再单独指定主键
CREATE TABLE tb_test (字段名 字段类型, PRIMARY KEY(字段名));

2、多字段联合主键
CREATE TABLE tb_test(字段名1 字段类型,字段名2 字段类型,PRIMARY KEY(字段名1, 字段名2));

// 例子:
mysql> CREATE TABLE tb_test(
    ->     id INT,
    ->     address VARCHAR(20),
    ->     PRIMARY KEY(id, address));

注意上面:联合主键的时候,多个字段组合在一起才叫做一个主键,例如:id=1,address=2 与 id=1,address=1 不是同一个主键

3、新增主键

mysql> ALTER TABLE 表名
    -> ADD PRIMARY KEY(字段名);

新增主键的完整格式为:
ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,…)

// 事例:user2 为表名,id为字段名
ALTER TABLE user2 ADD CONSTRAINT PK_user2_id PRIMARY KEY (id);

4、删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;
因为主键是唯一的,所以不需要指定字段名

mysql> ALTER TABLE tb_test
    -> DROP PRIMARY KEY;

添加/删除默认约束

ALTER TABLE tb_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

// 添加默认约束
ALTER TABLE user2 ALTER age SET DEFAULT 15; 

// 删除默认约束
ALTER TABLE user2 ALTER age DROP DEFAULT; 

唯一约束 UNIQUE

唯一约束能多个,主键约束只能有一个。

创建时直接指定自增主键

// 方式一:MEDIUMINT是一种数据库的数据类型
CREATE TABLE  表名 (
 主键名 MEDIUMINT NOT NULL,
 name CHAR(30) NOT NULL,
 UNIQUE (id)
) ;
// 这种方式只能定义一个唯一主键,多个时要使用第二种方式

// 方式二:
create table test(主键名 主键类型 UNIQUE);

这里注意: UNIQUE (id,name),这种写法,这样就变成了联合唯一约束,类型会变成MUL类型,每个字段同一值可以重复出现,类似联合主键,两个字段结合在一起构成唯一约束,只是不允许重复出现两个完全相同的组合值的情况

MUL, 那么该列的值可以重复, 该列是一个非[唯一索引]的前导列(第一列)或者是一个唯一性索引的组成部分但是可以含有空值NULL

添加唯一约束字段:
ALTER TABLE tb_name ADD [CONSTRAINT[SYMBOL]] UNIQUE [INDEX|KEY] [INDEX_NAME] [INDEX_TYPE] (index_col_name,…)

ALTER TABLE user2 ADD UNIQUE (username); 

自增主键

创建时直接指定自增主键

// 方式一:MEDIUMINT是一种数据库的数据类型
CREATE TABLE  表名 (
 主键名 MEDIUMINT NOT NULL AUTO_INCREMENT,
 name CHAR(30) NOT NULL,
 PRIMARY KEY (id)
) 

// 方式二:
create table test(主键名 主键类型 primary key auto_increment);

添加自增主键字段:

alter table 表名 add 主键名 主键类型 primary key auto_increment;
//  这里主键类型必须是int、MEDIUMINT 等可以以自增方式表示的类型,例如char,date等就不可以

参考文章:
https://www.cnblogs.com/ah1234/p/4221975.html
https://blog.csdn.net/qq_32953185/article/details/79896327

你可能感兴趣的:(MySql学习——2)