数据库总结

2021/7/12

修改表结构

修改表的名称:alter table oldname rename to newname
修改字段类型:alter table 表名 modify 字段名 字段类型
修改字段名:alter table 表名 change oldcol newcol coltype
添加一列:alter table tabname add newcolname newcoltype first | after xx
删除一列:alter table drop colname;
修改列位置:ALTER TABLE students MODIFY stunum VARCHAR(50) FIRST;
ALTER TABLE students MODIFY stunum VARCHAR(50) AFTER sid;
ALTER TABLE 表名 MODIFY 字段名1 数据类型 FIRST|AFTER 字段名2
将‘’字段1‘’字段移到‘’字段2’字段 前面|后面:
删除表:drop table 表名

2021/7/14

视图

视图:是一个虚拟的表,

  1. 并不储存真正的数据
  2. 可以从一个表,或者多个表组合数据
  3. 减低数据库的难度

注意事项:

  1. 方便查询但不建议增删改查
  2. insert update delete 可以影响原表,不建议
  3. 多表来的数据,增删改会有限制

创建视图:

CREATE VIEW VIEW_stu 
AS
SELECT Sname FROM student

删除视图

DROP VIEW IF EXISTS view_stu

基于的查询

SELECT * FROM view_stu

索引

索引:快速查找, 提高数据库性能
索引的储存分类:B树,哈希表
常见索引类型:

  • 主键索引 唯一、not null
  • 唯一索引 唯一
  • 联合索引 多列
  • 全文索引 模糊查询
  • 普通索引

创建索引:

CREATE INDEX index_stu_born ON student(bornDate) 
CREATE [FULLTEXT|  UNIQUE] INDEX 索引名 ON 表名(字段列表)
ALTER TABLE student ADD INDEX(S-name)

全文索引:

CREATE FULLTEXT INDEX index_stu_class ON student(Class);

唯一索引:

CREATE UNIQUE INDEX index_stu_class ON student(Sno);

查看索引:

SHOW INDEX FROM student;

删除索引:

DROP INDEX index_stu_class ON student;

创建索引的原则:

  1. 选择唯一性的索引
  2. 经常需要排序,分组,联合(group by,order by)的列
  3. 频繁查找的列 select
  4. 经常作为查找条件的列 where
  5. 表连接的列

不适合创建索引:

  1. 数据量不大
  2. 列值不多

写sql注意事项

  1. where 条件后,把有索引的列写在前面
  2. 联合索引,只有索引列同时使用到时,才会使用索引
  3. 索引不是越多越好

2021年/7/16

事务

事务是什么:

是数据库最小的逻辑单位,作为一个整体向数据库提交,要么全部都执行,要么全部都不执行,例如:A转账给B,A钱减少,B钱增加

事务的三大特性

  1. 原子性:事务中包含的操作,要么全部成功,要么全部失败
  2. 一致性:事务执行前后,数据总量是一致的,守恒
  3. 隔离性:事务是独立的,互不影响,互不依赖
  4. 持久性:事务执行完,数据都要持久化到数据库里

开启事务
begin;
一系列操作
失败了,回滚
rollback;
成功时提交
commit

事务隔离级别

  1. 脏读:一个事务进行增删改查,但未提交事务,另一个事务可以读取到为提交的事务
  2. 不可重复读:事务A,前后读的数据不一致
  3. 幻读:某个事务在读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻读。
  4. 串行读:Serializable是最高的隔离级别,性能很低,一般很少用。在这级别下,事务是串行顺序执行的,不仅避免了脏读、不可重复读,还避免了幻读。

四大等级:读未提交(READ UNCOMMITTED)、读提交 (READ COMMITTED)、可重复读 (REPEATABLE READ)、串行化 (SERIALIZABLE)。

  1. 读未提交会读到另一个事务的未提交的数据,产生脏读问题
  2. 读提交则解决了脏读的,出现了不可重复读
  3. 可重复读解决了之前不可重复读和脏读的问题,但是由带来了幻读的问题,幻读一般是针对inser操作
  4. 串行化:解决所有问题,但效率太低了

2021/7/17

存储过程

是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。

无参存储过程

-- 判断如果存在则删除,可以根据实际情况选择使用
drop procedure if exists `存储过程名称`;
-- 创建存储过程
delimiter $$
create procedure 存储过程名称()
begin
	//具体sql语句
end $$

-- 调用存储过程
call 存储过程名称();

有参存储过程

drop procedure if exists `test4`;
-- 创建存储过程
delimiter $$
create procedure test4(in numadd int, out numa int, inout numb int)
begin
		set numa = numadd + 1;
		set numb = numb + numadd;
end $$

-- 调用存储过程
set @a = 0;
set @b = 10;
call test4(1,@a,@b);
select @a, @b;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值