sql刷题积累的知识点

文章目录

  • 牛客
    • delete与runcate
    • case when
    • 大小写转换
    • full join
    • on
    • 存储过程语句
      • 过程语句分析
    • 函数系列
    • 各种概念
    • alter

牛客

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;

大小写转换

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

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. 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;


函数系列

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 <校对规则名> } -- 修改校对规则(比较和排序时用到)

你可能感兴趣的:(sql,数据库)