码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 初识DQL语言


    目录

    ### MySQL的语法规范

    注释

    什么是DQL语句?

    1.简单查询

    #打开库名USE myemployees;

    #1.查询表中的单个字段

    #2.查询表中的多个字段

    #3.查询表中的所有字段

    #4.查询常量值

    注意:字符型和日期型的常量值必须用单引号引起来,数值型不需要

    #5.查询表达式

    #6.查询函数

    SELECT 函数名(实参列表);

    #7.起别名   AS 或 空格

    #8.去重  distinct

    select distinct 字段名 from 表名;

     #9.+号的作用     CONCAT

    10.【补充】concat函数   拼接字符

    select  concat(字符1.字符2,字符3,……);

    11.【补充】ifnull函数   判断某字段或表达式是否为null,如果为null,返回指定的值,否则返回原本的值

    select ifnull(字符1,字符2);

    进阶2:条件查询

    /*语法:select        查询列表from        表名where        筛选条件;

    一、按条件表达式筛选

    #二、按逻辑表达式筛选

    #三、模糊查询

    #1.like #一般搭配通配符来使用,可以判断字符型或数值型/*like特点:   一般和通配符搭配使用通配符:% 任意多个字符,包含0个字符

    #案例3:查询员工名中第二个字符为_的员工名(此时'_'不是一个通配符,而是一个具体的字符,需要转译'\_'或'$_'[需要标注$是转译符])

     2.between   and 

    /*①使用between and可以提高语句的简洁度②包含临界值③两个临界值不要调换顺序(从小到大)

    */

    #3.in/*含义:判断某字段的值是否属于in列表中的某一项特点:①使用in提高语句简洁度②in列表的值类型必须—致或兼容*/

    #4、is null/*=或<>不能用于判断null值is null或is not null可以判断null值*/

    #安全等于<=>

    #is null 与 <=>IS NULL:仅仅可以判断NUL工值,<=>:既可以判断NUL工值,又可以判断普通的数值

    三、数据库存储数据的特点

    1、数据存放到表中,然后表再放到库中2、一个库中可以有多张表,每张表具有唯一的表名用来标识自己

    3、表中有一个或多个列,列又称为“字段”,相当于java中“属性”

    4、表中的每一行数据,相当于java中“对象”



    ### MySQL的语法规范

    • 不区分大小写,但建议关键字大写,表名、列名小写
    • 使用“;”结尾
    • 各子句一般分行写
    • 关键字不能缩写也不能分行
    • 合理使用缩进

    注释

    单行注释:#注释文字
    单行注释:-- 注释文字(要有空格)
    多行注释:/* 注释文字  */

    什么是DQL语句?

    Data QueryLanguage 数据查询语言,关键字:SELECT ... FROM ... WHERE

    1.简单查询

    #打开库名
    USE myemployees;

    #1.查询表中的单个字段

    SELECT 字段名 FROM 表名;

    SELECT last_name FROM employees;

    #2.查询表中的多个字段

    SELECT 字段名,字段名,…  FROM 表名;

    SELECT last_name , salary, email FROM employees;

    #3.查询表中的所有字段

    SELECT * FROM 表名;

    SELECT * FROM employees ;

    #4.查询常量值

    SELECT 常量值;

    SELECT 100;
    SELECT 'john';

    注意:字符型和日期型的常量值必须用单引号引起来,数值型不需要

    #5.查询表达式

    SELECT 100%98;

    #6.查询函数

    SELECT 函数名(实参列表);

    SELECT VERSION();


    #7.起别名   AS 或 空格

    /*
    1便于理解
    ②如果要查询的字段有重名的情况,使用别名可以区分开来
    */
    #方式一:使用as
    SELECT 100%98 as 结果;
    SELECT last_name As 姓,first_name AS 名 FROM employees;

    #方式二:使用空格
    SELECT last_name 姓,first_name 名 FROM employees;

    #案例:查询salary,显示结果为out put
    SELECT salary As "out put" FROM employees;     #建议是加双引号,避免和关键字重复

    #8.去重  distinct

    select distinct 字段名 from 表名;

    #案例:查询员工表中涉及到的所有的部门编号
    SELECT DISTINCT department_id FROM employees;


     #9.+号的作用     CONCAT

    /*
    java中的+号:
    1.运算符,两个操作数都为数值型
    2.连接符,只要有一个操作数为字符串

    mysql中的+号:
    仅仅只有一个功能:运算符

    select 100+90;   两个操作数都为数值型,则做加法运算,输出190
    select '123'+90;   其中一方为字符型,试图将字符型数值转换成数值型,如果转换成功,则继续做加法运算,结果为213
    select 'john'+90;   如果转换失败,则将字符型数值转换成0,结果为90
    select null+10;   只要其中一方为null,则结果肯定为null

    */

    SELECT CONCAT('a','b','c') AS 结果;

    10.【补充】concat函数   拼接字符

    select  concat(字符1.字符2,字符3,……);

    SELECT
     CONCAT(last_name,first_name) AS 姓名
    FROM
     employees;
     

    11.【补充】ifnull函数   判断某字段或表达式是否为null,如果为null,返回指定的值,否则返回原本的值

    select ifnull(字符1,字符2);

    select ifnull(commission_pct,0);

    12

    进阶2:条件查询

    /*语法:
    select
            查询列表
    from
            表名
    where
            筛选条件;

    分类:
    一、按条件表达式筛选

    简单条件运算符:>    <     =       !=    < >    >=    <=

    二、按逻辑表达式筛选
    逻辑运算符:
    &&  ll  !
    and or not


    三、模糊查询
    like
    between and

    in
    is null
    */

    一、按条件表达式筛选

    #案例1:查询工资>12000的员工信息
    SELECT
            *
    FROM
            employees
    wHERE
            salary>12000;

    写成分行不行,写成一行成了, 可恶啊,什么情况?

    SELECT * FROM employees WHERE salary>12000;


    #案例2:查询部门编号不等于90号的员工名和部门编号

    #案例2:查询部门编号不等于90号的员工名和部门编号
    SELECT
                    last_name,
                    department_id
    FROM
                    employees
    WHERE 
                    department_id !=90;   或  department_id <>90;(推荐)

    #二、按逻辑表达式筛选

    #案例1:查询工资在10000到20000之间的员工名、工资以及奖金

    SELECT
            last_name,salary,
            commission_pct
    FROM
            employees
    WHERE
            salary>=10000 AND salary<=20000;

    SELECT last_name,salary,commission_pct FROM employees WHERE
    salary>=10000 AND salary<=20000;

     #案例2:查询部门编号不是在90到1i0之间,或者工资高于15000的员工信息

    SELECT
    *
    FROM
    employees
    WHERE
    department_id<90 OR department_id>110 OR salary>15000;


    #三、模糊查询

    #1.like #一般搭配通配符来使用,可以判断字符型或数值型
    /*
    like特点:   
    一般和通配符搭配使用
    通配符:
    % 任意多个字符,包含0个字符

    _ 任意单个字符
    between and
    in
    is nul1 | is not null

    */
    #案例1:查询员工名中包含字符a的员工信息
    SELECT
            *
    FROM
            employees
    WHERE
            last_name LIKE '%a% ';  #abc

     SELECT * FROM employees WHERE last_name LIKE '%a%';

    #案例2:查询员工名中第三个字符为n,第五个字符为l的员工名和工资
    SELECT first_name,salary 
    FROM employees 
    WHERE last_name LIKE '__n_l%'; 

    #案例3:查询员工名中第二个字符为_的员工名(此时'_'不是一个通配符,而是一个具体的字符,需要转译'\_'或'$_'[需要标注$是转译符])


    SELECT last_name
    FROM employees
    WHERE last_name LIKE '_\_%';

    -- 或
    SELECT last_name
    FROM employees
    WHERE last_name LIKE '_$_%' ESCAPE '$';

     2.between   and 

    /*
    ①使用between and可以提高语句的简洁度
    ②包含临界值
    ③两个临界值不要调换顺序(从小到大)

    */

    #案例1:查询员工编号在100到120之间的员工信息
    SELECT *
    FROM employees
    WHERE employee_id >= 100 AND employee_id<=120;

    #-------
    SELECT * FROM employees
    WHERE employee_id BETWEEN 100 AND 120;

    #3.in
    /*
    含义:
    判断某字段的值是否属于in列表中的某一项
    特点:
    ①使用in提高语句简洁度
    ②in列表的值类型必须—致或兼容
    */

    #案例:查询员工的工种编号是 IT_PROG、AD_VP、AD_PRES中的一个员工名和工种编号
    SELECT last_name,job_id FROM employees
    WHERE job_id = 'IT_PROT' OR job_id = 'AD_VP' OR job_id ='AD_PRES' ;
    #--------------

    SELECT last_name, job_id FROM employees
    WHERE job_id IN('IT_PROT','AD_VP','AD_PRES');

     

    #4、is null
    /*
    =或<>不能用于判断null值
    is null或is not null可以判断null值
    */

    #案例1:查询没有奖金的员工名和奖金率
    SELECT last_name,commission_pct FROM employees
    WHERE commission_pct IS NULL;  #奖金率为空

    #案例2:查询有奖金的员工名和奖金率
    SELECT last_name,commission_pct FROM employees
    WHERE commission_pct IS NOT NULL;   #奖金率非空

    #安全等于<=>

    #案例1:查询没有奖金的员工名和奖金率
    SELECT last_name,commission_pct FROM employees
    WHERE commission_pct <=>NULL;

    #案例2:查询工资为12000的员工信息
    SELECT
    last_name,salary
    FROM
    employees
    wHERE
    salary <=>12000;

    #is null 与 <=>
    IS NULL:仅仅可以判断NUL工值,
    <=>:既可以判断NUL工值,又可以判断普通的数值

     

    三、数据库存储数据的特点


    1、数据存放到表中,然后表再放到库中
    2、一个库中可以有多张表,每张表具有唯一的表名用来标识自己

    3、表中有一个或多个列,列又称为“字段”,相当于java中“属性”

    4、表中的每一行数据,相当于java中“对象”

  • 相关阅读:
    Android : ListView + BaseAdapter-2简单应用
    javaweb基于SSM流浪动物收养平台
    Pandas教程 | 超好用的Groupby用法详解
    Scala运算符及流程控制
    软件测试技术之如何编写测试用例
    Datawhale 202208 GitModel |线性规划 整数规划 多目标规划 灵敏度分析
    Python+Pycharm如何安装第三方库及为何pip安装的包在Pycharm中不能使用的解决方式
    剑指 Offer 45. 把数组排成最小的数
    Unity-mask使用
    Unity2D-怪物AI启发式寻路算法(多目标,任意怪物大小,攻击范围)
  • 原文地址:https://blog.csdn.net/clover_oreo/article/details/126738133
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号