文章目录
前提条件
首先创建SQL测试文件,其中创建了一个库两个表,用于测试。
文件名称:test.sql
/*------------员工信息库-------------*/
create database staff;
use staff;
create table yunwei(id int not null primary key,name char(4) not null,age tinyint(3) unsigned not null,sex enum('man','woman') not null);
create table caiwu(id int not null primary key,name char(4) not null,age tinyint(3) unsigned not null,sex enum('man','woman') not null);
insert into yunwei values(1,'张三',20,'man'),(2,'张四',21,'man'),(3,'张莉',22,'woman'),(4,'张五',23,'man'),(5,'张六',24,'man'),(6,'张丽',25,'woman');
insert into caiwu values(1,'李一',24,'man'),(2,'李莉',23,'woman'),(3,'李二',22,'man'),(4,'李三',21,'man'),(5,'李四',20,'man'),(6,'李丽',19,'woman');
将SQL文件导入到数据库中
mysql < test.sql
导入完成后,在staff库下有两张表,分别是yunwei和caiwu
mysql> select * from staff.yunwei;
+----+--------+-----+-------+
| id | name | age | sex |
+----+--------+-----+-------+
| 1 | 张三 | 20 | man |
| 2 | 张四 | 21 | man |
| 3 | 张莉 | 22 | woman |
| 4 | 张五 | 23 | man |
| 5 | 张六 | 24 | man |
| 6 | 张丽 | 25 | woman |
+----+--------+-----+-------+
mysql> select * from staff.caiwu;
+----+--------+-----+-------+
| id | name | age | sex |
+----+--------+-----+-------+
| 1 | 李一 | 24 | man |
| 2 | 李莉 | 23 | woman |
| 3 | 李二 | 22 | man |
| 4 | 李三 | 21 | man |
| 5 | 李四 | 20 | man |
| 6 | 李丽 | 19 | woman |
+----+--------+-----+-------+
简单查询
直接查询
语法:select 字段 from 表名;
最简单的一种查询方式,可查看多个字段或整张表。
例如:查询运维表姓名及年龄
mysql> select name,age from yunwei;
+--------+-----+
| name | age |
+--------+-----+
| 张三 | 20 |
| 张四 | 21 |
| 张莉 | 22 |
| 张五 | 23 |
| 张六 | 24 |
| 张丽 | 25 |
+--------+-----+
条件查询
关键字为where,通常位于表名后面
语法:select 字段 from 表名 where 条件;
根据条件,查询指定条件的字段。
例如:查询财务表中年龄为20的员工
mysql> select * from caiwu where age=20;
+----+--------+-----+-----+
| id | name | age | sex |
+----+--------+-----+-----+
| 5 | 李四 | 20 | man |
+----+--------+-----+-----+
模糊查询
关键字是like,通常位于条件字段后面
语法:select 字段 from 表名 where 字段 like ‘%数据%’;
通过输入具体的数据,来对记录进行查询
例如:模糊查询caiwu表中姓名字段还有三的记录
mysql> select * from caiwu where name like '%三%';
+----+--------+-----+-----+
| id | name | age | sex |
+----+--------+-----+-----+
| 4 | 李三 | 21 | man |
+----+--------+-----+-----+
算数运算符
运算符一般配合逻辑运算符一起使用,可以使条件限制更加具体。
符号 | 作用 |
---|---|
> | 大于 |
< | 小于 |
= | 等于 |
!= | 不等于 |
<> | 与!=同义,不等于 |
>= | 大于等于 |
<= | 小于等于 |
通过逻辑运算符可以将条件限制在一个范围内。
例如:查看caiwu表中id不等于1的记录
mysql> select * from caiwu where id!=1;
+----+--------+-----+-------+
| id | name | age | sex |
+----+--------+-----+-------+
| 2 | 李莉 | 23 | woman |
| 3 | 李二 | 22 | man |
| 4 | 李三 | 21 | man |
| 5 | 李四 | 20 | man |
| 6 | 李丽 | 19 | woman |
+----+--------+-----+-------+
逻辑运算符
可以将查询的单个条件改为多个条件或满足多个条件中的一个。
符号 | 作用 |
---|---|
and | 与,同时满足多个条件 |
or | 或,满足多个条件中的一个即可 |
not | 否,不满足条件 |
和算数运算符一起使用,可以将条件更加具体。
例如:查询yunwei表中性别为女,或年龄为23的记录
mysql> select * from yunwei where sex='woman' or age=23;
+----+--------+-----+-------+
| id | name | age | sex |
+----+--------+-----+-------+
| 3 | 张莉 | 22 | woman |
| 4 | 张五 | 23 | man |
| 6 | 张丽 | 25 | woman |
+----+--------+-----+-------+
in与not in运算符
关键字为in,通常位于条件字段后面
语法:select 字段 from 表名 where 字段 in (列表);
符号 | 作用 |
---|---|
in | 在一个条件列表中 |
not in | 不在一个条件列表中 |
例如:查询yunwei表中,年龄为22-25之间的记录
mysql> select * from yunwei where age in(22,23,24,25);
+----+--------+-----+-------+
| id | name | age | sex |
+----+--------+-----+-------+
| 3 | 张莉 | 22 | woman |
| 4 | 张五 | 23 | man |
| 5 | 张六 | 24 | man |
| 6 | 张丽 | 25 | woman |
+----+--------+-----+-------+
排序查询
关键字为order by与asc,desc,通常位于表名之后
排序分为两种,升序(asc)和降序(desc)
语法:select 字段 from 表名 order by 字段 排序方式;
例如:将caiwu表中记录按年龄从大到小查询
mysql> select * from caiwu order by age desc;
+----+--------+-----+-------+
| id | name | age | sex |
+----+--------+-----+-------+
| 1 | 李一 | 24 | man |
| 2 | 李莉 | 23 | woman |
| 3 | 李二 | 22 | man |
| 4 | 李三 | 21 | man |
| 5 | 李四 | 20 | man |
| 6 | 李丽 | 19 | woman |
+----+--------+-----+-------+
高级查询
范围运算
关键字为between…and…,通常位于条件字段后面。
语法:select 字段 from 表名 where 字段 between 范围1 and 范围2;
也是用来限制查询范围,作为算数运算符的一种替换。
例如:查询caiwu表中,年龄为21-23的记录,使用算数运算符表示为age>=21 and age<=23,使用范围运算啧表示为age between 21 and 23。
mysql> select *from caiwu where age >=