MySQL实现单表查询的语句
发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,下文给大家带来关于MySQL实现单表查询的语句,感兴趣的话就一起来看看这篇文章吧,相信看完MySQL实现单表查询的语句对大家多少有点帮助吧。首先创建数据表# 创建表 mysql> create
千家信息网最后更新 2024年11月20日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安全错误
数据库的锁怎样保障安全
杭州恩牛网络技术有限公司好吗
两个服务器的数据库传输慢
北京租房软件开发
vb 数据库删除数据库
运吉网络技术有限公司
网络安全一般指的是
方舟服务器管理器公网ip
服务器主板可以装普通系统吗
医院数据库原理
数据库个人信息安全吗
魔兽世界当地没有可用的服务器
网络技术入侵
中国重要的会议论文数据库
网络安全工程师证考试题
计算机网络技术要电脑吗
sap软件开发要求
临夏市公安局网络安全
如何防范网络安全.
服务器ip被劫持
随着网络技术的发展电子支付
杭州恩牛网络技术有限公司好吗
土豆服务器是哪个公司的
智慧农贸批发市场软件开发公司
深圳机械备件管理软件开发
应对网络安全形式的战略规划
数据库备份成nb3文件
焦作软件开发平均价格
临湘手机软件开发
创建数据库外键sql语句
随着网络技术的发展电子支付