目录
1. 库的基本操作
库的增 删 改 查,添加EXISTS是为了提高安全性,判断是否存在。这里只给出了库 的字符集修改。
1.1. 创建库
CREATE DATABASE IF NOT EXISTS database1;
创建名为database1的库
1.2. 删除库
DROP DATABASE IF EXISTS database1;
1.3. 修改库的字符集
ALTER DATABASE database1 CHARACTER SET utf8;
1.4. 查看库和使用库
SHOW DATABASES;
USE database1; //使用库database1
查看有哪些库。
2. 视图
视图类似于 指针,将一组SQL语句封装。当表内容发生修改时,可以通过 视图查看部分数据,可跨越多个表。
2.1. 创建视图CREAT VIEW … AS
CREATE VIEW 视图名称 AS 查询语句必须是查询语句
2.2. 修改视图ALTER
修改视图和表的映射关系用ALTER
ALTER VIEW 视图名 AS 查询语句
针对视图一般不允许做插入删除等修改,某些针对表的修改语句,可以实现对视图,进而对原表实现更新。但是这样很不安全一般不这么做,并且限制较大。例如包含group by\分组函数\union、包含子查询、包含联结JOIN等的视图禁止修改,只能ALTER。
2.3. 删除视图DROP
DROP VIEW 视图名1,视图名2
2.4. 查看视图DESC
和表的修改类似
DESC VIEW 视图名1,视图名2
CREATE VIEW view1 AS
SELECT comcat(column1,'(',column2,')') FROM table1; //创建视图
UPDATE table1 SET column1 = '1',column2 = 'a'; //改变原表格数据,视图也会发生变化。
DESC view1;
ALTER VIEW view1 AS
SELECT * FROM table1;
DROP VIEW view1;
2.5. 视图与表的区别
- 关键字不同视图CREATE VIEW AS,表CREATE TABLE
- 存储数据 视图不存储实际数据,表存储实际数据。
- 修改 视图一般禁止修改,表可以修改
3. 存储过程与函数
存储过程与函数 没有本质区别,都是将一系列SQL语句进行封装,类似于方法。而方法的 好处在于 提高代码重用性、操作简化、简化与数据库服务器连接次数。
3.1. 局部变量
作用域仅仅在BEGIN END之中
声明与赋值
DECLARE 变量名 类型;
DECLARE 变量名 类型 DEFAULT 默认值;
SET 变量名 = 值;
SELECT 字段 INTO 变量名 FROM 表名
3.2. 创建 与 调用
存储过程
创建中需要调用DELIMITER改变终止符号,表示存储过程或函数定义结束。参数列表中IN表示作为输入变量,OUT作为输出的变量,INOUT既可以为输入也可以为输出
DELIMITER $
CREATE PROCEDURE 函数名( IN或OUT或INOUT 变量名1 类型1,IN或OUT或INOUT 变量名2 类型2,… )
BEGIN
函数体
END $
DELIMITER ;
调用
CALL 函数名(参数)
函数
函数中必须定义一个输出。
创建为
DELIMITER $
CREATE FUNCTION 函数名( 变量名1 类型1, 变量名2 类型2,… ) RETURNS 类型
BEGIN
函数体
RETURN 变量名
END $
DELIMITER ;
调用
SELECT 函数名(参数);
存储过程与函数的创建与调用很类似,但是有一些区别。存储过程的输入输出可以是多个也可以没有,函数可以没输入但输出必须有一个。
DELIMITER $
CREATE PROCEDURE pro(IN var1 INT,IN var2 VARCHAR(10))
BEGIN
DECLARE i INT;
SELECT var1 INTO i;
SELECT concat(column1,var2) FROM table1 WHERE column1 = 'a';
END$
DELIMITER ;
CALL pro(1,'a');
DELIMITER $
CREATE FUNCTION fun(var1 INT,var2 VARCHAR(10)) RETURNS INT
BEGIN
DECLARE i INT;
SELECT var1 INTO i;
SELECT concat(column1,var2) FROM table1 WHERE column1 = 'a';
RETURN i;
END$
DELIMITER ;
SELECT pro(1,'a');
3.3. 查看与删除
SHOW PROCEDURE 存储过程名
SHOWFUNCTION 函数名
DROP PROCEDURE 存储过程名
DROP FUNCTION 函数名
3.4. IF结构
只能应用在BEGIN 与 END 之中
语法为
BEGIN
IF 条件1 THEN 语句1;
ELSEIF 条件2 THEN 语句2;
ELSEIF 条件3 THEN 语句3;
ELSEIF 条件4 THEN 语句4;
ELSE 语句5;
END IF;
END
3.4. WHILE结构
名称:WHILE 条件 DO
循环体;
IF 条件1 THEN LEAVE 名称;
ELSEIF 条件2 THEN ITERATE 名称;
END IF;
END WHILE;
DELIMITER $
CREATE PROCEDURE pro(IN j INT)
BEGIN
DECLARE i INT DEFAULT 0;
a:WHILE i<= j DO
SET i = i+1;
IF i = 10 THEN LEAVE a; //注意分号位置
END IF; //注意分号
IF MOD(i,2)!=0 THEN ITERATE a;
END IF;
SELECT * FROM city WHERE ID = i;
END WHILE a;
END$
DELIMITER ;
CALL pro(20);