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;

数据库迁移

  1. 导出源数据库数据和表结构

    mysqldump -h源数据库IP -u用户名 -p密码 数据库名 > 导出文件名.sql
    
  2. 登录目标服务器MySQL

    mysql -h目标数据库IP -u用户名 -p密码
    
  3. 创建目标数据库

    CREATE DATABASE 目标数据库名;
    
  4. 导入数据到目标数据库

    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)

前提:满足第一范式和第二范式。

确保数据库表的每一列都和主键直接相关,而不是间接相关。

posted @ 2021-05-31 11:28  天航星  阅读(77)  评论(0编辑  收藏  举报