(1)单表查询

1)环境准备

mysql> CREATE TABLE company.employee5(
id int primary key AUTO_INCREMENT not null,
name varchar(30) not null,
sex enum('male','female') default 'male' not null,
hire_date date not null,
post varchar(50) not null,
job_description varchar(100),
salary double(15,2) not null,
office int,
dep_id int
);
insert into
company.employee5(name,sex,hire_date,post,job_description,salary,office,dep_id) values
('jack','male','20180202','instructor','teach',5000,501,100),
('tom','male','20180203','instructor','teach',5500,501,100),
('robin','male','20180202','instructor','teach',8000,501,100),
('alice','female','20180202','instructor','teach',7200,501,100),
('tianyun','male','20180202','hr','hrcc',600,502,101),
('harry','male','20180202','hr',NULL,6000,502,101),
('emma','female','20180206','sale','salecc',20000,503,102),
('christine','female','20180205','sale','salecc',2200,503,102),
('zhuzhu','male','20180205','sale',NULL,2200,503,102),
('gougou','male','20180205','sale','',2200,503,102);

2)简单查询

语法

select 字段1,字段2 from 表名;
select * from 表名;

查询表中指定字段的数据

mysql> select name,salary,post from employee5;
+-----------+----------+------------+
| name | salary | post |
+-----------+----------+------------+
| jack | 5000.00 | instructor |
| tom | 5500.00 | instructor |
| robin | 8000.00 | instructor |
| alice | 7200.00 | instructor |
| tianyun | 600.00 | hr |
| harry | 6000.00 | hr |
| emma | 20000.00 | sale |
| christine | 2200.00 | sale |
| zhuzhu | 2200.00 | sale |
| gougou | 2200.00 | sale |
+-----------+----------+------------+

查询表中的所有数据

mysql> select * from employee5;
+----+-----------+--------+------------+------------+-----------------+----------+--------+--------+
| id | name | sex | hire_date | post | job_description | salary | office | dep_id |
+----+-----------+--------+------------+------------+-----------------+----------+--------+--------+
| 1 | jack | male | 2018-02-02 | instructor | teach | 5000.00 | 501 | 100 |
| 2 | tom | male | 2018-02-03 | instructor | teach | 5500.00 | 501 | 100 |
| 3 | robin | male | 2018-02-02 | instructor | teach | 8000.00 | 501 | 100 |
| 4 | alice | female | 2018-02-02 | instructor | teach | 7200.00 | 501 | 100 |
| 5 | tianyun | male | 2018-02-02 | hr | hrcc | 600.00 | 502 | 101 |
| 6 | harry | male | 2018-02-02 | hr | NULL | 6000.00 | 502 | 101 |
| 7 | emma | female | 2018-02-06 | sale | salecc | 20000.00 | 503 | 102 |
| 8 | christine | female | 2018-02-05 | sale | salecc | 2200.00 | 503 | 102 |
| 9 | zhuzhu | male | 2018-02-05 | sale | NULL | 2200.00 | 503 | 102 |
| 10 | gougou | male | 2018-02-05 | sale | | 2200.00 | 503 | 102 |
+----+-----------+--------+------------+------------+-----------------+----------+--------+--------+

3)避免去重distinct,通常仅用于某一个字段

语法

select distinct 字段 from 表名;

查询雇员表中的部门,把部门字段去重

mysql> select distinct post from employee5;
+------------+
| post |
+------------+
| instructor |
| hr |
| sale |
+------------+
3 rows in set (0.00 sec) mysql> select post from employee5;
+------------+
| post |
+------------+
| instructor |
| instructor |
| instructor |
| instructor |
| hr |
| hr |
| sale |
| sale |
| sale |
| sale |
+------------+
10 rows in set (0.00 sec)

4)通过四则运算查询,

语法:

select 字段1,字段2,字段数字 from 表名;

select 字段1,字段2,字段2
数字 as 新字段名字 from 表名

select 字段1,字段2,字段2*数字 新字段名字 from 表名

根据月薪水查14年薪

mysql> select name,salary,salary*14 from employee5;   \\创建一个新的年薪14薪字段(salary*14)
mysql> select name,salary,salary*14 as annual_salary from employee5; \\给salary*14这个设置一个别名
mysql> select name,salary,salary*14 annual_salary from employee5; \\salary*14 设定别名(annual_salary)
mysql>  select name,salary,salary*14 from employee5;
+-----------+----------+-----------+
| name | salary | salary*14 |
+-----------+----------+-----------+
| jack | 5000.00 | 70000.00 |
| tom | 5500.00 | 77000.00 |
| robin | 8000.00 | 112000.00 |
| alice | 7200.00 | 100800.00 |
| tianyun | 600.00 | 8400.00 |
| harry | 6000.00 | 84000.00 |
| emma | 20000.00 | 280000.00 |
| christine | 2200.00 | 30800.00 |
| zhuzhu | 2200.00 | 30800.00 |
| gougou | 2200.00 | 30800.00 |
+-----------+----------+-----------+
10 rows in set (0.00 sec) mysql> select name,salary,salary*14 as annual_salary from employee5;
+-----------+----------+---------------+
| name | salary | annual_salary |
+-----------+----------+---------------+
| jack | 5000.00 | 70000.00 |
| tom | 5500.00 | 77000.00 |
| robin | 8000.00 | 112000.00 |
| alice | 7200.00 | 100800.00 |
| tianyun | 600.00 | 8400.00 |
| harry | 6000.00 | 84000.00 |
| emma | 20000.00 | 280000.00 |
| christine | 2200.00 | 30800.00 |
| zhuzhu | 2200.00 | 30800.00 |
| gougou | 2200.00 | 30800.00 |
+-----------+----------+---------------+
10 rows in set (0.00 sec) mysql> select name,salary,salary*14 annual_salary from employee5;
+-----------+----------+---------------+
| name | salary | annual_salary |
+-----------+----------+---------------+
| jack | 5000.00 | 70000.00 |
| tom | 5500.00 | 77000.00 |
| robin | 8000.00 | 112000.00 |
| alice | 7200.00 | 100800.00 |
| tianyun | 600.00 | 8400.00 |
| harry | 6000.00 | 84000.00 |
| emma | 20000.00 | 280000.00 |
| christine | 2200.00 | 30800.00 |
| zhuzhu | 2200.00 | 30800.00 |
| gougou | 2200.00 | 30800.00 |
+-----------+----------+---------------+
10 rows in set (0.00 sec)

5)定义显示格式:contcat()函数用于连接字符串

mysql>  select concat(name,'annual salary:',salary*14) as annual_salary from employee5;
+---------------------------------+
| annual_salary |
+---------------------------------+
| jackannual salary:70000.00 |
| tomannual salary:77000.00 |
| robinannual salary:112000.00 |
| aliceannual salary:100800.00 |
| tianyunannual salary:8400.00 |
| harryannual salary:84000.00 |
| emmaannual salary:280000.00 |
| christineannual salary:30800.00 |
| zhuzhuannual salary:30800.00 |
| gougouannual salary:30800.00 |
+---------------------------------+

(2)单条件查询

语法:

select 字段1,字段2 from 表名 where 条件;

1)单条件查询

mysql> select name,salary from employee5 where name='jack';
+------+---------+
| name | salary |
+------+---------+
| jack | 5000.00 |
+------+---------+

2)多条件查询:查询工资大于5000和小于20000的姓名

语法:

select select 字段1,字段2 from 表名 where 条件1 and 条件2;

select select 字段1,字段2 from 表名 where 条件1 or 条件2;

mysql> select name,salary from employee5 where salary > 5000 and salary <20000;
+-------+---------+
| name | salary |
+-------+---------+
| tom | 5500.00 |
| robin | 8000.00 |
| alice | 7200.00 |
| harry | 6000.00 |
+-------+---------+

3)关键字between and

查询工资大于等于5000和小于等于20000的姓名

mysql> select name,salary from employee5 where salary between 5000 and 20000;
mysql> select name,salary from employee5 where salary not between 5000 and 20000;

4)关键字 is null

查询字段是空的值

mysql> select name,job_description from employee5 where job_description is null;

5)关键字in 集合查询

查询工资是5000和6000的都是哪些人,和不是哪些人

mysql> select name,salary from employee5 where salary=5000 or salary=6000;
mysql> select name,salary from employee5 where salary in(5000,6000);
mysql> select name,salary from employee5 where salary not in(5000,6000);

6)模糊查询,关键字:like

通配符:%,匹配任意长度字符

mysql> select * from employee5 where name like 'al%';

通配符:_ 匹配任意单个字符

mysql> select * from employee5 where name like 'al_';

(3)查询排序

1)单列排序

按照薪水排序
mysql> select * from employee5 order by salary; //升序
按照薪水降序
mysql> select * from employee5 order by salary desc; //降序

2)按多列排序

先按入职时间排序,再按薪水排序

mysql> select * from employee5 order by hire_date ,salary asc;

(4)限制查询的记录数

mysql> select * from employee5 order by salary limit 5;    \\取前5条数据,默认初始位置是0
mysql> select * from employee5 order by salary limit 4,5; \\从第3条数据开始,取5条数据

(5)使用集合函数查询

count(*) 统计行数据

max(字段) 取字段最大值

min(字段) :取字段最小值

avg(字段) :平均

sum(字段) :取字段和

mysql> select count(*) from employee5;
mysql> select count(*) from employee5 where post='hr';

查询薪水最高的人所有信息

mysql> select * from employee5 where salary = (select max(salary) from employee5);  //子查询

(6)分组查询

1)group by和group_concat()函数一起使用

根据部门id进行分组,把相同部门的人统计出来(拼接)

mysql> select dep_id,group_concat(name) from employee5  group by dep_id;

根据部门进行分组,把部门的每个人姓名打印出来(拼接)

mysql> select post,group_concat(name) from employee5  group by post;

2)group by和集合函数一起使用

根据部门进行分组,取每个部门薪水最大的

mysql> select post,max(salary) from employee5 group by post;

(7)使用正则进行匹配

mysql> select name,salary from employee5 where name regexp 'm{2}';
mysql> select name,salary from employee5 where name regexp 'yun$';
mysql> select name,salary from employee5 where name regexp '^m';

(七)MySQL数据操作DQL:单表查询1的更多相关文章

  1. (七)MySQL数据操作DQL:多表查询2

    (1)准备环境 1)创建员工表 mysql> create table company.employee6( -> emp_id int auto_increment primary ke ...

  2. mysql第四篇:数据操作之单表查询

    单表查询 一.简单查询 -- 创建表 DROP TABLE IF EXISTS `person`; CREATE TABLE `person` ( `id` ) NOT NULL AUTO_INCRE ...

  3. 06-查询操作(DQL)-单表查询

    一. 综述   查询操作主要从两个方面来说:单表查询和多表查询. 单表查询包括:简单查询.过滤查询.结果排序.分页查询.聚集函数. 二 . 案例设计   1. 设计产品表(product).包括:主键 ...

  4. mysql第四篇:数据操作之多表查询

    mysql第四篇:数据操作之多表查询 一.多表联合查询 #创建部门 CREATE TABLE IF NOT EXISTS dept ( did int not null auto_increment ...

  5. Mysql基础(四):库、表、记录的详细操作、单表查询

    目录 数据库03 /库.表.记录的详细操作.单表查询 1. 库的详细操作 3. 表的详细操作 4. 行(记录)的详细操作 5. 单表查询 数据库03 /库.表.记录的详细操作.单表查询 1. 库的详细 ...

  6. mysql查询操作之单表查询、多表查询、子查询

    一.单表查询 单表查询的完整语法: .完整语法(语法级别关键字的排列顺序如下) select distinct 字段1,字段2,字段3,... from 库名.表名 where 约束条件 group ...

  7. 查询数据SELECT 之单表查询

    一.单表查询的语法与关键字的执行优先级""" # 单表查询# 单标查询完整与法:# select distinct(关键字,代表查询的意思,后面跟)字段1,字段2...( ...

  8. mysql四-1:单表查询

    一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二.关键 ...

  9. 07-查询操作(DQL)-多表查询

    一. 综述    查询操作主要从两个方面来说:单表查询和多表查询. 多表查询包括:笛卡尔积.外键约束.内连接查询.外链接查询.自连接查询. 二 . 案例设计   1.  设计产品表(product). ...

随机推荐

  1. MongoDB 存储日志数据

    MongoDB 存储日志数据 https://www.cnblogs.com/nongchaoer/archive/2017/01/11/6274242.html 线上运行的服务会产生大量的运行及访问 ...

  2. 【bzoj1263】[SCOI2006]整数划分 高精度

    题目描述 从文件中读入一个正整数n(10≤n≤31000).要求将n写成若干个正整数之和,并且使这些正整数的乘积最大. 例如,n=13,则当n表示为4+3+3+3(或2+2+3+3+3)时,乘积=10 ...

  3. 51nod1254 最大子段和 V2 DP

    ---题面--- 题解: 表示今天做题一点都不顺.... 这题也是看了题解思路然后自己想转移的. 看的题解其实不是这道题,但是是这道题的加强版,因为那道题允许交换k对数. 因为我们选出的是连续的一段, ...

  4. [LG1886]滑动窗口 单调队列

    ---题面--- 题解: 观察数据范围,这应该是一个复杂度O(n)的题.以最大值为例,考虑单调队列,维护一个单调递减的队列.从前向后扫,每次答案取队首,如果后面进入的比前面大,那么就弹出前面的数,因为 ...

  5. github导入springboot maven项目

    1.在GitHub里force喜欢的项目,获取GitHub项目地址,eclipse---import---project from git---clone uri---next---finish,项目 ...

  6. 数据结构之(HDU2051 Bitset)

    Problem Description Give you a number on base ten,you should output it on base two.(0 < n < 10 ...

  7. 解析 Array.prototype.slice.call(arguments,0)

    Array.prototype.slice.call(arguments,0) 经常会看到这段代码用来处理函数的参数 网上很多复制粘帖说:Array.prototype.slice.call(argu ...

  8. HTML5学习之新增标签

    转自:http://www.cnblogs.com/fly_dragon/archive/2012/05/25/2516142.html 作者:FlyDragon 一.引言 在本节中,笔者将向大家讲述 ...

  9. Junit使用的超简单介绍

    Junit使用的超简单介绍 前言:我对Junit了解的并不多,只是今天突然听到有人提到了它,而且现在时间还早,所以我觉得我不妨更一篇关于Junit4的超级超级简单的用法,全当是为了省去看官网demo的 ...

  10. bzoj4900 [CTSC2017]密钥

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4900 [题解] 恭喜bzoj达到40页 考场由于傻逼基数排序写挂了而gg. 竟然忘了考试前一 ...