MySQL 基本语句
数据库相关
创建数据库
create database sail;
创建名称为特殊字符或关键字的数据库
create database `create`;
创建数据库(如果不存在)
create database if not exists sail;
删除数据库
drop database sail;
删除数据库(如果存在)
drop database if exists sail;
查看所有数据库
show databases;
切换数据库
use test;
查看数据库创建语句
show create database test;
数据库迁移
-
导出源数据库数据和表结构
mysqldump -h源数据库IP -u用户名 -p密码 数据库名 > 导出文件名.sql
-
登录目标服务器MySQL
mysql -h目标数据库IP -u用户名 -p密码
-
创建目标数据库
CREATE DATABASE 目标数据库名;
-
导入数据到目标数据库
mysql -h目标数据库IP -u用户名 -p密码 目标数据库名 < 导出文件名.sql
表相关
根据表注释查找表
select table_name, table_comment from information_schema.tables where table_comment like '%表注释%';
查看所有表
show tables;
显示表结构
describe grade;
查看表创建语句
show create table student;
查看表结构
desc grade;
复制表结构
create table 新表 like 旧表;
复制表数据
insert into 新表 select * from 旧表;
事务相关
设置事务自动提交
关闭
set autocommit = 0;
开启(默认)
set autocommit = 1;
事务处理流程
关闭事务自动提交
set autocommit = 0;
事务开启
start transaction;
提交:持久化(成功)
commit;
回滚:恢复到之前的样子(失败)
rollback;
开启事务自动提交
set autocommit = 1;
设置事务的保存点
savepoint 保存点名;
回滚到保存点
rollback to savepoint 保存点名;
撤销保存点
release savepoint 保存点名;
索引相关
主键索引(PRIMARY KEY
唯一标识,主键不可以有重复值,只能有一列作为主键
唯一索引(UNIQUE KEY)
避免重复的列出现,唯一索引可以有重复值,多个列都可以标识为唯一索引
常规索引(KEY/INDEX)
默认的,index或者key关键字来设置
全文索引(FULLTEXT)
快速定位数据
查看表的索引
show index from student;
增加一个全文索引:索引名(列名)
alter table student add fulltext key `name`(`name`);
创建一个普通索引
create index id_表名_字段名 on 表名(字段名)
create index id_student_name on student(`name`);
删除索引
alter table student drop index id_student_name;
drop index id_student_name on student;
非全文索引
explain select * from student;
全文索引
explain select * from student where match(name) against('廖');
索引原则
索引不是越多越好。
不要对经常变动数据加索引。
小数据量的表不需要加索引。
索引一般加在常用来查询的字段上。
索引的数据结构
Btree:innoDB默认的数据结构
用户相关
创建用户
create user liaohang identified by '123456';
删除用户
drop user liaohang;
修改密码(当前用户)
set password = password('123456');
修改密码(指定用户)
set password for liaohang = password('123456');
重命名
rename user liaohang to sail;
权限相关
用户授权
赋予所有库和表的所有权限:除了不能授权都可以
grant all privileges on *.* to liaohang;
查询权限
show grants for liaohang;
show grants for root@localhost;
撤销权限
revoke all privileges on *.* from liaohang;
刷新权限
flush privileges;
导入导出
使用命令行导出
mysql -h主机 -u用户名 -p密码 数据库 表 >物理磁盘路径
mysqldump -hlocalhost -uroot -pAsailing648735 test student grade >D:1.sql
导入
登录的情况下
source 备份文件
未登录的情况下
mysql -u用户名 -p密码 <备份文件
mysql -uroot -pAsailing648735 test <D:1.sql
三大范式
第一范式(1NF)
原子性:保证每一列不可再分。
第二范式(2NF)
前提:满足第一范式。
每张表只描述一件事情。
第三范式(3NF)
前提:满足第一范式和第二范式。
确保数据库表的每一列都和主键直接相关,而不是间接相关。
天河有尽身作涯,星海无边前是岸。