文章目录
- 数据库
- 1.库操作
- 查看数据库:
- 使用数据库
- 创建数据库
- 修改数据库
- 删除数据库
- 2.表操作
- 创建表
- 删除表
- 查询表
- 复制表
- 重命名表
- 添加表的字段
- 修改表的字段
- 删除表的字段
- 3.字段
- 3.1 字段类型
- 数字
- 字符串
- 时间
- DATETIME与TIMESTAMP区别
- 枚举
- 集合
- 约束条件
- 3.2 字段操作
- 插入数据
- 更新数据
- 删除数据
- 查询字段
- 4.权限操作
- 授权表
- 创建用户
- 授权GRANT
- 撤销权限REVOKE
- 查看授权
数据库
1.库操作
查看数据库:
SHOW DATABASES;
SHOW CREATE DATABASE db1;
SELECT DATABASE();
使用数据库
USE db1;
创建数据库
CREATE DATABASE db1 CHARSET utf8;
修改数据库
ALTER DATABASE db1 CHARSET utf8;
删除数据库
DROP DATABASE db1;
2.表操作
创建表
CREATE TABLE t1(
id INT,
name CHAR(10),
);
删除表
DROP TABLE t1;
查询表
DESC t1;
SHOW CREATE TABLE t1; 查看表的结构,加\G
复制表
CREATE TABLE t2 SELECT * FROM t1; 复制整个表
CREATE TABLE t2 SELECT * FROM t1 where id = 5; 复制指定内容到新表,若没有符合条件的内容,则复制一个相同表结构的空表
重命名表
ALTER TABLE t1 RENAME t123;
添加表的字段
ALTER TABLE t1 ADD sex ENUM("male","female"),ADD age INT NOT NULL;
ALTER TABLE t1 ADD sex ENUM("male","female") FIRST;
ALTER TABLE t1 ADD sex ENUM("male","female") AFTER name;
修改表的字段
ALTER TABLE t1 MODIFY name CHAR(15);
ALTER TABLE t1 CHANGE name username CHAR(12);
删除表的字段
ALTER TABLE t1 DROP name;
3.字段
3.1 字段类型
数字
整数:int,tinyint,bigint
INT(4) 字符总宽度4个字节(数字4只表示数据显示格式)
浮点型:double,float,decimal
DECIMAL(8,2) 总位数8位,小数位2位
限定:unsigned无符号 zerofill少于指定宽度时,0填充
字符串
固定长度:CHAR CHAR(12)
可变长度:VARCHAR VARCHAR(18)
CHAR:定长,每条记录该字段长度相同,CHAR(12)代表存储小于12字节的字符会自动补空格到12字节,保存下来(但是不会显示后面空格)
VARCHAR:不定长,开头有1-2字节前缀用来记录字符串长度(一般是1字节),存储长度为字符长度+1
CHAR处理速度更快,VARCHAR存储更灵活,默认将CHAR字符串放在前面,VARCHAR字符串放在后面
TEXT:TINYTEXT TEXT(64KB) MEDIUMTEXT(16MB) LONGTEXT(4GB)
用来存储很长的字符串
BINARY:BINARY VARBINARY
存储二进制字符串
BLOB:TINYBLOB BLOB MEDIUMBLOB LONGBLOB
存储很长的二进制字符串(一般存储声音或图像)
处理速度比较:CHAR>VARCHAR>TEXT
时间
datatime 使用的多
- YEAR: YYYY
- DATE: YYYY-MM-DD
- TIME: HH:MM:SS
- DATETIME: YYYY-MM-DD HH:MM:SS
- DATESTAMP: YYYYMMDD HH:MM:SS
DATETIME与TIMESTAMP区别
- 表示的范围不同
DATETIME:1001-9999
TIMESTAMP:1970-2038 - DATETIME与时区无关,TIMESTAMP与时区有关
- DATETIME存储8字节,TIMESTAMP存储4字节
- DATETIME默认为null,TIMESTAMP默认为当前时间
注意:每次更新记录时,不指定TIMESTAMP数值时,TIMESTAMP数值也会自动更新为当前时间
枚举
ENUM(MALE,FEMALE) 从中选择一个
集合
SET(sing,jump,rap,backetball) 从中选择多个
约束条件
约束条件 | 作用 |
| 约束 (前缀可加constraint,也可以不加) |
| 主键 |
| 外键 |
| 值唯一 |
| 不为空 ; |
| 默认值 |
| 自增长 |
| 非负数 |
| 0填充(INT(4) 设置值为432,显示为0432) |
注意:NOT NULL UNIQUE等价于 PRIMARY
3.2 字段操作
插入数据
INSERT INTO userinfo VALUES(1,"liwei",23);
INSERT INTO userinfo(id,name,age) VALUES(2,"xiaomi",22);
INSERT INTO userinfo(name,age) VALUES ("xiaofang",18),("lihua",33) 插入多条数据
INSERT INTO userinfo(id,name,age)
SELECT id,name,age FROM client WHERE sex="female"; 从别的表中获取数据
更新数据
UPDATE userinfo SET age=22,sex="male" WHERE id=3;
删除数据
DELETE FROM userinfo WHERE id=3;
查询字段
单表查询
多表查询
4.权限操作
datebase数据库->table表->column列
授权表
可以查看用户相应权限的表
user:授权该用户下所有数据库,包括其中的表,字段权限
db:授权一个数据库下所有表,包括其中的字段权限
tables_priv:授权一个表下所有字段权限
columns_priv:授权该字段所有权限
创建用户
CREATE USER 用户 IDENTIFIED BY 明文密码
CREATE USER "xiaoming"@"1.1.1.1" IDENTIFIED BY "123"; 要求用户名:xiaoming 密码:123 主机地址:1.1.1.1
CREATE USER "xiaoming"@"1.1.1.%" IDENTIFIED BY "123"; 要求用户名:xiaoming 密码:123 主机地址:1.1.1.0-1.1.1.255
CREATE USER "xiaoming"@"%" IDENTIFIED BY "123"; 要求用户名:xiaoming 密码:123 主机地址:0.0.0.0-255.255.255.255
%代表通配符
IDENTIFIED BY PASSWORD 后面是密文密码
授权GRANT
GRANT 权限 ON 数据表 TO 用户;
权限:SELECT,UPDATE,ALTER,DROP,DELETE
ALL代表除GRANT以外的所有权限
GRANT SELECT ON *.* TO "xiaoming"@"1.1.1.1" IDENTIFIED BY "123";
GRANT UPDATE(id,name) ON db1.t1 TO "xiaoming"@"1.1.1.1" IDENTIFIED BY "123";
撤销权限REVOKE
REVOKE 权限 ON 数据表 FROM 用户;
REVOKE SELECT ON userinfo.id FROM "xiaoming"@"%";
查看授权
SHOW GRANTS;
SHOW GRANTS FOR "xiaoming"@"123";