mysql学习笔记三

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);

posted @ 2019-06-14 09:03  头大点怎么了  阅读(123)  评论(0编辑  收藏  举报