MySQL 数据库(分享软件测试需要掌握的知识点)


*   数据库类型
    *   关系型数据库
        *   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](http://upload-images.jianshu.io/upload_images/10517060-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 ;
  


猜你喜欢

转载自blog.csdn.net/weixin_34301132/article/details/87227335