DML
当对全部列进行添加时,省略列名
# 添加
INSERT INTO student VALUES(100,'CC',456,'NV','1999-6=7','上海');
# 修改
UPDATE student SET `name`='gou' WHERE `adress`='上海';
# 删除
DELETE FROM student WHERE `name`='gou';
# 清空
TRUNCATE TABLE student;
数据表操作
M 总长度,D小数长度;用于确定范围
每条记录最大只能是64k;
我们使用utf8mb4,一个字符占用4个字节,varchar最大长度只能是16383;
BLOB,TEXT并不使用那64k,他们会另外开辟空间
longblob用来存储大对象,能达到几个G.
创建数据表
# 创建表
CREATE TABLE `subject`(
subject_id INT,
subject_Name VARCHAR(20),
subject_hours INT
);
# 列添加
ALTER TABLE `subject` ADD picture LONGBLOB;
# 列修改
ALTER TABLE `subject` MODIFY subject_Name VARCHAR(30);
# 删除表中列
ALTER TABLE `subject` DROP picture;
# 修改列名
ALTER TABLE `subject` CHANGE subject_Name subject_name VARCHAR(90);
# 修改表名
ALTER TABLE `subject` RENAME sub;
# 删除表
DROP TABLE sub;
约束
实体完整性约束
自动增长必须是数值类型,必须是主键,默认从1开始,自动增长1,可以设置开始位置
域完整性约束
引用完整性约束
引用的列必须是有主键的列
CREATE TABLE score(
sno INT,
subject_id INT,
result DOUBLE DEFAULT 60,
exam_date DATETIME,
// 为已创建的键添加外键
CONSTRAINT FOREIGN KEY(sno) REFERENCES student(sno)
);
事务
使用隐式事务,客户端一连接默认开启事务,每次执行事务都会自动提交或回滚,然后再次开启事务
使用显式事务,显示手动开启事务,不会自动提交或者回滚
每条语句都是一个独立的事务
显示开启事务只影响一次,提交后后面的操作仍会自动提交
SET AUTOCOMMIT = 0;之后的都不会自动提交
# 显示开启事务
START TRANSACTION;
# 操作
UPDATE bank SET money=money-1000 WHERE id=1;
UPDATE bank SET money=money+1000 WHERE id=2;
SELECT money FROM bank;
# 显示回滚
ROLLBACK;
# 显示提交
COMMIT;
权限管理
root账户只有本地能使用
# 创建普通账号
CREATE USER chichi IDENTIFIED BY '5978521';
# 授权 ALL 所有权限
GRANT ALL ON chichi.vm_chichi TO chichi;
# 撤销权限
REVOKE ALL ON chichi.vm_chichi FROM chichi;
# 删除用户
DROP USER chichi;
视图
一般仅用于查询