DDL
创建数据库
1 2 3 4 5 6 7 8
| -- 直接创建数据库 CREATE DATABASE 数据库名;
-- 判断数据库是否已经存在,不存在则创建数据库 CREATE DATABASE IF NOT EXISTS 数据库名;
-- 创建数据库并指定字符集 CREATE DATABASE 数据库名 CHARACTER SET 字符集;
|
查看数据库
1 2 3 4 5
| -- 查看所有的数据库 SHOW DATABASES;
-- 查看某个数据库的定义信息 SHOW CREATE DATABASE 数据库名;
|
修改数据库
1 2
| -- 修改数据库默认的字符集 ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
|
删除数据库
1 2
| -- 删除某个数据库 DROP DATABASE 数据库名;
|
使用数据库
1 2 3 4 5
| -- 查看正在使用的数据库 SELECT DATABASE();
-- 改变要使用的数据库 USE 数据库名;
|
创建表
1 2 3 4
| CREATE TABLE 表名 ( 字段名1 字段类型1, 字段名2 字段类型2 );
|
查看表
快速创建一个表结构相同的表
1 2
| -- 创建 A1 表,A1 表结构和 A2 表结构相同 CREATE TABLE A1 LIKE A2;
|
删除表
1 2 3 4 5
| -- 直接删除表 DROP TABLE 表名;
-- 判断表是否存在,如果存在则删除表 DROP TABLE IF EXISTS 表名;
|
修改表结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| -- 添加表列 ADD ALTER TABLE 表名 ADD 列名 类型;
-- 修改列类型 MODIFY ALTER TABLE 表名 MODIFY 列名 新的类型;
-- 修改列名 CHANGE ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;
-- 删除列 DROP ALTER TABLE 表名 DROP 列名;
-- 修改表名 RENAME TABLE 表名 TO 新表名;
-- 修改字符集 character set ALTER TABLE 表名 character set 字符集;
|
DML
插入记录
1 2 3 4 5 6 7 8
| -- 所有的字段名都写出来 INSERT INTO 表名 (字段名1, 字段名2, 字段名3…) VALUES (值1, 值2, 值3);
-- 不写字段名 INSERT INTO 表名 VALUES (值1, 值2, 值3…);
-- 插入部分数据 INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
|
蠕虫赋值(将一张表中的数据复制到另一张表)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| -- 将 表名2 中的所有的列复制到 表名1 中 INSERT INTO 表名1 SELECT * FROM 表名2;
-- 只复制部分列 INSERT INTO 表名1(列1, 列2) SELECT 列1, 列2 FROM 表名2;
-- 创建 表名1,表名1 结构和 表名2 表结构一样 CREATE TABLE 表名1 LIKE 表名2; -- 将 表名2 中的数据添加到 表名1 表中 INSERT INTO 表名1 SELECT * FROM 表名2; -- 如果只想复制 表名1 中 字段名1,字段名2 字段数据到 表名2 表中,两张表都写出相应的列名 INSERT INTO 表名1(字段名1, 字段名2) SELECT 字段名1, 字段名2 FROM 表名2;
|
更新表记录
1 2 3 4 5
| -- 不带条件修改数据(修改所有的行) UPDATE 表名 SET 字段名1=值1, 字段名2=值2;
-- 带条件修改数据 UPDATE 表名 SET 字段名1=值1, 字段名2=值2 WHERE 字段名=值;
|
删除表记录
1 2 3 4 5 6 7 8
| -- 不带条件删除数据 DELETE FROM 表名;
-- 带条件删除数据 DELETE FROM 表名 WHERE 字段名=值;
-- 使用 TRUNCATE 删除表中所有记录 TRUNCATE TABLE 表名;
|
TRUNCATE 和 DELETE 的区别:
|
TRUNCATE |
DELETE |
| 条件删除 |
不支持 |
支持 |
| 事务回滚 |
不支持 |
支持 |
| 清理速度 |
快 |
慢 |
| 高水位重置 |
是 |
否 |
(高水位重置:随着不断地进行表记录的DML操作,会不断提高表的高水位线(HWM),DELETE操作之后虽然表的数据删除了,但是并没有降低表的高水位,随着DML操作数据库容量也只会上升,不会下降。所以如果使用DELETE,就算将表中的数据减少了很多,在查询时还是很和DELETE操作前速度一样。而TRUNCATE操作会重置高水位线,数据库容量也会被重置,之后再进行DML操作速度也会有提升。)
DCL
创建用户
1
| CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
|
| 关键字 |
说明 |
| 用户名 |
将创建的用户名 |
| 主机名 |
指定该用户在哪个主机上可以登录 如果是本地用户可以用localhost 如果想让该用户可以从任意远程主机登录,可以使用通配符% |
| 密码 |
该用户的登录密码 密码可以为空,如果为空则该用户可以不需要密码登录服务器 |
给用户授权
1 2
| -- 用户创建之后,没什么权限!需要给用户授权 GRANT 权限1, 权限2… ON 数据库名.表名 TO '用户名'@'主机名';
|
| 关键字 |
说明 |
| GRANT…ON…TO |
授权关键字 |
| 权限 |
授予用户的权限,如CREATE ALTER SELECT INSERT UPDATE等 如果要授予所有的权限则只用ALL |
| 数据库名.表名 |
该用户可以操作哪个数据库的哪些表 如果要授予该用户对所有数据库和表的相应操作权限则可以用*表示 如 *.* |
| ‘用户名‘@’主机名’ |
给哪个用户授权,注:有2对单引号 |
撤销授权
1
| REVOKE 权限1, 权限2… ON 数据库.表名 FROM '用户名'@'主机名';
|
| 关键字 |
说明 |
| REVOKE…ON…FROM |
撤销授权的关键字 |
| 权限 |
用户的权限,如CREATE ALTER SELECT INSERT UPDATE等 如果要授予所有的权限则只用ALL |
| ‘用户名‘@’主机名’ |
给哪个用户撤销 |
查看权限
1
| SHOW GRANTS FOR '用户名'@'主机名';
|
删除用户
修改管理员密码
1
| mysqladmin -uroot -p password 新密码
|
修改普通用户密码
1
| set password for '用户名'@'主机名' = password('新密码');
|