Linux高级编程——数据库(事务、视图、索引、存储、函数)

子查询:即嵌套查询,就是将一条 SELECT 语句的执行结果当作一个单值、集合或临时表参与另外一个 SELECT 查询。

where:对笛卡尔集进行筛选,having是对分组后的表进行筛选;

AOTU_INCREMENT

设置字段自动递增特性时,其字段必须为key,新增插入时,会以表中最大值为基础+1

事务控制

所谓事物,就是一系列数据库操作,但是它们具有原子性。要么全部成功完成,要么啥操作都没有做。

事务的四大特性:ACID

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离性(Isolation)
  • 持久性(Durability)

事物操作:

  • BEGIN:开启一项新事务

  • START TRANSACTION或BEGIN语句可以开始一项新的事务。

  • COMMIT 提交当前事务,是变更成为永久变更。

  • ROLLBACK 回滚当前事务,取消其变更。

  • SAVEPOINT语句用于设置一个事务保存点,带一个标识符名称。如果当前事务有一个同样名称的保存点,则旧的保存点被删除,新的保存点被设置。ROLLBACK 带上事务保存点

在事物执行过程中如果执行DDL操作会造成隐式提交

视图(View)

就是一张虚表,和真实表的操作方法完全一样,但通常不建议对它进行 DML 操作。

作用:为不同用户或不同需求展现不同的数据,而不是所有原始数据。

创建视图:

CREATE VIEW c_info AS SELECT ... from ...; /*视图作为一个筛选后的新'表'(c_info)*/
/*对视图内的字段进行操作,其真实表中的数据也会相应的进行变化*/

删除视图:

DROP VIEW c_info;/*删除名为c_info的视图*/

索引(Index)

作用:提升查询效率。DBMS会自动基于主键或唯一健创建索引。

创建索引:

CREATE INDEX i_dex ON student (sno);
/*给student表中sno字段创建索引i_dex(sno这个对象是主键或唯一键)*/

删除索引:

DROP INDEX i_dex ON student;
/*删除i_dex在student中的索引*/

存储过程(Procedure)

就是一个没有返回值的函数

输出:
mysql> delimiter //    /*设置分隔符(结束符)*/
 
mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
    -> BEGIN
    ->   SELECT COUNT(*) INTO param1 FROM t;
    -> END
    -> //

调用CALL simpleproc(@a);
/*将t中计数后的值传给a*/

输入
mysql> delimiter //

mysql> CREATE PROCEDURE add_course (IN cno INT, IN cname VARCHAR(50))
    -> BEGIN
    -> INSERT INTO course VALUES (cno, cname, '张三', 2);
    -> SELECT * FROM student;
    -> END
    -> //

DROP PROCEDURE add_course;

删除存储过程:

DROP PROCEDURE add_course;
/*删除add_course的存储过程*/

函数(FUNCTION)

实例:获取成绩

//创建函数:
	->CREATE FUNCTION get_c_score (name VARCHAR(10)) RETURN INT
	->BEGIN
	->DECLARE s1 INT;	/*定义一个变量*/
	->SELECT sc.score INTO s1 FROM student s,course c,score ac WHERE s.sno = sc.sno AND c.cno = sc.sno AND c.cno = sc.cno AND c.name = 'C语言程序设计' AND s.name = name;
	->RETURN S1;
	->END;
//删除函数:
	->DROP FUNCTION get_c_score;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值