MySQL高级应用-1


掌握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高级部分:
事务/视图/函数/存储过程/触发器/索引…
 
 

1创建表:


– 创建账号表
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);
 
 
 

2视图

2.1含义:

MySQL从5.0.1版本开始提供的功能,是一种虚拟存在的表,行和列的数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的,只保存了SQL逻辑,不保存查询结果。
数据库中只存放了视图的定义,并没有存放视图中的数据,这些数据都存放在定义视图查询所引用的真实表中。使用视图查询数据时,数据库会从真实表中取出对应的数据。因此,视图中的数据是依赖于真实表中的数据的。一旦真实表中的数据发生改变,显示在视图中的数据也会发生改变。
 

2.2应用场景:

多个地方用到相同的查询结果。
该查询结果使用的SQL语句比较复杂。
 

2.3好处:

实现了SQL语句的重用
简化了复杂的SQL操作,不必知道其细节
保护数据,提高安全性

2.4创建视图

CREATE VIEW``视图名AS ``查询语句;

2.5删除视图

DROP VIEW ``视图名1,视图名2…;

2.6使用视图

SELECT ... FROM 视图名;
SELECT ... FROM 视图名 WHERE ...;

2.7示例:列出流水表详细信息

MySQL高级应用-1_第1张图片
 
MySQL高级应用-1_第2张图片

2.8 示例:查询指定用户的支出和收入详情


 
MySQL高级应用-1_第3张图片
 
 
MySQL高级应用-1_第4张图片

你可能感兴趣的:(数据库,mysql,android,数据库)