数据库基础语句
1、语句以\g或者;结束
2、查看help 或 \h 或者 ? 加相关语句查看帮助手册
3、\c可以取消当前命令的执行
4、SHOW WORNINGS;查看警告信息
5、注释:# 或者 –
sql语句语法规范
- 常用MySQL的关键字需要大写
- 库名、表名、字段名称等使用小写
- 库名、表名、字段名称不要使用关键字,如果必须要使用,则需要反引号(``)将其括起来
常用sql语句
- select USER(); 得到登陆的用户
- SELECT VERSION();得到版本信息
- SELECT NOW();得到当前的日期时间
- 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;
完整性约束条件
- unsigned 无符号,没有负数,从0开始
- zerofill 零填充,当数据的显示长度不够的时候可以使用前补0的效果填充至指定长度
- NOT NULL 非空约束
- DEFAULT 默认值,如果插入记录的时候没有给字段赋值,则使用默认值
- PRIMARY KEY 主键,标识记录的唯一性,值不能重复,一个表只能有一个主键,自动禁止为空
- UNIQUE KEY 唯一性,一个表中可以有多个字段是唯一索引,同样的值不能重复,NULL除外
- AUTO_INCREMENT 自动增长,只能用于数值列,而且配合索引所用
- FOREIGN KEY 外键约束
mysql存储引擎
1. MyISAM存储引擎
ENGINE = MyISAM
默认MyISAM得表会在磁盘中产生三个文件
- .frm 表结构文件
- .MYD数据文件
- .MYI 索引文件
可以在创建表的时候制定数据文件和索引文件的存储位置,只有MyISAM表支持
DATA DIRECORY[=] 数据保存的绝对路径
INDEX DIRECTORY [=] 索引文件保存的绝对路径
MyISAM单表最大支持的数据量是 2的64次方条记录,每个表最多可以建立64哥索引,如果是复合索引,每个复合索引最多包含16个列,索引值最大长度是1000B;
MyISAM引擎的存储格式(Row_format)
- 定长(FIXED静态)
(是指字段中不包含VARCHAR/TEXT/BLOB) - 动态(DYNAMIC)
(字段中包含VARCHAR/TEXT/BLOB) - 压缩(COMPRESSED)
2. InnoDB存储引擎
ENGINE = InnoDB
设计遵循ACID模型,支持事务,具有从服务崩溃中恢复的能力,能够最大限度保护用户的数据
- 原子性(Atomiocity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
支持行级锁,可以提升多用户并发时的读写性能。支持外键,保证数据的一致性和完整性
InnoDB拥有自己独立的缓冲池,常用的数据和索引都在缓存中
对于INSERT,UPDATE,DELETE操作,InnoDB会使用一种change buffering的机制来自动优化,还可以提供一致性的读,并且还能够缓存变更的数据,减少磁盘I/O,提高性能
创建InnoDB表之后会产生两个文件:
- .frm表结构文件
- .jbd数据和索引存储表空间中