DQL(SELECT 语句)

DQL(Data Query Language) 查询数据库

  • 所有的查询操作都用 (Select)
  • 可以进行复杂的查询操作
  • MySQL 函数也通过该命令实现
  • 数据库中最核心的语言,最重要的语句
  • 使用最频繁的语句

SELECT 语法:

SELECT [ALL | DISTINCT]
{* | table.* | [table.field1[as alias1],[table.field2[as alias2]],[...]]}
FROM table_name [as table_alias]
  [left | right | inner join table_name2]  -- 联合查询
  [WHERE ...]  -- 指定结果需满足的条件
  [GROUP BY ...]  -- 指定结果按照哪几个字段来分组
  [HAVING]  -- 过滤分组的记录必须满足的次要条件
  [ORDER BY ...]  -- 指定查询记录按一个或多个条件排序
  [LIMIT {[offset,]row_count | row_countOFFSET offset}];
   -- 指定查询的记录从哪条至哪条

sql语言的执行顺序

  1. from
  2. on
  3. join
  4. where
  5. group by
  6. avg,sum,…
  7. having
  8. select
  9. distinct
  10. order by

有的时候,字段的名字不是很能见名知意,可以给字段起一个别名,也可以给结果起一个别名,也可以给表起别名

SELECT  `StudentNo`  AS  学号,`studentName`  AS  学生姓名  FROM  student

在这里插入图片描述

  • 连接字符串
concat(a,b)
  • 示例:
SELECT CONTACT('姓名:':,StudentName) AS 新名字 FROM student

在这里插入图片描述

去重复

SELECT DISTINCT `字段` FROM ``

查询MySQL版本

SELECT VERSION()

计算结果:用来计算表达式

SELECT 100*3-1 AS 计算结果

在这里插入图片描述

查询 自增的补偿

SELECT @@AUTO_INCREMENT_INCREMENT

在这里插入图片描述

  • 学院考试成绩 + 1 分查看
SELECT `StudentNo`  ,`StudentResult`+1  AS  '提分后'  FROM  result

WHERE 条件子句

作用:检索数据库中符合条件的值
所有的条件由一个或多个表达式组成,结果为布尔值
运算符 语法 描述
and &&
or ||
not !

查询考试成绩在95~100分之间的学生

SELECT StudentNo,`StudentResult` FROM result
WHERE StudentResult>=95 AND  StudentResult <= 100

模糊查询(区间)

SELECT StudentNo,`StudentResult` FROM result
WHERE StudentResult BETWEEN 95 AND 100 

– 左大由小

查询除了1000号之外的同学的成绩

SELECT StudentNo,`StudentResult`  FROM  result
WHERE studentNo !=1000

模糊查询

运算符语法描述
IS NULLa IS NULL如果操作符为NULL ,结果为真
IS NOT NULLa IS NOT NULL如果操作符不为NULL ,结果为真
BETWEEN
LIKEa like bSQL 匹配,如果a 匹配 b,结果为真
INa in (a1,a2,a2…)假设a在a1或者a2,…其中的摸一个值中,那么结果为真

1. like 结合 %( 代表0到任意字符 ) _( 代表一个字符 )

  • 查询姓刘的同学
SELECT `StudentNo`,`StudentName` FROM `Student`
WHERE Student LIKE '刘%'
  • 查询姓刘的同学,名字后面只有一个字的。
SELECT `StudentNo`,`StudentName` FROM `Student`
WHERE Student LIKE '刘_'

查询姓刘的同学,名字后面只铀两个字的。

SELECT `StudentNo`,`StudentName` FROM `Student`
WHERE Student LIKE '刘__'   -- 两个_

查询名字中有 嘉字的同学

SELECT `StudentNo`,`StudentName` FROM `Student`
WHERE Student LIKE '%嘉%'

2. IN(具体的一个或多个值)
查询 1002,1002,1003号学院

SELECT `StudentNo`,`StudentName` FROM `Student`
WHERE `StudentNo IN (1001,1002,1003)
  • 查询在北京的学生
SELECT `StudentNo`,`StudentName` FROM `student`
WHERE `Address` IN ('北京')

==3. NULL / NOT NULL ==

  • 查询地址为空的学生
SELECT `StudentNo`,`StudentName` FROM `student`
WHERE address='' OR address IS NULL
  • 查询有出生日期的同学
 SELECT `StudentNo`,`StudentName` FROM `student`
 WHERE `BornDate` IS NOT NULL

MySQL 函数

1、数学运算

  • 取模
SELECT ABS();
  • 向上取整
SELECT CEILING(9.4)
  • 向下取整
SELECT FLOOR(0.8);
  • 返回一个0~1之间的随机数
SELECT RAND()
  • 取符号
SELECT SIGN(X)  -- 整数:1  负数:-1  零:0

2、字符串函数

  • 字符串的长度
SELECT CHAR_LENGTH('字符串');
  • 拼接字符串
SELECT CONCAR('字符串1','字符串2')
  • 在指定位置插入字符串
SELECT INSERT(str,pos,len,newstr);
  • 变为小写
SELECT LOWER('大写英文字符串')
  • 变为大写
SELECT UPPER('小写英文字符串')
  • 返回第一次出现的子串的索引
SELECT INSTR('被查询的字符串''要找的子串')
  • 将字符串str重复count次返回
SELECT REPEAT('str',count)
  • 返回指定的字符串,起始位置用1开始计数
SELECT SUBSTR('源字符串',截取的其实位置,截取的长度)
  • 逆序输出字符串
SELECT REVERSE('字符串')

3、时间和日期

  • 获取当前日期
SELECT CURRENT_DATE()
SELECT CURDATE()

输出:
在这里插入图片描述

  • 获取当地日期
SELECT NOW()

输出:
在这里插入图片描述

SELECT LOCALTIME()

输出:
在这里插入图片描述

  • 获取年、月、日、时、分、秒
SELECT YEAR(NOW())
SELECT MONTH(NOW())
SELECT DAY(NOW())
SELECT HOUR(NOW())
SELECT MINUTE(NOW())
SELECT SECOND(NOW())

4、系统

SELECT SYSTEM_USER()
SELECT USER()
SELECT VERSION()

5、聚合函数

count()
sum()
AVG()
MAX()
MIN()

示例:

  • COUNT ,都能构统计表中的数据(个数)
SELECT COUNT(studentname) FROM student    -- COUNT(指定列),会忽略所有的null
SELECT COUNT(*) FROM student;    -- COUNT(*),不会忽略null,计算行数
SELECT COUNT(1) FROM student;    -- COUNT(1),不会忽略null,计算行数
  • 查询不同课程的最高分、平均分、最低分、平均分 > 80
    核心:(根据不同课程分组)
SELECT subjectName, AVG(StudentResult), MAX(StudentResult),MIN(StudentResult)
FROM result r
INNER JOIN `subject` sub
ON r.`Subject` = sub.`subjectNo`
GROUP BY r.SubjectNo  -- 通过什么字段来分组
HAVING 平均分 > 80
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值