数据库基础语句

1、语句以\g或者;结束
2、查看help 或 \h 或者 ? 加相关语句查看帮助手册
3、\c可以取消当前命令的执行
4、SHOW WORNINGS;查看警告信息
5、注释:# 或者 –

sql语句语法规范

  1. 常用MySQL的关键字需要大写
  2. 库名、表名、字段名称等使用小写
  3. 库名、表名、字段名称不要使用关键字,如果必须要使用,则需要反引号(``)将其括起来

常用sql语句

  1. select USER(); 得到登陆的用户
  2. SELECT VERSION();得到版本信息
  3. SELECT NOW();得到当前的日期时间
  4. SELECT DATABASE();得到当前打开的数据库

数据库相关操作

1、创建数据库

CREATE (DATABASE|SCHEMA) db_name;

2、如果不存在则创建数据库

CREATE (DATABASE|SCHEMA) IF NOT EXISTS db_name;

3、创建数据库指定编码格式,charset设置想设置的编码格式,如’UTF8’、‘GBK’

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset ;

4、修改指定数据库的编码方式

ALTER DATABASE db_name DEFAULT CHARACTER SET [=] charset;

5、查看所有数据库

SHOW (DATABASES|SCHEMAS);

6、查看指定数据库创建的详细信息

SHOW CREATE DATABASE db_name;

7、打开数据库

USE db_name;

8、删除数据库

DROP DATABASE db_name;

9、如果存在则删除数据库

DROP DATABASE IF EXISTS db_name;

数据表相关操作

1、创建表

CREATE TABLE [IF NOT EXISTS] tbl_name{字段名称 字段类型 [完整性约束条件],字段名称 字段类型 [完整性约束条件]....}
ENGINE = 存储引擎,CHARSET = 编码方式;

2、查看表结构

- DESC tbl_name;
- DESCRIBE tbl_name;
- SHOW COLUMNS FROM tbl_name;

3、删除指定数据表

DROP TABLE [IF EXISTS] tbl_name;

4、插入记录

INSERT [INTO] tbl_name (column1,column2....) VALUES (..........);

5、查询表所有信息

SELECT * FROM tbl_name;

6、添加字段

ALTER TABLE tbl_name ADD 字段名称 字段属性 [完整性约束条件][FIRST|AFTER 字段名称];

7、删除字段

ALTER TABLE tbl_name DROP 字段名称 ;

8、增加字段默认值

ALTER TABLE tbl_name ALTER 字段名称 SET DEFAULT 默认值;

9、删除默认值

ALTER TABLE tbl_name ALTER 字段名称 DROP DEFAULT;

10、修改字段类型、字段属性

ALTER TABLE tbl_name MODIFY 字段名称 字段类型[字段属性][FIRST|AFTER 字段名称] ;

11、修改字段名称、字段类型、字段属性

ALTER TABLE tbl_name CHANGE 原字段名称 新字段名称 字段类型 字段属性[FIRST|AFTER 字段名称] ;

12、添加主键

ALTER TABLE tbl_name ADD PRIMARY KEY(字段名称);

13、删除主键

ALTER TABLE tbl_name DROP PRIMARY KEY(字段名称);

14、修改数据表名称:

- ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name;
- RENAME TABLE tbl_name TO new_tbl_name;

完整性约束条件

  1. unsigned 无符号,没有负数,从0开始
  2. zerofill 零填充,当数据的显示长度不够的时候可以使用前补0的效果填充至指定长度
  3. NOT NULL 非空约束
  4. DEFAULT 默认值,如果插入记录的时候没有给字段赋值,则使用默认值
  5. PRIMARY KEY 主键,标识记录的唯一性,值不能重复,一个表只能有一个主键,自动禁止为空
  6. UNIQUE KEY 唯一性,一个表中可以有多个字段是唯一索引,同样的值不能重复,NULL除外
  7. AUTO_INCREMENT 自动增长,只能用于数值列,而且配合索引所用
  8. FOREIGN KEY 外键约束

mysql存储引擎

1. MyISAM存储引擎

ENGINE = MyISAM

默认MyISAM得表会在磁盘中产生三个文件

  1. .frm 表结构文件
  2. .MYD数据文件
  3. .MYI 索引文件

可以在创建表的时候制定数据文件和索引文件的存储位置,只有MyISAM表支持
DATA DIRECORY[=] 数据保存的绝对路径
INDEX DIRECTORY [=] 索引文件保存的绝对路径

MyISAM单表最大支持的数据量是 2的64次方条记录,每个表最多可以建立64哥索引,如果是复合索引,每个复合索引最多包含16个列,索引值最大长度是1000B;

MyISAM引擎的存储格式(Row_format)

  1. 定长(FIXED静态)
    (是指字段中不包含VARCHAR/TEXT/BLOB)
  2. 动态(DYNAMIC)
    (字段中包含VARCHAR/TEXT/BLOB)
  3. 压缩(COMPRESSED)

2. InnoDB存储引擎

ENGINE = InnoDB

设计遵循ACID模型,支持事务,具有从服务崩溃中恢复的能力,能够最大限度保护用户的数据

  1. 原子性(Atomiocity)
  2. 一致性(Consistency)
  3. 隔离性(Isolation)
  4. 持久性(Durability)

支持行级锁,可以提升多用户并发时的读写性能。支持外键,保证数据的一致性和完整性

InnoDB拥有自己独立的缓冲池,常用的数据和索引都在缓存中

对于INSERT,UPDATE,DELETE操作,InnoDB会使用一种change buffering的机制来自动优化,还可以提供一致性的读,并且还能够缓存变更的数据,减少磁盘I/O,提高性能

创建InnoDB表之后会产生两个文件:

  1. .frm表结构文件
  2. .jbd数据和索引存储表空间中