一、SQL语言分类
主要分为四类:DDL、DML、DQL、DCL
1、DDL
2、DML
3、DQL
4、DCL
二、SQL语言中常见的数据类型:
大致可以分为7大类:
数据库数值类型有符号和无符号:在创建数据表时,可以指定数值类型属性是否有符号,默认有符号,如果需要定义成无符号,需要用UNSIGNED关键字标识一下。有符号的需要占一个二进制位标识符号,无符号则是全部用来存储数值,所以无符号的范围更大。
三、SQL变量
分为三种类型: 系统变量、用户定义变量、局部变量。
1、系统变量
是MySQL服务器提供,不是用户定义的,属于服务器层面。分为全局变量(GLOBAL)、会话变量(SESSION)。没有指定,默认会话变量。
全局变量(GLOBAL): 全局变量针对于所有的会话。会话变量(SESSION): 会话变量针对于单个会话,在另外一个会话窗口就不生效了。
-- 查看系统变量 (没有)
show session variables ;
show session variables like 'auto%';
show global variables like 'auto%';
select @@global.autocommit;
select @@session.autocommit;
-- 设置系统变量
set session autocommit = 1;
insert into course(id, name) VALUES (6, 'ES');
set global autocommit = 0;
select @@global.autocommit;
2、局部变量:
局部变量是一个能够拥有特定数据类型的对象,用于保存单个数据值,供控制流语句测试以及保存由存储过程返回的数据值等,它的作用范围仅限在程序内部。局部变量必须先定义才能够被引用。且不能一次定义多个局部变量。它的定义语法如下:DECLARE VARIABLE var_name data_type; 其中,var_name指定局部变量的名称,data_type设置局部变量的数据类型及大小。声明了一个变量,可以这样写来赋值操作:DECLARE VARIABLE i int ;SELECT count(*) FROM employee into :i;
这里注意一下,在Firebird数据库中,引用变量的时候使用冒号。在不同的数据库中变量的声明方法可能不尽相同。
3、用户定义变量
用户定义变量 是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用 "@变量名" 使用就可以。其作用域为当前连接。
-- 赋值 (= 或 := 直接赋值 或into赋值)
set @myname = 'itcast';
set @myage := 10;
set @mygender := '男',@myhobby := 'java';
select @mycolor := 'red';
select count(*) into @mycount from tb_user;
-- 使用
select @myname,@myage,@mygender,@myhobby;
select @mycolor , @mycount;
-- 没有赋值也可以查询,会返回NULL
select @abc;
四、SQL语言流程控制:
主要分为选择结构和循环结构两种。
(1)选择结构:根据条件值的不同,选择执行不同的语句序列,其他与条件值不匹配的语句序列则跳过不执行。
IF (条件表达式) THEN 语句1; IF (条件表达式) THEN 语句1; ELSE 语句2;
(2)循环结构:如有一个变量i=0,当i<5的时候i每次加1:
这串代码最终得到的i的值应该是5。
五、触发器
触发器是与表有关的数据库对象,指在insert/update/delete之前(BEFORE)或之后(AFTER),触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整, 日志记录 , 数据校验等操作 。
使用别名OLD和NEW来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。