MySQL实现单表查询的简单方法
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,本文主要给大家简单讲讲MySQL实现单表查询的简单方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL实现单表查询的简单方法这篇文章可以给大家
千家信息网最后更新 2025年01月22日MySQL实现单表查询的简单方法
本文主要给大家简单讲讲MySQL实现单表查询的简单方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL实现单表查询的简单方法这篇文章可以给大家带来一些实际帮助。
首先我们来创建表、插入数据:
# 创建表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 );# 插入数据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);# 查看表结构mysql> desc employee5; +-----------------+-----------------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-----------------+-----------------------+------+-----+---------+----------------+| id | int(11) | NO | PRI | NULL | auto_increment || name | varchar(30) | NO | | NULL | || sex | enum('male','female') | NO | | male | || hire_date | date | NO | | NULL | || post | varchar(50) | NO | | NULL | || job_description | varchar(100) | YES | | NULL | || salary | double(15,2) | NO | | NULL | || office | int(11) | YES | | NULL | || dep_id | int(11) | YES | | NULL | |+-----------------+-----------------------+------+-----+---------+----------------+
查询语法
SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数;
查看表中所有数据
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 |+----+-----------+--------+------------+------------+-----------------+----------+--------+--------+10 rows in set (0.00 sec)
简单查询
简单查询
mysql> SELECT * FROM employee5;mysql> SELECT name, salary, dep_id FROM employee5;
去重DISTINCT
mysql> SELECT post FROM employee5;mysql> SELECT DISTINCT post FROM employee5;注:不能部分使用DISTINCT,通常仅用于某一字段。
通过四则运算查询
mysql> SELECT name, salary, salary*14 FROM employee5;mysql> SELECT name, salary, salary*14 AS Annual_salary FROM employee5;mysql> SELECT name, salary, salary*14 Annual_salary FROM employee5;
定义显示格式
CONCAT() 函数用于连接字符串mysql> SELECT CONCAT(name, ' annual salary: ', salary*14) AS Annual_salary FROM employee5;
条件查询
a、语法 select * from 表名 where 条件b、比较运算符 大于 小于 大于等于 小于等于 不等于 > < >= <= !=或<>c、逻辑运算符 并且 或者 非 and or notd、模糊查询 like % 表示任意多个任意字符 _ 表示一个任意字符e、范围查询 in 表示在一个非连续的范围内 between...and... 表示在一个连续的范围内f、空判断 判断空:is null 判断非空:is not null g、优先级 小括号,not 比较运算符, 逻辑运算符 and比or优先级高,如果同时出现并希望先选or,需要结合()来使用
单条件查询
mysql> SELECT name,post FROM employee5 WHERE post='hr';
多条件查询
mysql> SELECT name,salary FROM employee5 WHERE post='hr' AND salary>5000;
关键字 BETWEEN AND查询
mysql> SELECT name,salary FROM employee5 WHERE salary BETWEEN 5000 AND 15000;mysql> SELECT name,salary FROM employee5 WHERE salary NOT BETWEEN 5000 AND 15000;
关键字 IS NULL 查询
mysql> SELECT name,job_description FROM employee5 WHERE job_description IS NULL;mysql> SELECT name,job_description FROM employee5 WHERE job_description IS NOT NULL;mysql> SELECT name,job_description FROM employee5 WHERE job_description='';
关键字IN集合查询
mysql> SELECT name, salary FROM employee5 WHERE salary=4000 OR salary=5000 OR salary=6000 OR salary=9000 ;mysql> SELECT name, salary FROM employee5 WHERE salary IN (4000,5000,6000,9000) ;mysql> SELECT name, salary FROM employee5 WHERE salary NOT IN (4000,5000,6000,9000) ;
关键字LIKE模糊查询
通配符'%'mysql> SELECT * FROM employee5 WHERE name LIKE 'al%';通配符'_'mysql> SELECT * FROM employee5 WHERE name LIKE 'al___';
查询排序
按单列排序
mysql> SELECT * FROM employee5 ORDER BY salary;mysql> SELECT name, salary FROM employee5 ORDER BY salary ASC;mysql> SELECT name, salary FROM employee5 ORDER BY salary DESC;
按多列排序
mysql> SELECT * FROM employee5 ORDER BY hire_date DESC,salary ASC;# 先按入职时间,再按薪水排序mysql> SELECT * FROM employee5 ORDER BY hire_date DESC, salary DESC;# 先按职位,再按薪水排序mysql> SELECT * FROM employee5 ORDER BY post, salary DESC;
分页查询 limit
mysql> SELECT * FROM employee5 ORDER BY salary DESC LIMIT 5; //默认初始位置为0mysql> SELECT * FROM employee5 ORDER BY salary DESC LIMIT 0,5;mysql> SELECT * FROM employee5 ORDER BY salary DESC LIMIT 3,5; //从第4条开始,共显示5条
聚合函数查询
a、count(*) 表示计算总行数,括号中可以写*和列名 b、max(列) 表示求此列的最大值 c、min(列) 表示求此列的最小值 d、sun(列) 表示求此列的和 e、avg(列) 表示求此列的平均值 mysql> SELECT COUNT(*) FROM employee5;mysql> SELECT COUNT(*) FROM employee5 WHERE dep_id=101;mysql> SELECT MAX(salary) FROM employee5;mysql> SELECT MIN(salary) FROM employee5;mysql> SELECT AVG(salary) FROM employee5;mysql> SELECT SUM(salary) FROM employee5;mysql> SELECT SUM(salary) FROM employee5 WHERE dep_id=101;
分组查询
# 单独使用GROUP BY关键字分组mysql> SELECT post FROM employee5 GROUP BY post;注意:我们按照post字段分组,那么select查询的字段只能是post,想要获取组内的其他相关信息,需要借助函数
GROUP BY关键字和group_concat()函数一起使用
# 按照id分组,并查看组内成员mysql> SELECT dep_id,GROUP_CONCAT(name) FROM employee5 GROUP BY dep_id;mysql> SELECT dep_id,GROUP_CONCAT(name) as emp_members FROM employee5 GROUP BY dep_id;
GROUP BY和集合函数一起使用
# 按照dep_id 分组, 并计算组内成员工资总和mysql> SELECT dep_id,SUM(salary) FROM employee5 GROUP BY dep_id;# 按照dep_id分组,并计算组内成员工资平均值mysql> SELECT dep_id,AVG(salary) FROM employee5 GROUP BY dep_id;
正则表达式查询
mysql> SELECT * FROM employee5 WHERE name REGEXP '^j';mysql> SELECT * FROM employee5 WHERE salary REGEXP '[5]+.*';mysql> SELECT * FROM employee5 WHERE salary REGEXP '[5]{2}.*';
MySQL实现单表查询的简单方法就先给大家讲到这里,对于其它相关问题大家想要了解的可以持续关注我们的行业资讯。我们的板块内容每天都会捕捉一些行业新闻及专业知识分享给大家的。
查询
关键
关键字
分组
函数
字段
条件
排序
运算
此列
运算符
方法
字符
成员
数据
范围
专业
优先级
工资
平均值
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络技术深入
关系数据库管理系统的软件产品
电子商务活动提高网络安全
广州门禁软件开发怎么收费
服务器的管理口L口
笔记本网络dns服务器错误
重庆销售软件开发服务商
党外干部数据库格式
oracle查询性能数据库
AMD服务器是什么架构
吴中区有口碑的网络技术
网络安全员大全
松江区企业网络技术服务有哪些
对当今软件开发开发
我的世界小兮服务器多少号
下列不符合网络安全观的表述有
石嘴山展厅互动软件开发
河南中源网络技术有限公司
数据库帐号安全
打印服务器不可用
山东现代软件开发出厂价格
网络安全季宣传活动方案
数据库 dblink
2020小学网络安全总结
jsp通过数据库的天气
安装网络安全
无尽的拉格朗日服务器区别
无线服务器驱动安装
支付宝网络技术有限
大学中网络安全工程师