1、mysql 正则表达式
查找name字段中以 ‘st’ 字符开头的字符串 select * from table where name regexp '^str';
查找name字段以‘st’字符结尾的字符串 select * from table where name regexp 'str$';
查找name字段中包含‘str’字符串的所有数据 select * from table where name regexp ‘str’;
查找name字段中包含123 和 456 以及包含‘’oo‘’的的字符串 select * from tabel where name regexp '123|456|o{2}'
2、mysql事务
对于操作量大,复杂度高,且关联性很强的sql 一般会组成一个事务来执行,比如人员管理系统,需要删除一个员工,那么就要同步删除他的所有相关信息,如邮箱,文章等
一般来说事务满足四个条件,原子性(要么全部执行完成,要么失败回滚);一致性(数据库在事务执行前后结构保持一致性);隔离性(防止多个事务交叉执行造成数据错乱);
持久性(执行完的数据修改是永久性的)。
mysql中只有innodb引擎支持事务;
begin显示开启一个事务;commit会提交事务;
rollback回滚事务;savepoint identifire 事务中的保存点 可以有多个,rollback to identifire 删除一个事务保存点
set transaction 设置隔离级别 读未提交 读提交 可重复读 串行化
可以用set来改变mysql的自动提交模式 set autocommit 0禁止自动提交 1开启自动提交
savepoint 是数据库事务处理中实现子事务,可以回滚到savepoint儿不影响savepoint创建前的变化,不放弃整个事务
保留点在事务处理完后自动释放 手动删除保留点 release savepoint savepointName
mysql alter 命令 用来是修改 删除表字段
例如:alter table table1 drop i 将table1表中的i字段删除
alter table table1 add i int first | after c 插入第一列 int 插入在c字段后面一列
修改字段类型及名称
alter table table1 modify c char(10) 把字段c的类型从char(1)改成char(10)
alter table table1 change i j bigint(change后面紧跟要修改的字段名及修改后的字段名 及字段类型)
当你修改字段是 可以设置是否包含默认值或者是否设置默认值
如:alter table table1 modify j bigint not null default 100 如果不设置 mysql会默认该字段为null
alter table table1 alter i set defult 100 修改默认值
alter i drop default 删除默认值
engine = myisam 改变表 table1的类型
alter table table1 rename to table2 修改表名称为table2
数据库索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息。
索引是一种特殊的文件(innodb数据表上的索引是表空间的一个组成部分),包含对数据表里所有记录的引用指针,通俗的说,就像一本书的目录。
优点:保证表中的每一行数据的唯一性;增加查询检索速度;加快表与表之间的连接;使用分组和排序字句进行检索时加快检索速度;
缺点:创建和维护索引耗时,数据量越大耗时越久;索引还会占据一部分物理空间;对表进行操作时,索引也会被跟着修改;
创建索引准则:在经常需要被搜索的列上面;作为主键的列上面;经常提供对外连接的列上;经常需要被排序的列上;经常用在where字句的列上。
创建索引:
1、主键索引
方式一:create table student(id INT NOT NULL, name VARCHAR(16)NOT NULL ,PARAMARY KEY(id)) 创建表的时候就添加主键索引
方式二:CRAET INDEX index_name ON student(name); 给表中的某个列添加主键索引
方式三:ALTER student ADD PARAMARY KEY 【indexName】ON(id);使用alter添加主键索引
2、普通索引 char varchar 类型 length可以小于实际字段长度,如果是blob和test必须制定length的长度
方式一:create table student(id INT NOT NULL, name VARCHAR(16)NOT NULL ,INDEX【index_name】(id)【length】) 创建表的时候就添加索引
方式二:CRAET INDEX index_name ON student(name【length】); 给表中的某个列添加索引
方式三:ALTER student ADD INDEX【indexName】ON(id);使用alter修改表结构体
3、唯一索引 被搜索引列的值必须是唯一的,但是允许有空值。
方式一:create UNIQUE index_name ON tableName(name【length】);
方式二:ALTER tableName ADD UNIQUE [indexName] ON(name)
方式三:create table student(id INT NOT NULL, name VARCHAR(16)NOT NULL ,UNIQUE【index_name】(id)【length】) 创建表的时候就添加索引
4、全文索引
CREATE FULLTEXT INDEX indexName ON tableName(name【length】);
删除索引:
ALTER TABLE 表名 DROP INDEX 索引名
DROP INDEX 【索引名】ON 表名
查看表中索引信息 show index from 表名
组合索引
ALTER TABLE student ADD INDEX index_name(name(10),age,sex);