主键的介绍使用
#
第一种用法
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
;