1:处理效率:drop>trustcate>delete
2:删除范围:drop删除整个表(结构和数据一起删除);trustcate删除全部记录,但不删除表结构;delete只删除数据
3:高水位线:delete不影响自增ID值,高水线保持原位置不动;trustcate会将高水线复位,自增ID变为1。
需要把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() ->大写
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中相同的key匹配上时会产生笛卡尔积
将两张表中on后key相同的的数据的个数相乘相加
存储过程是一种在数据库内部存储的预编译代码块,它包含了一系列的 SQL 语句和逻辑操作。存储过程可以被数据库系统调用执行,从而实现特定的功能。
DELIMITER //
CREATE PROCEDURE GetEmployeeCount()
BEGIN
DECLARE count INT;
SELECT COUNT(*) INTO count FROM employees;
SELECT count;
END //
DELIMITER ;
调用
CALL GetEmployeeCount();
DELIMITER:MySQL 默认使用分号 ; 作为 SQL 语句的结束符。在创建存储过程时,您需要使用 DELIMITER 命令将结束符设置为其他字符(在示例中为 //),以便在存储过程中使用分号。
CREATE PROCEDURE:使用 CREATE PROCEDURE 语句创建存储过程。
BEGIN 和 END:存储过程的主体在 BEGIN 和 END 之间。
DECLARE:使用 DECLARE 声明变量,用于存储过程中的临时数据。
INTO:在查询中使用 INTO 将查询结果存储到变量中。
SELECT 语句:使用 SELECT 查询数据并将结果返回。
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 指定了参数的数据类型,这里是整数类型。
AS:
AS 关键字标志存储过程的主体部分的开始。
BEGIN:
BEGIN 标志存储过程主体的开始。
select * from stu.student where Stu_ID=@s_no:
这是存储过程的主体部分,其中包含了一个 SQL 查询语句。
select * from stu.student 是查询语句,用于从 stu.student 表中检索所有列的数据。
where Stu_ID=@s_no 是查询的条件,它使用输入参数 @s_no 来限制结果,只返回符合条件的数据。
END:
END 表示存储过程主体的结束。
mysql
CALL proc_student(123);
SQL Server
两种方式:
EXEC [stu].[proc_student] @s_no = 123;
EXEC [stu].[proc_student] 123;
ROUND(数值,[保留的小数位数]) 四舍五入再保留
TRUNCATE(数值,截取的数值) 截取的是,小数点后几位
缺省值(Default Value)是在数据库中对于某列的默认数据值
ALTER TABLE 表名 修改选项 。选项集合:
{ ADD COLUMN <列名> <类型> -- 增加列
| CHANGE [COLUMN] <旧列名> <新列名> <新列类型> -- 修改列名或类型
| ALTER [COLUMN] <列名> { SET DEFAULT <默认值> | DROP DEFAULT } -- 修改/删除 列的默认值
| MODIFY [COLUMN] <列名> <类型> -- 修改列类型
| DROP [COLUMN] <列名> -- 删除列
| RENAME TO <新表名> -- 修改表名
| CHARACTER SET <字符集名> -- 修改字符集
| COLLATE <校对规则名> } -- 修改校对规则(比较和排序时用到)