开始键+R打开运行输入cmd进入黑窗口
1.基本操作
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
2.整型
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
3.浮点型
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
4.字符串
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
5.枚举
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
6.null
关系运算符 | 说明 | 关系运算符 | 说明 |
---|---|---|---|
= | 等
于 | <= | 小于等于 |
<
> | 不等于 | > | 大
于 |
!= | 不等于 | >= | 大于等于 |
< |
例:查询student表中grade大于80的学生姓名。
1
|
<code class=
"hljs sql"
>
select
name
, grade
from
student
where
grade > 80;</code>
|
带 in 关键字的查询
in 关键字用于判断某个字段的值是否在指定集合中,若字段的值在集合中,则满足条件,该字段所在的记录将被查询出来。其语法格式如下
1
2
3
4
5
|
<code class=
"hljs sql"
>
select
* | 字段名1, 字段名2, ...
from
表名
where
字段名 [
not
]
in
(元素1, 元素2, ...)</code>
|
说明:在上面的语法格式中,“元素1, 元素2, …”表示集合众的元素,即指定的条件范围。not 是可选参数,使用not表示查询不在in关键字指定集合范围中的记录。
例:查询student表中id值为1、2、3的记录。
1
|
<code class=
"hljs sql"
>
select
id, grade,
name
, gender
from
student
where
id
in
(1,2,3) ;</code>
|
带between and 关键字的查询
between and用于判断某个字段的值是否在指定的范围之内,其语法格式如下
1
2
3
4
5
|
<code class=
"hljs sql"
>
select
*|{字段名1, 字段名2, ...}
from
表名
where
字段名 [
not
]
between
值1
and
值2 ; </code>
|
说明:在上面的语法格式中,“值1”表示范围条件的起始值,“值2”表示范围条件的结束值。not是可选参数,使用not表示查询指定范围之外的记录,通常情况下,“值1”小于“值2”,否则查询不到任何结果。
例:查询student表中id值在2~5之间的学生姓名。
1
|
<code class=
"hljs sql"
>
select
id,
name
from
student
where
id
between
2
and
5 ;</code>
|
空值查询
在数据表中,某些列的值可能为空值(null),空值不同于0,也不同于空字符串。在MySQL语句中,使用 is null 关键字来判断字段的值是否为空值,其语法格式如下
1
2
3
4
5
|
<code class=
"hljs sql"
>
select
*| 字段名1, 字段名2, ...
from
表名
where
字段名
is
[
not
]
null
;</code>
|
例:查询student表中gender为空值的记录。
1
|
<code class=
"hljs sql"
>
select
id,
name
, grade, gender
from
student
where
gender
is
null
;</code>
|
带distinct关键字的查询
很多表中某些字段的数据存在重复的值。有时,需要过滤掉查询记录中重复的值,可以使用distinct关键字来实现这种功能,其语法格式如下
1
|
<code class=
"hljs sql"
>
select
distinct
字段名
from
表名 ;</code>
|
说明:“字段名”表示要过滤重复记录的字段
例:查询student表中gender字段的值,查询记录不能重复。
1
|
<code class=
"hljs sql"
>
select
distinct
gender
from
student ;</code>
|
distinct关键字还可以作用于多个字段,其语法格式如下
1
2
3
|
<code class=
"hljs sql"
>
select
distinct
字段名1, 字段名2, ...
from
表名 ;</code>
|
说明:只有distinct关键字指定的多个字段值都相同,才会被认作是重复记录
例:查询student表中的gender和name字段,使用distinct关键字作用于这两个字段。
1
|
<code class=
"hljs sql"
>
select
distinct
gender,
name
,
from
student ;</code>
|
带like关键字的查询
like关键字可以判断连个字符串是否相匹配,其语法格式如下
1
2
3
4
5
|
<code class=
"hljs sql"
>
select
*|{字段名1, 字段名2, ...}
from
表名
where
字段名 [
not
]
like
'匹配字符串'
;</code>
|
说明:“匹配字符串”指定用来匹配的字符串,其值可以是一个普通字符串,也可以是包含百分号(%)和下划线(_)的通配字符串。百分号和下划线统称为通配符。
百分号(%)通配符
百分号通配符能匹配任意长度的字符串,包括空字符串。例如,字符串“c%”匹配以字符c开始,任意长度的字符串,如“ct”、“cut”、“current”等等。
例1:查找student表中name字段值以字段“s”开头的学生 id。
1
|
<code class=
"hljs sql"
>
select
id,
name
,
from
student
where
name
like
"s%"
;</code>
|
说明1:百分号通配符可以出现在通配字符串的任意位置
例2:查询student表中name字段值以字符“w”开始,以字符“g”结束的学生id。
1
|
<code class=
"hljs sql"
>
select
id,
name
,
from
student
where
name
like
'w%g'
;</code>
|
说明2:在通配字符串中可以出现多个百分号通配符
例:查询student表中name字段值包含字符“y”的学生id。
1
|
<code class=
"hljs sql"
>
select
id,
name
from
student
where
name
like
'%y%'
;</code>
|
下划线(_)通配符
下划线通配符与百分号通配符有些不同,下划线通配符只匹配单个字符。若要匹配多个字符,需要使用多个下划线通配符。
注意:若使用多个下划线匹配多个连续的字符,下划线之间不能有空格
例1:查询student表中name字段值以字符串“wu”开始,以字符串“ong”结束,并且两个字符串之间只有一个字符的记录。
1
|
<code class=
"hljs sql"
>
select
*
from
student
where
name
like
"wu_ong"
;</code>
|
例2:查询student表中name字段值包含7个字符,并且以字符串“ing”结束的记录。
1
|
<code class=
"hljs sql"
>
select
*
from
student
where
name
like
'____ing'
;</code>
|
百分号和下划线通配符进行的查询操作
注意:若要匹配字符串中的百分号和下划线,则使用右斜线(“\”)对百分号和下划线进行转义
例:查询student表中name字段值包括“%”的记录。
假设student表中以存在如下记录
1
2
3
|
<code class=
"hljs sql"
>
insert
into
student(
name
, grade, gender)
values
(
'sun%er'
, 95,
'男'
) ;</code>
|
带and关键字的多条件查询
在使用select语句中,有时为了使查询结果更加精确,可以使用多个查询条件,其语法格式如下
1
2
3
4
5
|
<code class=
"hljs sql"
>
select
*|{字段名1, 字段名2, ...}
from
表名
where
条件表达式1
and
条件表达式2 [...
and
条件表达式n] ;</code>
|
例:查询student表中id字段值小于5,并且gender字段值为“女”的学生姓名。
1
|
<code class=
"hljs sql"
>
select
id,
name
, gender
from
student
where
id < 5
and
gender =
'女'
;</code>
|
带or关键字的多条件查询
在使用or关键字时,只要记录满足任意一个条件就会被查询出来,其语法格式如下
1
2
3
4
5
|
<code class=
"hljs sql"
>
select
*|{字段名1, 字段名2, ...}
from
表名
where
条件表达式1
or
条件表达式2 [...
or
条件表达式n] ;</code>
|
例:查询student表中id字段值小于3或者gender字段值为“女”的学生姓名。
1
|
<code class=
"hljs sql"
>
select
id,
name
,gender
from
student
where
id < 3
or
gender =
'女'
;</code>
|
or和and关键字一起使用的情况
注意:and的优先级高于or
例:查询student表中gender字段值为“女”或者gender字段值为“男”,并且grade字段值为100的学生姓名。
1
2
3
4
5
|
<code class=
"hljs sql"
>
select
name
, grade, gender
from
student
where
gender =
'女'
or
gender =
'男'
and
grade = 100 ;</code>
|
高级查询
聚合函数
实际开发中,经常需要对某些数据进行统计,例如统计某个字段的最大值、最小值、平均值等。
函数名称 | 作用 | 函数名称 | 作用 |
---|---|---|---|
count() | 返回某列的行数 | max() | 返回某列的最大值 |
sum() | 返回某列值的和 | min() | 返回某列的最小值 |
avg() | 返回某列的平均值 |
以上表中的函数对一组值进行统计,并返回唯一值,这些函数被称为聚合函数。
count()函数
count()函数用来统计记录的条数,其语法格式如下
1
|
<code class=
"hljs sql"
>
select
count
(*)
from
表名 ;</code>
|
例:查询student表中一共有多少条记录
1
|
<code class=
"hljs sql"
>
select
count
(*)
from
student ;</code>
|
sum()函数
sum()函数是求和函数,用于求出表中某个字段所有值的总和,其语法格式如下
1
|
<code class=
"hljs sql"
>
select
sum
(字段名)
from
表名 ;</code>
|
例:求出student表中grade字段的总和。
1
|
<code class=
"hljs sql"
>
select
sum
(grade)
from
student ;</code>
|
avg()函数
avg()函数用于求出某个字段所有值的平均值,其语法格式如下
1
|
<code class=
"hljs sql"
>
select
avg
(字段名)
from
表名 ;</code>
|
例:求出student表中grade字段的平均值
1
|
<code class=
"hljs sql"
>
select
avg
(grade)
from
student ;</code>
|
max()函数
max()函数是求最大值的函数,用于求出某个字段的最大值,其语法格式如下
1
|
<code class=
"hljs sql"
>
select
max
(字段名)
from
表名 ;</code>
|
例:求出student表中grade字段的最大值
1
|
<code class=
"hljs sql"
>
select
max
(grade)
from
student ;</code>
|
min()函数
min()函数是求最小值的函数,用于求出某个字段的最小值,其语法格式如下
1
|
<code class=
"hljs sql"
>
select
min
(字段名)
from
表名 ;</code>
|
例:求出student表中grade字段的最小值
1
|
<code class=
"hljs sql"
>
select
min
(grade)
from
student ;</code>
|
对查询结果排序
使用 order by 对查询结果进行排序,其语法格式如下
1
2
3
4
5
|
<code class=
"hljs sql"
>
select
字段名1, 字段名2, ...
from
表名
order
by
字段名1[
asc
|
desc
], 字段名2 [
asc
|
desc
] ...</code>
|
说明:参数 asc 表示按照升序进行排序,desc表示按照降序进行排序。默认情况下,按照 asc 方式进行排序。
例:查出 student 表中的所有记录,并使用参数 asc 按照grade字段升序方式进行排列。
1
2
3
|
<code class=
"hljs sql"
>
select
*
from
student
order
by
grade
asc
;</code>
|
注意:在按照指定字段进行排序时,若某条记录的字段值为null,则这条记录会在第一条显示,因为 null 值可以被认为是最小值
分组查询
使用 group by 按某个字段或者多个字段中的值进行分组,字段中值相同的为一组,其语法格式如下
1
2
3
4
5
|
<code class=
"hljs sql"
>
select
字段名1, 字段名2, ...
from
表名
group
by
字段名1, 字段名2, ... [
having
条件表达式]</code>
|
说明:having关键字指定条件表达式对分组后的内容进行过滤,需要注意的是,group by 一般和聚合函数一起使用。
由于分组查询比较复杂,下面分几种情况对分组查询进行详解。
单独使用 group by 分组
单独使用 group by 关键字,查询的是每个分组中的一条记录。
例:查询student表中的记录,按照gender字段值进行分组。
1
|
<code class=
"hljs sql"
>
select
*
from
student
group
by
gender ;</code>
|
group by 和聚合函数一起使用
group by 和聚合函数一起使用,可以统计出某个或者某些字段在一个分组中的最大值、最小值、平均值等。
例:将student表按照gender字段值进行分组查询,计算出每个分组中各有多少名学生。
1
|
<code class=
"hljs sql"
>
select
count
(*), gender
from
student
group
by
gender ;</code>
|
结果说明:group by 对student表按照gender字段中的不同值进行了分组,并通过count()函数统计出每个组个数。
group by 和 having关键字一起使用
例:将student表按照gender字段进行分组查询,查询出grade字段值之和小于300的分组。
1
|
<code class=
"hljs sql"
>
select
sum
(grade), gender
from
student
group
by
gender
having
sum
(grade) < 300 ;</code>
|
having 关键字和where关键字的异同点
相同点:都用于设置条件表达式对查询结果进行过滤
不同点:
having关键字:
having关键字后可以跟聚合函数,通常情况下,having关键字都和group by 一起使用,用于对分组后的结果进行过滤。
where关键字:
where关键字不能后跟聚合函数。
使用 limit 限制查询结果的数量
limit关键字可以指定查询结果从哪一条记录开始以及一共查询多少条信息,其语法格式如下
1
2
3
4
5
|
<code class=
"hljs sql"
>
select
字段名1, 字段名2, ...
from
表名
limit [offset,]记录数</code>
|
说明:limit 后面可以跟两个参数,第一个参数“offset”表示偏移量,若偏移量为0,则从查询结果的第一条记录开始;偏移量为1,则从查询结果中的第二条记录开始,以此类推。offset为可选值,若不指定,其默认值为0。第二个参数“记录数”表示返回查询记录的条数。
例1:查询student表中的前4条记录。
1
|
<code class=
"hljs sql"
>
select
*
from
student limit 4 ;</code>
|
例2:查询student表中grade字段值从第5位到第8位的学生(从高到底)。
1
|
<code class=
"hljs sql"
>
select
*
from
student
order
by
grade
desc
limit 4, 4 ;</code>
|
为表和字段取别名
为表取别名的语法格式如下
1
|
<code class=
"hljs sql"
>
select
*
from
表名 [
as
] 别名 ;</code>
|
例:为student表起一个别名 s,并查询student表中gender字段值为“女”的记录。
1
|
<code class=
"hljs sql"
>
select
*
from
student
as
s
where
s.gender =
'女'
;</code>
|
为字段取别名的语法格式如下
1
|
<code class=
"hljs sql"
>
select
字段名 [
as
] 别名 [, 字段名 [
as
] 别名, ...]
from
表名 ;</code>
|
例:查询student表中的所有记录的name和gender字段值,并为这两个字段起别名 stu_name 和 stu_gender。
1
|
<code class=
"hljs sql"
>
select
name
as
stu_name, gender stu_gender
from
student ;</code>
|