MySQL数据库
一、命令(二)
-
union 用来连接两个以上的select语句结果组合到一个结果集中(联合查询)
#语法: select 列 from 表1 union select 列 from 表2; # 在SQLServer中,用来批量插入多条数据 insert into 表名(字段1,字段2....) select '值1','值2'... union select '值1','值2'... union select '值1','值2'... union select '值1','值2'... union select '值1','值2'...
-
正则表达式
a) ^ 匹配输入字符串的开始位置(拖字符) 以xxx开始
#语法: select 列 from 表名 where 列 regexp ‘^字符’; # ^ 以xxx开头 # regexp:用来匹配后面的规则(要使用正则表达式查询,必须要使用该关键字)
b) $匹配输入字符串的结束位置
#语法: select 列 from 表名 where 列 regexp ‘字符$’; # $ 以xxx结尾
c) 查询 “包含某字符” 的所有字符串
#语法: select 列 from 表名 where 列 regexp ‘字符’;
-
事务:MySQL 事务主要用于处理操作量大,复杂度高的数据。(批量处理一些数据量大的业务时,会使用到事务)
a) 在mysql中只有 “innoDB 存储引擎” 支持事务
b) 事务用来维护数据库的 “完整性”,要么都执行要么都不执行
c) 事务主要用来管理增、删、改
-
事务的四个特性
原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
10条SQL
5条失败了,
一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
1000 张 + 1 李 = 1001元
500张 + 501李 = 1001元
隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
-
处理事务的关键字
a) Begin 或者START TRANSACTION 开启事务
b) Commit 提交事务
c) Rollback 回滚事务
-
索引
a) MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度
b) 虽然索引大大提高了查询速度,同时却会降低更新表的速度,消耗数据库的性能
c) 索引一般适用于大批量的数据
-
创建索引
#语法: create index 索引名 on 表名(列名); #语法: alter table 表名 add index 索引名 (列名);
-
显示索引
#语法: show index from 表名;
-
删除索引
语法: drop index 索引名 on 表名;
-
索引的分类
a) 普通索引
b) 唯一索引:当你给表设置了唯一约束后,自动会生成唯一索引
c) 主键索引:当你给表设置了主键约束后,自动会生产
d) 组合索引:ALTER TABLE 表名 ADD INDEX 索引名 (name,city,age);
e) 全文索引:进行全表扫描,消耗性能
-
临时表
# a) MySQL 临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。 # b) Mysql 3.23版本后可用 #语法: create temporary table 表名 (字段 类型 [属性]);
-
视图
创建视图是指在已经存在的MySQL数据库表上建立虚拟表。视图可以建立在一张表,也可以建立在多张表。
#创建视图语法: create view <视图名> as <select 语句>; #注意: 1.视图定义中引用的表必须存在 2.视图定义中不能引用临时表 3.视图一般只用做查询,切勿对视图进行增删改,会影响源表数据
#查询视图语法: select * from <视图名>;
#查看视图定义: describe|desc <视图名>;
#删除视图语法: drop view <视图名>;