Enciclopedia de sentencias SQL [300 palabras clave]

1. Operación de consulta

Manipulación de datos

secuencia Palabra clave anotación Ejemplo Observaciones
1. Seleccione Recuperar datos seleccione * de test_name;
2. insertar Agregar fila de datos insertar en test_name (id, nombre, edad, sexo) valores (1, 'aaa', 12, '女');
insertar en table_name (id, name, age, sex) valores (1, 'aaa', 12, '女');
insertar en new_table_name select * from table_name;
3. Eliminar Eliminar fila de datos eliminar de table_name donde edad = 12;
4. truncar Eliminar todas las filas de datos truncar nombre_tabla;
5. actualizar Actualizar fila de datos actualizar table_name set age = 13 donde id = 1;
6. distinto Devolver valores únicos seleccione distinto sexo, edad de table_name;
7. dónde Declaraciones condicionales seleccione * de table_name donde edad = 12;
8. y versus seleccione * de table_name donde edad = 11 y sexo = '男';
9. o o seleccione * de table_name donde edad = 11 o sexo = '男';
10. ordenar por Ordenar seleccionar * de table_name orden por sexo;
11. agrupar por combinación seleccione * del grupo table_name por sexo;
12. teniendo Las condiciones de agregación son similares a donde seleccione el sexo, prom (edad) del grupo table_name por sexo que tenga prom (edad)> 10;
12. parte superior Seleccione la fila de datos inicial seleccione los 10 mejores sexos, edad de table_name; declaración de soporte de sqlserver
13. límite Seleccionar fila de datos seleccione * de table_name límite 2; Declaración de soporte de MySQL (límite de compensación de número de filas, número de filas) (límite de número de filas)
14. me gusta % _ Condiciones difusas, comodines seleccione * de table_name donde nombre como '% a%'; % Uno o más caracteres, _ un carácter [! Xx] no contiene
15. en Contiene seleccione * de table_name donde nombre en ('aaa');
dieciséis. Entre Entre los dos seleccione * de table_name donde la edad entre 10 y 12;
17. unirse a la izquierda Obras completas de Zuo unirse a la derecha Obras completas correctas
18. unión externa completa Trabajos completos seleccione * from table_name left join new_table_name en table_name.id = new_table_name.id
19. unión / unión todos Concatenación de tablas seleccionar * de la unión de nombre_tabla seleccionar * de nuevo_nombre_tabla; unión no repite unión todos todos
20. como Alias seleccione * de table_name como;
21. existe Presencia o ausencia select * from table_name donde existe (seleccione age from new_table_name donde table_name.id = id y age> 12);
22. medio Extracción de personajes select mid(name,1,1) from table_name; mysql支持
23. substring 提取字符 select substring(name,1,1) from table_name;
24. regexp 正则表达式 select * from table_name where name regexp ‘^a’;
25. over 开窗函数 select *,row_number() over(order by sex) as a from table_name; msyql8.0以上及sqlserver支持

支持函数

函数 注解 函数 注解 函数 注解
取合函数
avg() 平均值 count() 计数 first() 第一个
last() 最后一个 max() 最大值 min() 最小值
sum() 求和
Scalar函数
ucase() 转大写 lcase() 转小写len() 长度
round() 四舍五入 format() 格式化
mysql时间函数
now() 当前日期时间 curdate() 当前日期 curtime() 当前时间
date() 当前日期 extract() date_add() 后几天
date_sub() 前几天 datediff() 日期间天数 date_format() 自定义格式
sql server 时间函数
getdate() 当前日期时间 datepart() 日期、时间 dateadd() 几天前或后
datediff() 日期间天数 convert() 字定义格式
窗口函数
partition by 分区 order by 分组 frame 当前子集
row_number 分配序列号 rank() 排名 dense_rank() 等级序列
percent_rank() 百分数等级 cume_dist() 累积分布
first_value() 第一行值 last_value() 最后一行 lag() 前N行值
nth_value() 框架n行返回参数值 ntile() 窗口指定排名

滑动窗口:

函数 注解 函数 注解 函数 注解
expr preceding 前几行 expr following 后几行
unbounded preceding 分区第一行 unbounded following 分区最后一行
current row 边界是当前行

示例,前一行与后一行记录的平均数 rows between frame_start and frame_end

函数 注解 示例
rows 行对象 select * ,avg(age) over(partition by sex order by id rows between 1 preceding and 1 following ) avg_age from table_name;
range 值对象 select * ,avg(age) over(partition by sex order by create_date range between interval 1 day preceding and interval 1 day following) avg_age from table_name;

更多支持函数参考:函数大全 如:数学函数,统计函数 等

表、字段属属性函数

序列 关键字 注解 实例 备注
1. primary key 主键
2. unique 约束唯一性
3. foreign key 外键 foreign key(new_col) references table_name(id)
4. check 检查约束 CHECK(salary>0 AND salary<100)
5. default 默认值 column varchar(20) default ‘xiamen’
6. not null 非空
7. auto increment 自增主键

系统函数

序列 关键字 注解 实例 备注
1. show databases; 查看数据库表
2. show tables; 查看当前数据库所有表
3. show create table table_name; 查看构造表函数
4. show procedure status where db=‘sql’; 查看数据库函数
5. show create procedure sql.delete_name; 查看存储过程函数
6. app_name() 当前应用程序名称
7. coalesce()

表操作

序列 关键字 注解 实例 备注
1. create table 创建表 create table test_name (id int,name varchar(20),age smallint ,sex char(2));
2. create table 复制表 create table new_table_name select * from table_name; mysql支持语句
3. select into 复制表 select * into new_table_name from table_name; sqlserver支持语句
4. drop table 删除表 drop table test_name;
5. select into 备份表 select * into new_table_name from table_name;
6. create temporary table 临时表
7. alter table 修改表结构 alter table test_name add height FLOAT(2); alter table test_name drop age;
8. create index 创建索引 create [qnique] index id on table_name(id); 可选参数qnique 唯一索引
9. drop index 删除索引 drop index id on table_name;
10. create view 创建视图 create view table_name_view as select sex,avg(age) from table_name group by sex;
11. drop view 删除视图 drop view table_name_view;
12. create procedure 创建存储过程
13. drop procedure 删除存储过程
14. create trigger 创建解发器
15. drop trigger 删除解发器
16. create schema 数据库添加新模式
17. drop schema 删除模式
18. create domain 创建数据值域
19. drop domain 删除域值

二、视图

函数 代码 示例
create view 创建视图 create view table_name_view as select sex,avg(age) from table_name group by sex;
drop view 删除视图 drop view table_name_view;

三、存储过程函数

序列 函数 代码 示例
1. create procedure 创建存储过程 create procedure p_name() begin select * from table_name; end ;
2. alter procedure 修改存储过程 特征 alter procedure p_name comment ‘test’;
3. drop procedure 删除存储过程

函数
4. if…then… else… end if 条件
5. case …when…then…when…then…end case 条件
6. while… do…end while 条件循环
7. repeat…until …end repeat 条件循环
8. loop…end loop 循环
9. iterate 引用复合语句

存储过程示例

delimiter $$  //定义结束字符

//声明存储过程
create [definer={
   
   user | current_user}] --定义函数人员,默认登入用户
	procedure sp_name ( [proc_parameter[,...]]) --定义名称
		[characteristic ...] routine_body
proc_parameter:
	[ in|out|inout] param_name type   --程序参数,输出,输出

characteristic:
	comment 'string'
	| language sql
	| [not] deterministic
	| { contains sql | no sql | reads sql data | modifies sql data }
	| sql security { definer | invoker }

routine_body:
	valid sql routine statement

//存储过程开始与结束
[begin_lable:] BEGIN  --语句的开始,可以给语句赋予标签,增加可读性
	[statement_list]
	...
END [end_lable]

delimiter; --将语句的结束符恢复

输出函数实例:删除给定人员所有信息

create procedure delete_name(in p_name varchar(20))
begin
	delete from table_name where name=p_name;
end

call delete_name('aaa'); --调用函数

输出函数实例:查看平均年龄

create procedure out_avg_age(out p_avg_age integer)
begin
	declare test_val_1 int; --声明变量方式一 局部变量
	set test_val_1=100; 
	set @test_val_2=200; --声明变量方式二 (类似全局变量)

	set p_avg_age=(select avg(age) from table_name);
	set p_avg_age=p_avg_age+test_val_1+@test_val_2;
end;

call out_avg_age(@test);
select @test;

alter procedure 存储过程名 [ 特征 … ]

序列 代码 解释
1. CONTAINS SQL 表示子程序包含 SQL 语句,但不包含读或写数据的语句。
2. NO SQL 表示子程序中不包含 SQL 语句。
3. READS SQL DATA 表示子程序中包含读数据的语句。
4. MODIFIES SQL DATA 表示子程序中包含写数据的语句。
5. SQL SECURITY { DEFINER INVOKER }
6. DEFINER 表示只有定义者自己才能够执行。
7. INVOKER 表示调用者可以执行。
8. COMMENT ‘string’ 表示注释信息。

游标

构造游标 declare cursor_name cresor for select_statement;
打开游标 open cursor_name;
使用游标 fetch cursor_name into var_name[,var_name]…
关闭游标 close cursor_name;

示例

drop procedure if exists p_cursor; --删除函数
create procedure p_cursor(in num int(11),out result varchar(100)) --创建函数
begin
declare p_name varchar(10);
declare p_age int(11);
declare done int default 0;
declare count int(11) default 0;
declare cur_demo cursor for select name,age from table_name; --定义游标
-- declare continue handler for sqlstate '02000' set done=1; --信息状态
open cur_demo; --打开游标
	repeat --循环
	fetch cur_demo into p_name,p_age; -- 提取游标值
		if num=count then
			select concat_ws(',',result,p_name,p_age) into result;
			set done=true;
		else 
			set count=count+1;
		end if;
	until done -- 循环条件
	end repeat; --关闭循环
	close cur_demo; -- 关闭游标
end;

call p_cursor(2,@test);  --调用函数
select @test;

四、事件

五、报表

六、备份

Supongo que te gusta

Origin blog.csdn.net/rankiy/article/details/109245621
Recomendado
Clasificación