MySQL 数据库(分享软件测试需要掌握的知识点)
2018-09-27 本文已影响0人
嫩牛_软件测试_笔记
* 数据库类型
* 关系型数据库
* Mysql, Oracle, DB2
* 非关系型数据库
* MongoDB
* 大数据
* Hive
* 连上Mysql的2种方式:
* 1、命令行
* C:\xampp\mysql\bin 下,shift + 右键, 进入命令行
* mysql -u root -p
* show databases;
* 查看有哪些数据库
* use ranzhi;
* 使用 ranzhi 数据库
* show tables;
* 查看 ranzhi 数据库下有哪些表
* desc sys_user;
* 查看表 sys_user 的结构
* Field 字段名称
* Type 字段类型
* char(30) 表示的是:字符串类型,最大长度为30
* Null 是否允许为空
* Key 标明是否为主键,唯一键之类的
* 主键只能唯一,不能重复
* Default 是否有默认值
* 查询页面‘成员列表’所有的数据
* select * from sys_user ;
* Mysql数据库构成:
* 数据库 (ranzhi )
* 表(59张表,sys_user)
* 表下面是字段(id,account)
* 写法:
* [ranzhi.sys_user.id](http://ranzhi.sys_user.id/)# 数据库名称.表名.字段名
* select [ranzhi.sys_user.id](http://ranzhi.sys_user.id/)from ranzhi.sys_user ;
* use ranzhi;
* select id from sys_user;
* 2、可视化工具
* SQLYog / Navicate / DBeaver
* 安装SQLYog
* 根据自己电脑32/64位,选择对应版本
* 查看32/64位:右键“我的电脑”-属性
* SQLYog连Mysql
* root@localhost
* 连接本机: 主机名: localhost
* 连接他人的:主机名:他人的 ip
* 结合 ranzhi 项目,理解SQL语句
* MySQL: 增删改查
![image](https://img.haomeiwen.com/i10517060/f09487a5785a8d11.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
* /*
* 这是多行注释
* insert into sys_user(id,account,realname,role)
* value ('34','laoniu','老刘','sale') ;
* */
* -- 插入
* INSERT INTO sys_user(id,account,realname,role)
* VALUE ('34','laoniu','老刘','sale') ;
* -- 查询 SQL
* -- select 后面跟的是字段名称(列名),比如id,account; * 代表的是所有字段
* -- from 后面跟的是表名
* SELECT *
* FROM sys_user ;
* -- 查询 然之成员列表页面中,所有的“编号”和“用户名”
* SELECT id,account
* FROM sys_user ;
* -- 查询 然之成员列表页面前2条记录
* SELECT *
* FROM sys_user
* LIMIT 2;
* -- 查询 然之成员列表页面第2条记录
* SELECT *
* FROM sys_user
* LIMIT 1,1;
* -- 查询 然之成员列表页面第3和第4条记录
* SELECT *
* FROM sys_user
* LIMIT 2,2;
* -- 查询 然之成员列表页面总的记录条数
* -- count()
* SELECT COUNT(*)
* FROM sys_user ;
* -- 查询 然之成员列表页面中,“编号”为1,并且“用户名”为'bbb'的记录
* -- where 后跟的是查询条件
* -- and 连接的多个条件,都要成立
* SELECT *
* FROM sys_user
* WHERE id = 1 AND account = 'bbb' ;
* -- 查询 然之“成员列表”页面中,“编号”为1,或者 “用户名”为'bbb'的记录
* SELECT *
* FROM sys_user
* WHERE id = 1 OR account = 'bbb' ;
* -- 然之“成员列表”页面中,按照“编号”降序排序的方式,显示所有的记录
* -- order by
* -- desc 降序
* -- asc 升序
* SELECT *
* FROM sys_user
* ORDER BY id DESC ;
* -- 然之“成员列表”页面中,按照“用户名”字符串升序排序的方式,显示所有的记录
* SELECT *
* FROM sys_user
* ORDER BY account ASC;
* -- 然之“成员列表”页面中,查询“编号”为1,2,3这3个数字的记录
* SELECT *
* FROM sys_user
* WHERE id = 1 OR id =2 OR id =3 ;
* SELECT *
* FROM sys_user
* WHERE id IN (1,2,3) ;
* -- not 不在某范围内
* SELECT *
* FROM sys_user
* WHERE id NOT IN (1,2,3) ;
* -- 然之“成员列表”页面中,查询“编号”大于1小于4的所有记录
* SELECT *
* FROM sys_user
* WHERE id > 1 AND id < 4 ;
* -- 然之“成员列表”页面中,查询“编号”在2和4之间的所有记录
* -- between .. and ...
* SELECT *
* FROM sys_user
* WHERE id BETWEEN 2 AND 4 ;
* -- 然之“成员列表”页面中,查询“真实姓名”姓“张”的所有记录
* -- 模糊查询 like
* -- % 所有,任意的,随便多少个
* SELECT *
* FROM sys_user
* WHERE realname LIKE '张%' ;
* -- 然之“成员列表”页面中,查询“编号”不是“1”的所有记录
* -- <> 不等于
* SELECT *
* FROM sys_user
* WHERE id <> 1 ;
* -- 然之“成员列表”页面中,查询“真实姓名”不是姓“张”的所有记录
* SELECT *
* FROM sys_user
* WHERE realname NOT LIKE '张%' ;
* -- 然之“成员列表”页面中,查询“role”为"sale"的有几个人
* SELECT COUNT(*)
* FROM sys_user
* WHERE role = 'sale' ;
* -- 然之“成员列表”页面中,查询每个"role"分别有几个人
* -- group by 分组
* SELECT role,COUNT(*)
* FROM sys_user
* GROUP BY role ;
* -- 几个常用的函数
* -- count() 统计
* -- max()
* -- 然之“成员列表”页面中,最大“编号”
* SELECT MAX(id)
* FROM sys_user ;
* -- 然之“成员列表”页面中,最小“编号”
* -- min()
* SELECT MIN(id)
* FROM sys_user ;
* -- 然之“成员列表”页面中,“编号”平均值
* -- avg()
* SELECT AVG(id)
* FROM sys_user ;
* -- 编写SQL语句:按照部门字符串倒序方式显示,查询每个部门的平均分数,
* -- 并且部门名称不包含‘sale’
* (方法1)
* SELECT dept_name,AVG(score)
* FROM b
* WHERE dept_name NOT LIKE '%sale%'
* GROUP BY dept_name
* ORDER BY dept_name DESC ;
* (方法2)
* SELECT dept_name,AVG(score)
* FROM b
* GROUP BY dept_name
* HAVING dept_name NOT LIKE '%sale%'
* ORDER BY dept_name DESC ;
* CREATE TABLE b(
* dept_name CHAR(30),
* employee_name CHAR(30),
* score INT(4)
* );
* INSERT INTO b VALUE('sales','ZhangSan','88') ;
* INSERT INTO b VALUE('sales','LiSi','79') ;
* INSERT INTO b VALUE('sales','WangWu','95') ;
* INSERT INTO b VALUE('Tech','ZhangSan2','68') ;
* INSERT INTO b VALUE('Tech','LiSi2','85') ;
* INSERT INTO b VALUE('Tech','WangWu2','66') ;
* INSERT INTO b VALUE('Market','ZhangSan3','77') ;
* INSERT INTO b VALUE('Market','LiSi3','59') ;
* INSERT INTO b VALUE('Market','WangWu3','92') ;
* SELECT * FROM b ;
* -- 清空表数据
* TRUNCATE b ;
* -- 多表查询
* /*
* c表
* id name
* 1 zs
* 2 ls
* 3 ww
* create table c(
* id int(4),
* name char(10)
* );
* insert into c value('1','zs');
* insert into c value('2','ls');
* insert into c value('3','ww');
* select * from c;
* d表
* id English Math
* 1 88 90
* 2 47 98
* create table d(
* id int(4),
* English int(4),
* Math int(4)
* );
* insert into d value('1','88','90');
* insert into d value('2','47','98');
* select * from d;
* */
* -- 查询姓名为 zs 的学生的 English 成绩
* SELECT d.English
* FROM c,d
* WHERE c.id = d.id AND c.name = 'zs' ;
* -- 查询每个学生的总分
* SELECT c.name,(d.English + d.Math)
* FROM c,d
* WHERE c.id = d.id ;
* -- 左连接 left join
* SELECT c.name,(d.English + d.Math)
* FROM c LEFT JOIN d
* ON c.id = d.id ;
* -- 右连接 right join
* SELECT c.name,(d.English + d.Math)
* FROM d RIGHT JOIN c
* ON c.id = d.id ;