主键的介绍使用
# 第一种用法
create table primary_test(
id int primary key, # 在定义id字段后指定为主键
name varchar(20),
age tinyint
);
# 第二种用法
create table primary_test1(
id int,
name varchar(20),
age tinyint,
primary key(id) # 单独一行设置id为主键
);
复合主键
复合主键是由多个字段所组成的主键,复合主键中多字段的值不能都重复,如果是任意中的一个重复则
没关系。
复合主键特点
除了主键字段由多个字段组成以外,其他主键的特点它都有。但是需要注意,两个字段才是一个主键,
即两个字段组成的组件数据不能相同,而不是其中任意一个。
字段名称 数据类型 PRIMARY KEY
# 第一种用法
create table primary_test(
id int primary key, # 在定义id字段后指定为主键
name varchar(20),
age tinyint
);
# 第二种用法
create table primary_test1(
id int,
name varchar(20),
age tinyint,
primary key(id) # 单独一行设置id为主键
);
复合主键的添加
语法格式:
给表中的字段添加复合主键:
删除主键
删除主键也是对表的结构的操作,所以需要使用 alter 以及 drop 进行操作。如下:
示例:
删除 primary_test 表中的主键。
无论什么情况创建的主键,都可以使用 primary 的方式进行删除。可以通过 show index from 表名称
的方式查看表中的 key 名称。
建立主键的原则
一般一张表都会有一个主键,也只有一个主键,但是主键的创建并不是随意创建的,需要符合一下几个
点:
1. 主键应当是对用户没有意义的;
2. 不要更新主键。因为主键除了唯一地标识一行之外,再没有其他的用途了;
3. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等;
4. 主键应当由计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了唯一标识一行
以外的意义。
6.2 唯一键介绍使用
唯一键(unique key)又叫唯一约束,其保证在一个字段或者一组字段里的数据与表中其它行的数据相
比是唯一的。
PRIMARY KEY(字段名称1, 字段名称2, ...)
create table primary_test2(
id int,
name varchar(20),
age tinyint,
primary key(id,name) # 设置id和name字段为复合主键
);
唯一键(unique key)又叫唯一约束,其保证在一个字段或者一组字段里的数据与表中其它行的数据相
比是唯一的。
PRIMARY KEY(字段名称1, 字段名称2, ...)
create table primary_test2(
id int,
name varchar(20),
age tinyint,
primary key(id,name) # 设置id和name字段为复合主键
);
ALTER TABLE 表名称 DROP PRIMARY KEY;
alter table primary_test drop primary key;
唯一键的特点:
1. 在一张表中可以存在多个唯一键;
2. 唯一键所在列的数据不能重复;
3. 唯一键允许该列数据为 null,并且可以存在多个(不参与比较);
唯一键的使用
1、单一唯一键
语法格式:
创建唯一键有两种形式,
2、复合唯一键
其含义与主键类似,可以通过多个字段来创建一个唯一键:
注意:复合唯一键中两个字段才是一个唯一键,即两个字段组成的数据不能都相同,如果只是其中一个
相同就没事。
3、删除唯一键
语法:
示例:
字段名称 数据类型 UNIQUE KEY
-- 第一种用法
create table unique_test(
id int unique key, # 设置id字段为唯一键
name varchar(20),
);
-- 第二种用法
create table unique_test1(
id int,
name varchar(20),
unique key(uni) # 设置id为主键
);
自增长( auto_increment )
当对应的字段不给值或者给 null 时,系统会自动触发从当前字段中已有的最大值执行+1 操作,得到一
个新的值。
自增长的特点:
1. 任何一个字段要实现自动增长必须前提是一个索引(键);
2. 自动增长的字段必须是一个数字(整型);
3. 一张表中只能有一个自动增长。
自增长操作
1、添加自增长
示例 - 为字段 id 添加主键及自增长:
自增长相关
自增长相关信息可以通过 show variable like ‘%auto_increment%’ 命令查看:
show index from unique_test; # 查看唯一键的名称
alter table unique_test drop index id; # 删除复合唯一键
字段名称 数据类型 AUTO_INCREMENT
create table auto_increment_test(
id int primary key auto_increment, # 设置id字段为主键并自增长
name varchar(20)
);
默认值(default):某种数据会经常性的出现,可以一开始就指定好,在需要真实数据的时候,用户可
以选择性的使用默认值。
建议在创建表的时候,不要设置为 null。如果设置为 not null,但是不一定会给该字段添加数据,则可
以使用默认值。
在 default_test 表中插入数据:
列描述(Comment):简单的理解为 SQL 的注释。
因为有些时候一个字段的名称无法直观的描述字段的含义,在这个时候需要通过列描述的方式为字段加
上注释(这是一个非常好的建数据表的习惯)。
在创建了该字段之后,并不能直接查看到该信息,需要通过以下命令查看:
create table defualt_test(
name varchar(10) not null,
sex varchar(20) default 'man'
);
# 第一种写法:指定非默认值的字段并传入参数,默认值不管。
INSERT INTO defualt_test (name) VALUES ('新雨');
# 第二种写法:不指定字段,直接传入值,带默认值的字段传入DEFAULT。
INSERT INTO defualt_test VALUES ('新雨', DEFAULT);
create table comment_test(
name varchar(20) comment 'users name'
);
group by
group by 可以根据一个或多个字段对查询结果进行分组显示。
测试案例:
注:分组过程中如果想查看其他字段,需要让其他字段都必须要使用聚合函数,否则分组会直接报错。
# =============运算符方式查询=============
# 查询age字段等于20的数据
select * from student_info where age=21;
# 查询age字段不等于20的数据
select * from student_info where age!=20;
# 查询age字段大于20的数据
select * from student_info where age>20;
# 查询age字段小于20的数据
select * from student_info where age<20;
# ===============范围查询===============
# 查询年龄在1-20之间的数据(1和20都包含)
select * from student_info where age between 1 and 20;
# 查询年龄在选项参数之中的数据
select * from student_info where age in(18,20,22,24);
# 使用模糊查询查找name字段中包含'张'的数据
select * from student_info where name like '%张%';
# ===============逻辑查询===============
# 逻辑与:两个条件都要符合才能被查询到
select * from student_info where name='张三' and age=19;
# 逻辑或:两个条件符合的任意一个都会被查询到
select * from student_info where name='李四' or age=22;
本文围绕数据库展开,介绍了主键的两种创建用法、复合主键特点及添加删除方法,阐述了建立主键的原则。还讲解了唯一键的特点、使用方式及删除操作,以及自增长、默认值、列描述的特性和操作,最后提及了group by分组和多种查询方式。
174万+

被折叠的 条评论
为什么被折叠?



