本文正在参加「技术专题19期 漫谈数据库技术」活动 ”
MySQL灵魂三问:
什么是mysql?
为什么学mysql?
怎么样掌握mysql(关系型数据库)?
作为一名测试人,掌握数据库常用的操作不可缺少,接下来我们慢慢看这三个问题:
一、什么是MySQL:它是一个存放数据的仓库
二、为什么学MySQL:企业中搭建被测试环境(依赖数据库) ;测试需要用到数据库
三、怎么掌握MySQL:只要掌握 SQL(Struct query language结构化)语言,几乎可以操作 所有的关系型数据库 分成三个部分:
- DDL语言---》数据定义语言(建立库 建立表)
- DML语言==》数据操作语言(数据增删改)+DQL(数据查询语言)
- DCL语言===》数据控制语言
本篇文章主要讲述常用的sql语法:
1、数据库的操作:从创建、查看、删除开始
1、创建数据库
create database 数据库名 default character set = 'utf8';;
#创建数据库
#任何名字 字母数字 下划线组成 数字不要开头
create database aaa default character set = 'utf8';;
2、 查看当前数据库
show databases;
3、使用数据库(建表之前使用的语句)
use aaa;
4、删除数据库
drop database aaa;
2、字段类型
例子:学生表
例子:需求在aaa 数据库中建立 student学生表
包含学号 姓名 考试分数 性别 入学日期 生日
#注意指定数据库 运行 use aaa;
# 注意任何符号都是英文
# 注意男女 两边英文单引号
# 注意最后一个字段后面不要逗号
create table student(
id int,
name varchar(20),
grade float,
sex enum('男','女'),
ruxueriqi date,
birthday datetime
);
3、数据约束
例子2:需求在aaa 数据库中建立 student2学生表
包含学号 主键 姓名 非空 考试分数 默认值 性别 入学日期 生日
# 注意多个约束 空格隔开
create table student222(
id int PRIMARY key auto_increment,
name varchar(20) not null unique ,
grade float default 0,
sex enum('男','女'),
ruxueriqi date,
birthday datetime
);
下面有一段MySQL 查询语句梳理几个相关语法知识。
案例代码:
`select a.blastid,d.apptime,a.charge_approve,
a.blast_batch,
a.plan_blast_time,
a.exe_plan_id,
a.import_flag,
a.rig_type,.......
case when (select "count"(*) from bla_geology_info geo where a.blast_id=geo.blast_id and geo.delete_flag=0)>0
then 'true' else 'false'
END as isShowFlag
from bla_blast_info a
left join exe_plan_month b
on a.exe_plan_id = b.exe_plan_id
left join sys_user c
on a.dynamite_user = c.user_id
left join (select blast_id,isagree,idea,create_time as app_time from bla_charge_approve where delete_flag = '0') d
on a.blast_id = d.blast_id
WHERE a.blast_type = '1' AND a.blast_status > '3' AND a.blast_status < '8' AND a.charge_approve > '1' AND a.delete_flag = '0' ORDER BY cast(a.charge_approve as numeric) ASC , d.app_time DESC , a.create_time DESC`
常用的sql语法
1
查询语句 select xxxx from 表名 ,表示从哪个表进行查询。
其中select 后面内容以“,”分割。
2
select xxxx from 表名 别名,表示这个表用别名替代,如上个语句中的a、b、c等。
3
case when then xx,else xxx ,end as isShowFlag表示符合 when 条件执行 then 后面语句,否则执行 else 后面语句。
eg 案例中case when (select "count"(*) from blageologyinfo geo where a.blastid=geo.blastid and geo.delete_flag=0)>0
then 'true' else 'false' 表示符合条件的爆破量进行上传
end as isShowFlag 起的查询语句别名,后续调用的时候使用别名名称即可。
4
left join 左连接 ,表1左连接表2,以左为主,表示以表1为主,关联上表2的数据,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据。
一句话的意思是:先取交集,再关联到左表。
引申整理出几个连接的常用含义及区分 ,如下表所示:
5
查询语句 select xxxx from 表名 where 查询条件。
where 查询条件后面接所有你要查询的内容,用and连接,这里需要注意order by 使用
order by 1,2,3,4 ,先1排序,1相同的情况下按照2、3、4排序。
6
cast ()数据类型转换函数,文中cast(a.charge_approve as numeric) 表示将字段charge_approve 转换为数字型,以前是字符类型,字符类型的字段不可以进行排序。
7
a.exe_plan_id = b.exe_plan_id 表示 a表的exe_plan_id字段和b表的exe_plan_id 字段进行绑定。
可以这么理解:只有两个表绑定后才能进行相关的查询操作。
总结通用模板:
Select 字段名1,字段名2 case when 条件 then 执行语句 else 执行语句 end as 别名 from 表名 别名 left join on 表连接(a.exe_plan_id = b.exe_plan_id)Where 查询条件(d.app_time DESC)
(左右滑动查看完整代码)