美文网首页
单表查询

单表查询

作者: 心疼你萌萌哒 | 来源:发表于2018-05-15 17:50 被阅读0次
<meta http-equiv="content-type" content="text/html; charset=utf-8">  <meta name="generator" content="CherryTree"> <link rel="stylesheet" href="styles.css" type="text/css"> **## MySQL单表查询**  **## SELECT**  **## : DQL** 
========================================================
简单查询
通过条件查询
查询排序
限制查询记录数
使用集合函数查询
分组查询
使用正则表达式查询 

# 表company.employee5

雇员编号 id int
雇员姓名 name varchar(30)
雇员性别 sex enum
雇用时期 hire_date date
职位 post varchar(50)
职位描述 job_description varchar(100)
薪水 salary double(15,2)
办公室 office int
部门编号 dep_id int

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
);

[图片上传失败...(image-d26167-1525777990063)]

mysql> 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);

[root@slave2 ~]# mysqldump -p"(tianyunTIANYUN123)" -B company --single-transaction > company.sql

[root@slave1 ~]# wget ftp://10.18.40.100/tianyun/company.sql
[root@slave1 ~]# mysql -p'TianYun520^&*' < company.sql

一、简单查询
简单查询
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 |

SELECT name, salary, dep_id FROM employee5;

避免重复DISTINCT
SELECT post FROM employee5;
SELECT DISTINCT post FROM employee5;
注:不能部分使用DISTINCT,通常仅用于某一字段。

通过四则运算查询
SELECT name, salary, salary*14 FROM employee5;
SELECT name, salary, salary*14 AS Annual_salary FROM employee5;
SELECT name, salary, salary*14 Annual_salary FROM employee5;

定义显示格式
CONCAT() 函数用于连接字符串
SELECT  CONCAT(name, ' annual salary: ', salary*14) AS Annual_salary FROM employee5;
+-----------------------------------+
| Annual_salary |
+-----------------------------------+
| jack annual salary: 70000.00 |
| tom annual salary: 77000.00 |

二、单条件查询
单条件查询
SELECT name,post
FROM employee5
WHERE post='hr';

多条件查询
SELECT name,salary
FROM employee5
WHERE post='hr' AND salary>10000;

关键字BETWEEN AND
SELECT name,salary FROM employee5 WHERE salary BETWEEN 5000 AND 15000;

SELECT name,salary FROM employee5
WHERE salary NOT BETWEEN 5000 AND 15000;

关键字IS NULL
SELECT name,job_description FROM employee5
WHERE job_description IS NULL;

SELECT name,job_description FROM employee5
WHERE job_description IS NOT NULL;

SELECT name,job_description FROM employee5
WHERE job_description='';

关键字IN集合查询
SELECT name, salary FROM employee5
WHERE salary=4000 OR salary=5000 OR salary=6000 OR salary=9000 ;

SELECT name, salary FROM employee5
WHERE salary IN (4000,5000,6000,9000) ;

SELECT name, salary FROM employee
WHERE salary NOT IN (4000,5000,6000,9000) ;

关键字LIKE模糊查询
通配符’%’
SELECT * FROM employee5 WHERE name LIKE 'al%';

通配符’_’
SELECT * FROM employee5 WHERE name LIKE 'al___';

三、查询排序
按单列排序
SELECT * FROM employee5 ORDER BY salary;
SELECT name, salary FROM employee5 ORDER BY salary ASC;
SELECT name, salary FROM employee5 ORDER BY salary DESC;

按多列排序
SELECT * FROM employee5 ORDER BY hire_date DESC,salary ASC;

[图片上传失败...(image-7cf3c5-1525777990062)]

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

[图片上传失败...(image-2f4883-1525777990062)]

### 先按职位,再按薪水排序

[图片上传失败...(image-e49982-1525777990062)]

四、限制查询的记录数
示例:
SELECT * FROM employee5 ORDER BY salary DESC
LIMIT 5; //默认初始位置为0

SELECT * FROM employee5 ORDER BY salary DESC
LIMIT 0,5;

SELECT * FROM employee5 ORDER BY salary DESC
LIMIT 3,5; //从第4条开始,共显示5条

五、使用集合函数查询
示例:
SELECT COUNT(*) FROM employee5;
SELECT COUNT(*) FROM employee5 WHERE dep_id=101;
SELECT MAX(salary) FROM employee5;
SELECT MIN(salary) FROM employee5;
SELECT AVG(salary) FROM employee5;
SELECT SUM(salary) FROM employee5;
SELECT SUM(salary) FROM employee5 WHERE dep_id=101;

[图片上传失败...(image-87dfb5-1525777990062)]

六、分组查询
GROUP BY和GROUP_CONCAT()函数一起使用
SELECT dep_id,GROUP_CONCAT(name) FROM employee5 GROUP BY dep_id;
SELECT dep_id,GROUP_CONCAT(name) as emp_members FROM employee5 GROUP BY dep_id;
[图片上传失败...(image-6f810c-1525777990062)]

[图片上传失败...(image-db8ffc-1525777990061)]

GROUP BY和集合函数一起使用
[图片上传失败...(image-186a56-1525777990061)]

七、使用正则表达式查询
SELECT * FROM employee5 WHERE name REGEXP '^ali';

SELECT * FROM employee5 WHERE name REGEXP 'yun$';

SELECT * FROM employee5 WHERE name REGEXP 'm{2}';

## 小结:对字符串匹配的方式

WHERE name = 'tom';
WHERE name LIKE 'to%';
WHERE name REGEXP 'yun$';

相关文章

  • spring-data-jpa 复杂查询:使用

    单表查询 多表查询

  • 单表数据查询

    单表查询示例Student表: Student表 Course表 SC表 查询若干列 查询指定列 查询Studen...

  • 延迟加载

    意义 在进行数据查询时,为了提高数据库查询性能,尽量使用单表查询,因为单表查询比多表关联查询速度要快。 如果查询单...

  • SQL常用操作

    1、单表查询 SELECT 基本信息表.姓名,基本信息表.性别FROM 基本信息表 2、单表条件查询 SELECT...

  • SQL查询单表数据(一)

    本节讲述 基本的 select 查询单表数据语句 1 从单表中查询所有的行和列 查询表中所有的数据 在 SQL 中...

  • Python学习笔记十九(MySQL、SQL、查找、单表查询)

    查找 查找分为单表查询与多表查询 单表查询 查看现有数据表 查看所有数据 查看某些字段 比如我只关心title 字...

  • 查询SQL

    单表查询: 常规查询: SELECT 列名 From 表名 去重式查询: DISTINCT SELECT DIST...

  • mysql表格查询命令

    全表查询 语法: Select * from 表名称; 描述: 查询指定表中的所有数据 案例: 单条件查询 语法:...

  • Mysql索引优化

    1、单表索引优化 单表索引优化分析 创建表 建表 SQL 表中的测试数据 查询案例 查询category_id为1...

  • SQL干货篇之查询数据

    单表查询 只在一个表中查询数据 多表查询 同时查询多个表 说明:这是在学生表student和成绩表SC中查询成绩大...

网友评论

      本文标题:单表查询

      本文链接:https://www.haomeiwen.com/subject/dyiwrftx.html