• sql刷题积累的知识点


    牛客

    delete与runcate

    1:处理效率:drop>trustcate>delete
    2:删除范围:drop删除整个表(结构和数据一起删除);trustcate删除全部记录,但不删除表结构;delete只删除数据
    3:高水位线:delete不影响自增ID值,高水线保持原位置不动;trustcate会将高水线复位,自增ID变为1。

    case when

    需要把where条件写在最后;
    case when的正确语法是: case when … then … when … then … else … end,case和end不能缺少! else 可有可无

    CASE WHEN 表达式通常用于对某一列的值进行条件判断,并根据不同条件返回不同的结果。
    例如

    SELECT
        name,
        salary, //这里
        CASE
        //这里都要注意
            WHEN salary >= 10000 THEN '高薪'
            WHEN salary >= 5000 THEN '中薪'
            ELSE '低薪'
        END AS salary_level
    FROM employees;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    大小写转换

    LCASE() 转换成小写
    UCASE()  ->大写
    
    • 1
    • 2

    full join

    PostgreSQL支持 FULL JOIN,也可以使用 FULL OUTER JOIN 来进行全外连接。
    Microsoft SQL Server支持 FULL JOIN,也可以使用 FULL OUTER JOIN。
    Oracle Database支持 FULL JOIN,也可以使用 FULL OUTER JOIN。
    MySQL不直接支持 FULL JOIN,但可以使用 UNION 结合 LEFT JOIN 和 RIGHT JOIN 来模拟实现类似的功能

    on

    on中相同的key匹配上时会产生笛卡尔积
    将两张表中on后key相同的的数据的个数相乘相加

    存储过程语句

    存储过程是一种在数据库内部存储的预编译代码块,它包含了一系列的 SQL 语句和逻辑操作。存储过程可以被数据库系统调用执行,从而实现特定的功能。

    DELIMITER //
    
    CREATE PROCEDURE GetEmployeeCount()
    BEGIN
        DECLARE count INT;
        SELECT COUNT(*) INTO count FROM employees;
        SELECT count;
    END //
    
    DELIMITER ;
    
    调用
    CALL GetEmployeeCount();
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    1. DELIMITER:MySQL 默认使用分号 ; 作为 SQL 语句的结束符。在创建存储过程时,您需要使用 DELIMITER 命令将结束符设置为其他字符(在示例中为 //),以便在存储过程中使用分号。

    2. CREATE PROCEDURE:使用 CREATE PROCEDURE 语句创建存储过程。

    3. BEGIN 和 END:存储过程的主体在 BEGIN 和 END 之间。

    4. DECLARE:使用 DECLARE 声明变量,用于存储过程中的临时数据。

    5. INTO:在查询中使用 INTO 将查询结果存储到变量中。

    6. SELECT 语句:使用 SELECT 查询数据并将结果返回。

    7. DELIMITER :在存储过程创建完毕后,使用 DELIMITER ; 命令将结束符重新设置为分号。

    过程语句分析

    CREATE PROCEDURE [stu].[proc_student]
    @s_no AS int
    AS
    BEGIN
    select * from stu.student where Stu_ID=@s_no
    END
    
    
    
    CREATE PROCEDURE [stu].[proc_student]CREATE PROCEDURE 是用于创建存储过程的关键字。
    
    [stu].[proc_student] 表示存储过程的名称,
    其中 [stu] 是模式(Schema)名称,
    [proc_student] 是存储过程的名称。
    模式用于在数据库中组织和隔离对象,存储过程的完整名称是 [stu].[proc_student]@s_no AS int:这个AS 可以省略
    @s_no 是输入参数的名称,它是存储过程的一个参数,允许在调用存储过程时传递一个整数值。
    AS int 指定了参数的数据类型,这里是整数类型。
    
    
    ASAS 关键字标志存储过程的主体部分的开始。
    
    BEGINBEGIN 标志存储过程主体的开始。
    
    select * from stu.student where Stu_ID=@s_no:
    这是存储过程的主体部分,其中包含了一个 SQL 查询语句。
    
    select * from stu.student 是查询语句,用于从 stu.student 表中检索所有列的数据。
    where Stu_ID=@s_no 是查询的条件,它使用输入参数 @s_no 来限制结果,只返回符合条件的数据。
    ENDEND 表示存储过程主体的结束。
    
    mysql
    CALL proc_student(123);
    
    SQL Server
    两种方式:
    EXEC [stu].[proc_student] @s_no = 123;
    EXEC [stu].[proc_student] 123;
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    函数系列

    ROUND(数值,[保留的小数位数]) 四舍五入再保留
    TRUNCATE(数值,截取的数值) 截取的是,小数点后几位

    各种概念

    缺省值(Default Value)是在数据库中对于某列的默认数据值

    alter

    ALTER TABLE 表名 修改选项 。选项集合:
    
    { ADD COLUMN <列名> <类型> -- 增加列
    
     | CHANGE [COLUMN] <旧列名> <新列名> <新列类型> -- 修改列名或类型
    
     | ALTER [COLUMN] <列名> { SET DEFAULT <默认值> | DROP DEFAULT } -- 修改/删除 列的默认值
    
    | MODIFY [COLUMN] <列名> <类型> -- 修改列类型
    
    | DROP [COLUMN] <列名> -- 删除列
    
    | RENAME TO <新表名> -- 修改表名
    
    | CHARACTER SET <字符集名> -- 修改字符集
    
    | COLLATE <校对规则名> } -- 修改校对规则(比较和排序时用到)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
  • 相关阅读:
    编译器优化:何为SLP矢量化
    微服务架构设计分析
    Electronica上海 Samtec 验证演示 | FireFly™Micro Flyover System™
    【无标题】
    利用已存在的conda环境
    【Matlab】曲线拟合
    23-properties文件和xml文件以及dom4j的基本使用操作
    老卫带你学---leetcode刷题(137. 只出现一次的数字 II)
    shell脚本学习
    Flink(六)【DataFrame 转换算子(下)】
  • 原文地址:https://blog.csdn.net/m0_53313913/article/details/132217149