美文网首页
DQL查询数据(最重点)-02

DQL查询数据(最重点)-02

作者: 司徒新新 | 来源:发表于2020-05-01 22:38 被阅读0次

(DQL: Data Query Language : 数据查询语言)

  • 1.所有的查询操作都用他 select.
  • 2.简单的查询,复杂的查询它都能做.
  • 3.数据库中最核心的语言,最重要的语句.
  • 4.使用频率最高的语句.
-- 查询某涨表的全部
SELECT * FROM student;

-- 查询指定字段
SELECT `name`, `id` FROM student;

-- 别名 给结果起一个名字 AS 也可以给表起别名
SELECT `name` AS 名字, `id` AS 学生id FROM student AS s;

-- 函数 CONCAT(a,b) 拼接
SELECT CONCAT('名字',name) AS 新名字 FROM student; 

-- 去重
SELECT DISTINCT `studentName` FROM student;

-- 学生成绩+1分查看 (表达式)
SELECT `sutdentNo`, `studentResults` + 1 AS '提分后' FROM result;

-- 查询姓刘的学生   刘 后面不管几个字 或 %新新%   带新新两个字的
SELECT `studentNo`, `studentName` FROM student WHERE studentName LIKE '刘%';

-- 查询姓刘的学生,后面只有一个字的  一个下划线(_)代表一个字符 或 _新新_ 
SELECT `studentNo`, `studentName` FROM student WHERE studentName LIKE '刘_';

-- 查询在北京的学生     IN(具体的一个或者多个值)
SELECT `studentNo`, `studentName` FROM student WHERE `address` IN ('北京');

多表查询


/*思路
1.分析需求,都需要查询哪些字段,来自哪张表(连接查询)
2.确定使用哪种查询 7种
确定交叉点(这些表中,哪些数据是相同的)  必须有
*/

-- INNER JOIN 
SELECT s.studentNo,studentName,studentResult FROM student AS s
INNER JOIN result AS r
WHERE s.studentNo = r.studentNo
↑ 如果表中至少有一个匹配,就返回行

-- RIGHT JOIN
SELECT s.studentNo,studentName,studentResult FROM student AS s
RIGHT JOIN result AS r
ON s.studentNo = r.studentNo
↑ 会返回右表中所有的值,即使左表中没有匹配

-- LEFT JOIN 
SELECT s.studentNo,studentName,studentResult FROM student AS s
LEFT JOIN result AS r
ON s.studentNo = r.studentNo
↑ 会返回左表中所有的值,即使右表中没有匹配

JOIN (链接的表) ON (判断条件) 链接查询是一个越发,
WHERE等值查询,但是他俩的结果是一样的.

分页和排序


/* 排序和分页
    排序 : 升序ASC 降序DESC
    ORDER BY 根据哪个条件排序,怎么排
    
    LIMIT 语法: LIMIT 起始值  页面的大小 (( n - 1) * pageSize, pageSize)
*/
SELECT s.studentNo,studentName,studentResult FROM student AS s
LEFT JOIN result AS r
ON s.studentNo = r.studentNo
ORDER BY studentResult DESC  -- 排序
LIMIT 0,5

-- 子查询  由内向外
SELECT studentNo,studentName FROM student WHERE studentNo IN (
    SELECT studentNo FROM Result WHERE studentResult > 80 AND subjectNo(
        SELECT subjectNo FROM `subject` WHERE `subjectName` = `高等数学-2`;
    )
)

常用函数

 
-- 数学运算
SELECT ABS(-8)        -- 绝对值
SELECT CEILING(9.4)   -- 向上取整
SELECT FLOOR(9.4)     -- 想下取整
SELECT RAND()         -- 返回一个0-1之间的随机数
SELECT SIGN()         --  判断一个数的符号   0-0 负数返回-1  整数返回1
 
-- 字符串 
SELECT CHAR_LENGTH('司徒新新')              -- 字符串长度
SELECT CONCAT('我','爱','你们')             -- 拼接字符串
SELECT INSERT('新新爱变成',2,3,'超级热爱')    -- 查询,从某个位置开始替换某个长度
SELECT LOWER('SituXinXin')                 -- 全部变成小写字母
SELECT UPPER('SituXinXin')                 -- 全部变成大写字母
SELECT INSTR('SituXinXin','t')             -- 返回第一次出现的子串的索引
SELECT REPLACE('新新说躺着就能赚钱','躺着','努力') -- 替换出现的字符串
SELECT SUBSTR('新新说坚持就能赚钱',4,7)       -- 返回指定的字符串(源字符串,截取的位置,截取的长度)
SELECT REVERSE("新新徒司")                  -- 反转

-- 时间和日期函数(记住)
SELECT CURRENT_DATE()                   -- 获取当前日期
SELECT CURDATE()                        -- 获取当前日期
SELECT NOW()                            -- 获取当前时间
SELECT LOCALTIME()                      -- 获取本地时间
SELECT SYSDATE()                        -- 系统时间
SELECT YEAR(NOW())                      -- 年
SELECT MONTH(NOW())                     -- 月
SELECT DAY(NOW())                       -- 日
SELECT HOUR(NOW())                      -- 时
SELECT MINUTE(NOW())                    -- 分
SELECT SECOND(NOW())                    -- 秒


-- 系统
SELECT SYSTEM_USER() -- 查看系统当前用户 可简写成为下面这样的
SELECT USER()
SELECT VERSION()        -- 查询版本

聚合函数

-- 聚合函数
-- 都能够统计表中的数据
SELECT COUNT(studentName) FROM student; -- COUNT(指定列),会忽略所有的null值
SELECT COUNT(*) FROM student; -- COUNT(*),不会忽略所有的null值
SELECT COUNT(1) FROM student; -- COUNT(1),不会胡烈所有的null值

SELECT SUM(studentResult) AS 总和 FROM result
SELECT AVG(studentResult) AS 平均分 FROM result
SELECT MAX(studentResult) AS 最高峰 FROM result
SELECT MIN(studentResult) AS 最低分 FROM result 

SELECT subjectName, AVG(studentResult) AS 平均分, MAX(studentResult) FROM result r
INNER JOIN `subject` sub
ON r.subjectNo = sub.subjectNo
GROUP BY r.subjectNo
HAVING 平均分 > 80

--  分组 
SELECT subjectName, AVG(studentResult) AS 平均分, MAX(studentResult) FROM result r
INNER JOIN `subject` sub
ON r.subjectNo = sub.subjectNo
GROUP BY r.subjectNo
HAVING 平均分 > 80

MD5

-- md5加密  测试 (扩展)
CREATE TABLE `testmd5`(
    `id` INT(4) NOT NULL,
    `name` VARCHAR(20) NOT NULL,
    `pwd` VARCHAR(50) NOT NULL,
    PRIMARY KEY(`id`)
)ENGINE = INNODB DEFAULT CHARSET=utf8

INSERT INTO testmd5 VALUES (1,'新新1','12345678'),(2,'新新2','12345678'),(3,'新新3','12345678'),(4,'新新4','12345678')

UPDATE testmd5 SET pwd = MD5(pwd)      -- 加密

INSERT INTO testmd5 VALUES (5,'新新5',MD5('lxx548946'))    -- 插入一条新的

SELECT * FROM testmd5 WHERE `name` = '新新5' AND pwd = MD5('lxx548946')  -- 查询

相关文章

  • DQL查询数据(最重点)-02

    (DQL: Data Query Language : 数据查询语言) 1.所有的查询操作都用他 select...

  • 5. DQL语句和查询相关语句以及多表查询

    DQL语句和查询相关语句以及多表查询 一. DQL语句 数据查询语句DQL(Data Query Language...

  • MySQL之DQL查询数据

    四、DQL查询数据 1.DQL(Data Query Language):数据查询语言 所有的查询操作都要用它 S...

  • SQL基础概念

    SQL分类 DQL(数据查询语言):查询语句,凡是select都是DQL DML(数据操作语言):insert d...

  • sql语句的分类DQL、DML、DDL、DCL

    1. 数据查询语言DQL 数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE 子句组成的查询...

  • SQL语句

    SQL语句主要分为四类 DQL(数据查询语言): 查询语句,凡是select语句都是DQL。 DML(数据操作语言...

  • 04-DQL数据查询语言

    1.DQL单表数据查询 ---------------------------------------------...

  • 06.DQL查询语句--列控制

    DQL(Data Query Language) 数据查询语言,用来查询记录(数据) 查询语句不会修改数据库 准备...

  • 数据库(九)-DQL数据查询语言

    DQL(Data Query Language):数据查询语言。 select语句的功能就是查询数据。select...

  • SQL之DQL

    DQL用于从数据库查询数据,并不会修改数据 基本查询 条件控制 查询排序 分组查询 limit限制 一.基本查询 ...

网友评论

      本文标题:DQL查询数据(最重点)-02

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