• 第三章:DQL命令(一)


    第三章:DQL命令(一)

    ​ DQL命令就是select语句,也是mysql我们用到的最多的语句。

    整体语法:

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

    tip :

    [] 括号代表可选的;
    {} 括号代表必须的;
    ‘#’ MySQL语句中的注释符,也可以用 /该处为注释/

    1.指定查询字段:

    查询表中所有的数据列结果,采用“*”符号:

    select * from student;

    可指定查询的结果数据列

    ​ 如只查询student表中的学号、姓名、电话

    SELECT StudentNo, StudentName, Phone FROM student;

    ​ 如区分连接查询时两个表有同名的字段

    SELECT student.StudentNo , StudentName, StudentResult
    FROM student , result ;

    2.AS子句

    AS子句作用:

    可给数据列取一个新别名
    可给表取 一个新别名
    可把经计算或总结的结果用另外一个新名称来代替

    AS子句用法:

    SELECT StudentNo AS “学号” FROM student;
    SELECT a.StudentNo FROM student AS a;
    SELECT Phone+1 AS Tel FROM student;

    3.DISTINCT关键字

    作用: 去掉SELECT查询返回的记录结果中重复的记录(所有返回列的值都相同),只返回一条

    语法:

    SELECT DISTINCT 字段名1, 字段名2… FROM 表名

    示例:

    #查询成绩表中的所包含的课程ID
    SELECT DISTINCT SubjectNo FROM result;

    4.where条件语句
    • 用于检索数据表中符合条件的记录
    • 搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假
    • 搜索条件的组成
      • 逻辑操作符
      • 比较操作符

    逻辑操作符:

    操作符名称语法描述
    AND或&&a AND b 或 a && b逻辑与,同时为真,结果才为真
    OR或||a OR b 或 a||b逻辑或,只要一个为真,则结果为真
    NOT或!NOT a 或 !a逻辑非,若操作数为假,结果则为真

    比较操作符:

    操作符名称语法描述
    IS NULLa IS NULL若操作符为NULL,则结果为真
    IS NOT NULLa IS NOT NULL若操作符不为NULL,则结果为真
    BETWEENa BETWEEN b AND c若a范围在b与c之间则结果为真
    LIKEa LIKE bSQL模式匹配,若a匹配b,则结果为真
    INa IN (a1,a2,a3,….)若a等于a1,a2…中的某一个,则结果为真
    5.BETWEEN AND范围查询

    语法:

    SELECT 字段列1,字段2 ,…FROM 表名 WHERE 字段x BETWEEN 值1 AND 值2

    示例:

    #查询课程表中课时在110和120之间的所有记录
    SELECT * FROM subject WHERE ClassHour BETWEEN 110 AND 120;
    等同于:
    SELECT * FROM subject WHERE ClassHour >= 110 AND ClassHour <=120;****

    6.LIKE模糊查询

    在WHERE子句中,使用LIKE关键字进行模糊查询

    • 与“%”一起使用,表示匹配0或任意多个字符
    • 与“_”一起使用,表示匹配单个字符

    示例:

    #查询包含“数学”的所有课程
    SELECT * FROM subject WHERE SubjectName LIKE “%数学%”;
    #查询所有姓名为“李**”三个字的学生信息
    SELECT StudentNo,StudentName FROM student
    WHERE StudentName LIKE “李__”;

    7.使用IN进行范围查询

    语法:

    SELECT 字段列1,字段2 ,…FROM 表名 WHERE 字段x IN ( 值1,值2,值3…)

    示例:

    SELECT * FROM subject where ClassHour = 100 OR ClassHour =110 OR ClassHour = 120; #普通处理方式
    SELECT * FROM subject where ClassHour IN ( 100, 110,120 );
    #使用IN进行查询方式,更为简洁,效率更高

    ​ **注意:**查询的字段x的值,至少与括号中的一个值相同,多个值之间用英文逗号隔开

    8.连接查询(多表查询)

    连接查询:
    如需要多张数据表的数据进行查询,则可通过连接运算符实现多个查询
    分类包括:

    • 内连接 ( inner join)
      • 等值和非等值的连接查询
      • 自身连接查询
    • 外连接 ( out join )
      • 左连接(LEFT JOIN)
      • 右连接 ( RIGHT JOIN)
    内连接查询

    ​ INNER JOIN内连接,在表中至少一个匹配时,则返回记录

    语法:

    SELECT 字段1,字段2,… FROM table_1
    INNER JOIN table_2 ON table_1.字段x = table_2.字段y;
    ‘#’ INNER JOIN 与 JOIN 是相同的;
    ‘#’ 如table_1中的行在table_2中没有匹配,则不返回;

    示例:

    要求:从subject和grade数据表查询课程名称和所属年级名称
    SELECT SubjectName,GradeName FROM subject INNER JOIN grade ON subject.GradeID= grade.GradeID;

    外连接查询

    左外连接(LEFT JOIN):
    从左表(table_1)中返回所有的记录,即便在右(table_2)中没有匹配的行
    语法:

    SELECT 字段1,字段2,… FROM table_1
    LEFT [ OUTER ] JOIN table_2 ON table_1.字段x = table_2.字段y;

    右外连接(RIGHT JOIN)
    从右表(table_2)中返回所有的记录,即便在左(table_1)中没有匹配的行

    自连接查询

    数据表与自身进行连接,从一个包含栏目ID,栏目名称和父栏目ID的表中,查询父栏目名称和其子栏目名称,表结构如下:

    #表结构语句
    CREATE TABLE IF NOT EXISTS category(
    categoryId int(10) auto_increment primary key,
    categoryName varchar(32) not null ,
    pid int(10)
    );

  • 相关阅读:
    springboot和springcloud 和springcloud Alibaba的版本选择
    基于nodejs的预约上门维修服务系统
    WPF 控件专题 DatePicker控件详解
    从零实现 promise 的 class 和 function 版本
    洛谷 P1160 队列安排
    Mysql安装
    SSM - Springboot - MyBatis-Plus 全栈体系(二十)
    七、【VUE-CLI】插件
    ElasticSearch(es)使用游标读取全部数据
    子不语通过上市聆讯:预计全年净利润同比下滑,华丙如为董事长
  • 原文地址:https://blog.csdn.net/NoKris/article/details/126649237