掌握MySQL基础部分:
DDL DML(select insert update delete where/group by/having/order by/limit
连接查询left/right/inner join 嵌套子查询 union/union all)
常见函数:now() timestamp() curdate() date(). concat(),uuid()很多函数学会自己查阅
了解MySQL高级部分:
事务/视图/函数/存储过程/触发器/索引…
– 创建账号表
CREATE TABLE account(
account_id VARCHAR(36) COMMENT ‘账号’,
account_name VARCHAR(15) NOT NULL COMMENT ‘账号名称’ ,
balance DECIMAL(10,2) NOT NULL COMMENT ‘账号余额’,
create_time TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP comment ‘创建时间’,
PRIMARY key(account_id) – 使用UUID生成唯一值
);
– 插入两条记录到账号表
INSERT INTO account(account_id,account_name,balance) VALUES(UUID(),‘张三’,1000),(UUID(),‘李四’,2000);
– 创建流水表
create table trans_record(
trans_id varchar(36) COMMENT ‘流水号’,
sender_id varchar(36) NOT NULL COMMENT ‘付款方’,
receiver_id varchar(36) NOT NULL COMMENT ‘收款方’,
trans_balance decimal(10,2) NOT NULL COMMENT ‘交易金额’,
create_time TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP comment ‘创建时间’,
primary key(trans_id), – 使用UUID_SHORT函数生成唯一值
constraint fk_sender_id foreign key(sender_id) references account(account_id),
constraint fk_receiver_id foreign key(receiver_id) references account(account_id)
);
– 插入两条记录到流水表
– 张三给李四转20元
INSERT INTO trans_record(trans_id,sender_id,receiver_id,trans_balance)
VALUES(UUID_SHORT(),‘c279e6df-e612-11eb-be73-00e07061c96e’,‘c27a8321-e612-11eb-be73-00e07061c96e’,20);
– 李四给张三转50元
INSERT INTO trans_record(trans_id,sender_id,receiver_id,trans_balance)
VALUES(UUID_SHORT(),‘c27a8321-e612-11eb-be73-00e07061c96e’,‘c279e6df-e612-11eb-be73-00e07061c96e’,50);
MySQL从5.0.1版本开始提供的功能,是一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了SQL逻辑,不保存查询结果。
数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。使用视图查询数据时,数据库会从真实表中取出对应的数据。因此,视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,显示在视图中的数据也会发生改变。
多个地方用到相同的查询结果。
该查询结果使用的SQL语句比较复杂。
实现了SQL语句的重用
简化了复杂的SQL操作,不必知道其细节
保护数据,提高安全性
CREATE
VIEW``视图名
AS ``查询语句
;
DROP
VIEW ``视图名
1,视图名
2…;
SELECT ... FROM 视图名;
SELECT ... FROM 视图名 WHERE ...;