天天看点

MYSQL语法速查

文章目录

      • 数据库
          • 1. 创建数据库
          • 2. 查看数据库
          • 3. 使用数据库
          • 4. 查看数据库下存在表
          • 5. 删除数据库
          • 1. 创建表
          • 2. 查看表
          • 3. 修改表
            • 3.1 修改表名
            • 3.2 修改表的字段(属性)
            • 3.3 修改表的属性数据类型
            • 3.4 增加表的字段
            • 3.5 删除字段
            • 3.6 修改字段的排列顺序
            • 3.7 修改存储引擎
      • 索引
          • 1. 在创建表的时候指定索引字段
          • 2. 在已经创建表上添加索引
          • 3. 删除索引
          • 4. 分析索引执行过程
      • 事务
          • 1.查看MySQL事务类型
          • 2.设置事务类型
          • 3.开启一个事务
          • 4.提交一个事务
          • 5.设置保存点
          • 6.回滚
          • 7.查询数据库隔离级别
          • 8.设置隔离级别
      • 存储引擎
          • 1.查看存储引擎
          • 2.创建表时设定存储引擎
          • 3.在已存在的表上修改存储引擎
          • 4.修改MYSQL存储引擎

数据库

1. 创建数据库

CREATE DATABASE database_name;

2. 查看数据库

SHOW DATABASES;

3. 使用数据库

USE database_name;

4. 查看数据库下存在表

SHOW TABLES;(前提是使用数据库)

5. 删除数据库

DROP DATABASE database_name;

1. 创建表

CREATE TABLE table_name(

属性名1 数据类型 [完整性约束],

属性名2 数据类型 [完整性约束],

属性名3 数据类型 [完整性约束]

… …

);

约束:

primary key 表示当前属性为该表的主键,可以区分不同的行记录

foreign key 修饰的属性为该表的外键,表之间关联使用的键

not null 表示属性不能为空

unique 表示属性的值是唯一的

auto_increment (MYSQL特色)表示属性是自增的,自增类型为整形

default 给属性设定默认值

2. 查看表

2.1 DESC table_name;

2.2 SHOW CREATE TABLE table_name;

3. 修改表

在使用过程中不满足要求可能要修改表

用的SQL关键字是alter

3.1 修改表名

ALTER TABLE old_table_name RENAME[to] new_table_name;

3.2 修改表的字段(属性)

ALTER TABLE table_name CHANGE 旧属性名 新属性名 新属性类型;

3.3 修改表的属性数据类型

ALTER TABLE table_name MODIFY 属性名 属性类型

3.4 增加表的字段

ALTER TABLE table_name ADD 属性名 属性类型 [完整性约束]

新增一个字段放到属性列的第一位;

ALTER TABLE table_name ADD 属性名 属性类型 [完整性约束] FIRST;

增加字段在某些字段后面

ALTER TABLE table_name ADD 属性名 属性类型 [完整性约束] AFTER(属性名,属性名… …);

3.5 删除字段

ALTER TABLE table_name DROP 属性名;

3.6 修改字段的排列顺序

ALTER TABLE table_name MODIFY 属性1 属性类型 first | after 属性2;

3.7 修改存储引擎

ALTER TABLE table_name ENGINE=InNoDB | myISAM;

索引

1. 在创建表的时候指定索引字段

先写下所有的属性,在最后利用INDEX关键字,将需要创建索引的属性名放在括号里

CREATE TABLE table_name(

  属性名 属性类型,

  属性名 属性类型,

  … …

  [unique|fulltext|spatial] INDEX|KEY(属性名) index_name (属性1 [(长度)] [ASC|DESC]) )

解释:中括号[ ]内的都是可选参数,UNIQUE是唯一性索引,FULLTEXT是全文索引,SPATIAL是空间索引,INDEX和KEY是表示索引用到,二者选一即可。长度是索引的长度,必须是字符串类型才可以使用。

这个例子太复杂,通过几个例子看一下

eg:

创建普通索引:

CREATE TABLE student(

  id INT,

  name VARCHAR(20),

  sex BOOLEAN,

  INDEX(id)

)

创建唯一索引

CREATE TABLE index1(

  id INT,

  name VARCHAR(20),

  sex BOOLEAN,

  UNIQUE INDEX(id)

)

2. 在已经创建表上添加索引

CREATE [unique|fulltext|spatial] INDEX idx_id(索引名) ON 表名(属性名);(推荐)

ALTER TABLE 表名 ADD [unique|fulltext|spatial] INDEX index_name(属性名);

3. 删除索引

DROP INDEX index_name ON (表名);

4. 分析索引执行过程

在普通的SELECT语句前面加上EXPLAIN

事务

1.查看MySQL事务类型

select @@autocommit;

0:手动提交事务 1:自动提交事务

2.设置事务类型

set autocommit = 0; -> 设置事务类型为 手动提交事务

set autocommit = 1; -> 设置事务类型为 自动提交事务

3.开启一个事务

begin;

4.提交一个事务

commit;

5.设置保存点

设置一个名称为tg的保存点

savepoint tg;

6.回滚

回滚到tg位置到

rollback to tg;

7.查询数据库隔离级别

select @@TX_ISOLATION;

8.设置隔离级别

set global TX_ISOLATION= ‘xxx’;

xxx为隔离级别名称,分为5点:

  1. TRANSACTION_NONE:表示不支持事务
  2. TRANSACTION_READ_UNCOMMITTED:未提交读。说明在提交前一个事务可以看到另一个事务的变化。这样读”脏”数据,不可重复读和虚读都是被允许的。
  3. TRANSACTION_READ_COMMITTED:已提交读。说明读取未提交的数据是不允许的。这个级别仍然允许不可重复读和虚读产生。
  4. TRANSACTION_REPEATABLE_READ:可重复读。说明事务保证能够再次读取相同的数据而不会失败,但虚读仍然会出现。
  5. TRANSACTION_SERIALIZABLE:可序列化/串行化。是最高的事务级别,它防止读脏数据,不可重复读和虚读。

存储引擎

1.查看存储引擎

SHOW ENGINES;

2.创建表时设定存储引擎

CREATE TABLE table_name ENGINE = INNODB;

3.在已存在的表上修改存储引擎

ALTER TABLE table_name ENGINE= INNODB;

4.修改MYSQL存储引擎

需要修改MySQL配置文件

Windows下文件为“:my.ini

Unix下文件为:my.cof

default-storage-engine = INNODB;

修改完配置修改保存重启就可以生效