MySQL库的管理

博客介绍了数据库相关操作,包括库的基本操作,如创建、删除、修改字符集和查看使用;视图的创建、修改、删除和查看,以及视图与表的区别;还阐述了存储过程与函数,涉及局部变量、创建调用、查看删除,以及IF和WHILE结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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. 视图与表的区别

  1. 关键字不同视图CREATE VIEW AS,表CREATE TABLE
  2. 存储数据 视图不存储实际数据,表存储实际数据。
  3. 修改 视图一般禁止修改,表可以修改

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);
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Starry丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值