【⾃⽤】NavicatforMySQL(3)数据查询⼀、查询语句SELECT格式
SELECT
[STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY] -- 查询优化
[DISTINCT | DISTINCTROW | ALL] -- 去除重复
select_expr [, select_expr] ... --查询内容列表
[INTO {OUTFILE | DUMPFILE} ‘file_name’ export_options -- 结果定向输出到⽂件
| INTO var_name [, var_name] ...] --结果定向输出到变量
[FROM table_references [PARTITION partition_list]] -- 查询数据的来源
[WHERE where_definition] -- 查询条件
[GROUP BY col_name,...] -- 分组依据
[HAVING where_definition] -- 分组筛选条件
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...] -- 结果排序规则
[LIMIT[offset,] rows] -- 限制结果返回⾏数
[INTO {OUTFILE | DUMPFILE} ‘file_name’ export_options | INTO var_name [, var_name] ...] -- 结果定向输出⼆、简单查询
1.查询表达式
distinct查询SELECT * -- 表⽰输出所有列
col_name1 [[AS] alias_name] [,col_name2] -- 逗号分隔列名列表,可as为输出项拟定别名
expression [,...] -- 表达式
FROM table_references -- 查询来源
代码⽰例:
/*查询全部列*/
SELECT * FROM employee;
/*查询某⼏列,并为之拟定别名*/
SELECT employee_name,email,job_title AS '姓名','邮箱','职位'
FROM employee ;
/*查询某列及表达式*/
SELECT sname,YEAR(NOW())-sage AS birth FROM student;
2.查询条件(WHERE⼦句——对⾏进⾏筛选)
QUALIFICATION PRIDICATION
⽐较>,<,=,>=,<=,!=,!>,!<(NOT+⽐较运算符)
范围,
集合IN,NOT IN
是否为空IS NULL,IS NOT NULL 字符匹配LIKE,NOT LIKE
逻辑运算AND,OR,NOT
代码⽰例:
【确定范围】
/*查询年龄在22到24岁之间的学⽣姓名年龄*/
SELECT sname, sage
FROM student
WHERE sage<=24 AND sage>=22;
SELECT sname,sage
FROM student
WHERE sage BETWEEN 22 AND 24;
【确定集合】
/
*查询信息系、数学系、计算机系的学⽣姓名性别*/
SELECT sname, ssex
FROM student
WHERE sdept IN (‘信息系’,‘数学系’,‘计算机系’);
SELECT sname, ssex FROM student
WHERE sdept='信息系' or sdept='数学系' or sdept='计算机系’;
【字符模糊匹配】
LIKE,RLIKE REGEXP(正则表达式)
3.结果排序语句ORDER BY...
排序⽅式:升序(ASC/默认为升序)、降序(DESC)
代码⽰例:
/*按照学⽣年龄降序*/
SELECT * FROM student
ORDER BY sage DESC;
4.聚合函数
代码⽰例:
/*查询id为1000的部门有多少员⼯*/
SELECT COUNT(*) FROM employee
WHERE dept_id=1000;
5.分组函数
将元组根据某列或某些列的数据进⾏分组,获得各组的统计结果。
代码⽰例:
/*查询产品编号为17的每单平均订购数和订单总数*/
SELECT product_id,AVG(buy_number),COUNT(*)
FROM order_detail
WHERE product_id = 17
GROUP BY product_id;/*根据product_id进⾏分组,由于指定id因此只有⼀组*/ 6.限定结果⾏数语句LIMIT[offset,]rows
offset为偏移量,rows为结果⾏数
代码⽰例:
/*查询课程号为c005的课程中成绩在2-4名的学⽣学号、成绩*/
SELECT sno,grade FROM student
WHERE cno=c005
ORDER BY grade LIMIT 1,3;/*偏移量为1即从第2名开始,⾏数为3即显⽰第2、3、4名*/
综合练习:
/*查询选修通过门数超过3门且平均分在70以上的学⽣的学号、选修门数、平均成绩,并按平均成绩从⾼到低排序*/ SELECT xh,COUNT(*),AVG(cj)
FROM cj
WHERE cj>60/*筛选成绩合格的所有课程并且按学号分组*/
GROUP BY xh
HAVING COUNT(*)>3 AND AVG(cj)>70/*在分组内筛选*/
ORDER BY AVG(cj) DESC;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论