# SQL 分类
- :数据定义语言
- :数据操作语言
- :数据控制语言
- :数据查询语言
# DDL(定义)
show databases;
:查看所有数据库use 库;
:切换到指定数据库CREATE DATABASE (IF NOT EXISTS) 库名;
:创建指定库名的数据库DROP DATABASE (IF NOT EXISTS) 库名;
:删除指定库名的数据库ALTER DATABASE 库名 CHARACTER SET utf8
:更改文件编码
# 数据类型
# 数值类型
# 日期 / 时间类型
每个时间类型有一个有效值范围和一个 "零" 值,当指定不合法的 MySQL 不能表示的值时使用 "零" 值。
# 字符串类型
# 注意
char(n)
和varchar(n)
的括号的 代表字符的个数char
和varchar
类型类似,但保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换
# 操作表
1 | CREATE TABLE 表名 ( |
DESC 表名;
:查看表的结构DROP TABLE 表名;
:删除表- 修改表
ALTER TABLE 表名 ADD (新列名 数据类型);
:向指定表中,添加一列ALTER TABLE 表名 MODIFY 列名 新数据类型;
:改变指定表的指定列的数据类型ALTER TABLE 表名 change 列名 新列名 数据类型;
:修改指定表中指定列的列名ALTER TABLE 表名 DROP 列名;
:删除指定表的指定列ALTER TABLE 表名 RENAME TO 新表名;
:修改指定表的名字
# DML(插入)
# 插入数据
指定列插入
1 | INSERT INTO |
按创建表的时序顺序插入
1 | INSERT INTO |
# 修改数据
1 | UPDATE 表名 |
# 删除数据
DELETE FROM 表名 [WHERE 条件];
TRUNCATE FROM 表名;
虽然 TRUNCATE
和 DELETE
都可以删除表的所有记录,但原理不同DELETE
的效率没有 TRUNCATE
高
TRUNCATE
是属性 语句,因为它是先 DROP TABLE
,再 CREATE TABLE
而且 TRUNCATE
删除的记录是无法回滚的,但 DELETE
删除的记录是可以回滚的
# DCL(控制)
CREATE USER '用户名'@localhost IDENTIFIED BY '密码';
:创建用户GRANT 权限1, ..., 权限n ON 数据库名.* TO '用户名'@localhost;
:授权GRANT ALL ON 数据库名.* TO '用户名'@localhost;
REVOKE 权限1, ..., 权限n ON 数据库名.* FROM '用户名'@localhost;
:撤销授权SHOW GRANTS FRO '用户名'@localhost;
:查看用户权限DROP USER '用户名'@localhost;
:删除用户use mysql; ALTER USER '用户名'@localhost IDENTIFIED BY '新密码'
:更改用户密码