mysql 基础三

阶段一 mysql 单表查询

1.查询所有记录
  1. select * from department;

  2. select * from student;

  3. select * from student_detail;
2.查询选中列记录
  1. select s_name from student;
3.查询指定条件下的记录
  1. select s_name from student where s_id>2;
4.查询后为列取别名
  1. select s_name as 姓名 from student;
5.模糊查询
  1. select * from student where s_name like '赵%' # %代表多个字符
  2. select * from student where s_name like '_春_' # _代表一个字符
6.排序 order by : asc升序(默认) desc降序
  1. select * from student order by dept_id; # 升序

  2. select * from student order by dept_id desc; # 降序
7.限制显示数据的数量LIMIT
  1. # 按学号升序输出前2条数据
  2. select * from student order by s_id limit 2;
  3. # 按学号升序输出 第3条数据后面的2条数据
  4. select * from student order by s_id limit 3,2;
8.常用聚合函数
  1. #求最大年龄
  2. select max(age) from stu_detail;
  3. #求最小年龄
  4. select min(age) from stu_detail;
  5. #求和
  6. select sum(age) from stu_detail;
  7. #求平均数
  8. select avg(age) from stu_detail;
  9. #四舍五入
  10. select round(avg(age)) from stu_detail;
  11. #统计
  12. select count(age) from stu_detail;
9.分组查询 group by
  1. # 对学生表中学院栏进行分组,并统计每个学院各有多少学生
  2. select dept_id 学院,count(dept_id) 学生个数 from student group by dept_id;

  3. # having 分组条件
  4. # having 后的字段必须是select 后出现过的

  5. # 查看哪些学院,只有一个学生
  6. select dept_id 学院,count(dept_id) 学生个数 from student group by dept_id
  7. -> having count(dept_id)=1;

阶段二 musql 子查询

出现在其他SQL语句内的SELECT字句。(select 中 嵌套 select )

  1. # 查出潭州学院中 '软件学院'和'外语学院' 的 id
  2. select tz_id from tanzhou where tz_name='软件学院' or tz_name='外语学院';
  3. +-------+
  4. | tz_id |
  5. +-------+
  6. | 1 |
  7. | 3 |
  8. +-------+
  1.  
  1. # 查出学生表中属于'软件学院' 和 '外语学院' 的学员
  2. select * from student where dept_id in( select tz_id from tanzhou where tz_name='软件学院' or tz_name='外语学院');
  3. +------+--------------+---------+
  4. | s_id | s_name | dept_id |
  5. +------+--------------+---------+
  6. | 1 | 张三 | 3 |
  7. | 3 | 王六 | 1 |
  8. | 6 | 隔壁老王 | 3 |
  9. +------+--------------+---------+

阶段三 mysql 关联查询

1. 内连接 [inner | cross] join
  • 无条件内连接: 又名交叉连接/笛卡尔连接

第一张表种的每一项会和另一张表的每一项依次组合

  1. select * from student inner join tanzhou;
  • 有条件内连接:

    在无条件的内连接基础上,加上一个ON子句

    当连接的时候,筛选出那些有实际意义的记录行来进行拼接

  1. select * from student inner join tanzhou on dept_id=tz_id;
2. 外连接 { lifet | right} join
  • 左外连接: (以左表为基准)

两张表做连接的时候,在连接条件不匹配的时候

留下左表中的数据,而右表中的数据以NULL填充

  1. select * from tanzhou left join student on tz_id=dept_id;

  2. +-------+--------------+------+--------------+---------+
  3. | tz_id | tz_name | s_id | s_name | dept_id |
  4. +-------+--------------+------+--------------+---------+
  5. | 3 | 外语学院 | 1 | 张三 | 3 |
  6. | 2 | 艺术学院 | 2 | 李四 | 2 |
  7. | 1 | 软件学院 | 3 | 王六 | 1 |
  8. | 4 | 语言学院 | 4 | 陈七 | 4 |
  9. | 2 | 艺术学院 | 5 | 郭伟涛 | 2 |
  10. | 3 | 外语学院 | 6 | 隔壁老王 | 3 |
  11. | 5 | 电竞学院 | NULL | NULL | NULL |
  12. +-------+--------------+------+--------------+---------+
  • 右外连接 right join

右外连接: (以右表为基准)

对两张表做连接的时候,在连接条件不匹配的时候

留下右表中的数据,而左表中的数据以NULL填充

  1. select * from student right join tanzhou on tz_id=dept_id;

  2. +------+--------------+---------+-------+--------------+
  3. | s_id | s_name | dept_id | tz_id | tz_name |
  4. +------+--------------+---------+-------+--------------+
  5. | 1 | 张三 | 3 | 3 | 外语学院 |
  6. | 2 | 李四 | 2 | 2 | 艺术学院 |
  7. | 3 | 王六 | 1 | 1 | 软件学院 |
  8. | 4 | 陈七 | 4 | 4 | 语言学院 |
  9. | 5 | 郭伟涛 | 2 | 2 | 艺术学院 |
  10. | 6 | 隔壁老王 | 3 | 3 | 外语学院 |
  11. | NULL | NULL | NULL | 5 | 电竞学院 |
  12. +------+--------------+---------+-------+--------------+
  • 查询没有学员的学院(电竞学员)

  1. select * from student right join tanzhou on tz_id=dept_id where s_id is null;

  2. +------+--------+---------+-------+--------------+
  3. | s_id | s_name | dept_id | tz_id | tz_name |
  4. +------+--------+---------+-------+--------------+
  5. | NULL | NULL | NULL | 5 | 电竞学院 |
  6. +------+--------+---------+-------+--------------+
  • 外连接多张表

    1. mysql> select s_id,s_name,dept_id,tz_name,deptc_id,c_name from student left join tanzhou on dept_id=tz_id left join course on tz_id=deptc_id;
    2.  
    3. +------+--------------+---------+--------------+----------+--------+
    4. | s_id | s_name | dept_id | tz_name | deptc_id | c_name |
    5. +------+--------------+---------+--------------+----------+--------+
    6. | 3 | 王六 | 1 | 软件学院 | 1 | python |
    7. | 2 | 李四 | 2 | 艺术学院 | 2 | java |
    8. | 5 | 郭伟涛 | 2 | 艺术学院 | 2 | java |
    9. | 1 | 张三 | 3 | 外语学院 | 3 | c/c++ |
    10. | 6 | 隔壁老王 | 3 | 外语学院 | 3 | c/c++ |
    11. | 4 | 陈七 | 4 | 语言学院 | 4 | 外语 |
    12. +------+--------------+---------+--------------+----------+--------+

04 mysql 基础三 (进阶)的更多相关文章

  1. 01 mysql 基础一 (进阶)

    mysql基础一 1.认识mysql与创建用户 01 Mysql简介 Mysql是最流行的关系型数据库管理系统之一,由瑞典MySQLAB公司开发,目前属于Oracle公司. MySQL是一种关联数据库 ...

  2. 02 mysql 基础二 (进阶)

    mysql 基础二 阶段一 表约束 1.not null 非空约束 例子: create table tb1( id int, name varchar(20) not null ); 注意 空字符不 ...

  3. mysql基础sql进阶

    回顾前面的基础命令语句 修改数据表 添加字段: alter table 表名 add 字段名 列类型[not null|null][primary key][unique][auto_incremen ...

  4. mysql基础(三)——中级查询

    创建表 CREATE TABLE DEPT( DEPTNO ) PRIMARY KEY, DNAME ) , LOC ) ) ; ,'ACCOUNTING','NEW YORK'); ,'RESEAR ...

  5. mysql基础三(视图、触发器、函数、存储过程、事务、防注入)

    一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 1.创建视图 -格式:CREATE ...

  6. MySQL 基础三 函数(聚合、字符串、时间、条件判断)

    1.聚合 其它:GROUP_CONCAT.avg.sum.count.max.min SELECT typeid,GROUP_CONCAT(goodsname) FROM `goods` GROUP ...

  7. Mysql基础(三)

    #DML语言 /* 数据操作语言 插入:insert insert into 表名(列名,...) values(值1,...); insert into 表名 set 列名=值, 列名=值,... ...

  8. python进阶08 MySQL基础补充

    python进阶08 MySQL基础补充 本次课程都是基于三张表格的使用 一.子查询 #如何找到‘张三’的成绩 #思路:先找到张三的学号,在拿这个张三的学号到成绩表里面去匹配,得出成绩 #如何用一条查 ...

  9. MySQL基础(三)——约束

    MySQL基础(三)--约束 约束是在表上强制执行的数据校验规则,主要用于维护表中数据的完整性以及当数据之间有以来关系时,保护相关的数据不会被删除. 根据约束对列的限制,可以划分为:单列约束(只约束一 ...

随机推荐

  1. JS 排序:冒泡、 二分搜索 /折半搜索 half-interval search

    冒泡排序:  重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来. var arr = [5,0,-56,900,12]; //大的排序次数 for(var i=0; i& ...

  2. June 14th 2017 Week 24th Wednesday

    Love looks not with the eyes, but with the mind. 爱,不在眼里,而在心中. Staring in her eyes and you will find ...

  3. ubuntu git svn 缺少 subversion-perl

    在命令行中输入以下命令:sudo apt-get install subversion-tools等待安装成功即可.

  4. VS中添加预处理宏的方法

    VS中添加预处理宏的方法 除了在.c及.h中添加宏定义之外,还可以采用如下方法添加宏定义: 1.若只需要定义一个宏(如#define DEBUG),可以右键点击工程-->属性-->c/c+ ...

  5. 【luoguP1563】【2016NOIP-High】玩具迷题

    P1563 玩具谜题 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: ...

  6. HDU 1159 Common Subsequence(裸LCS)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1159 Common Subsequence Time Limit: 2000/1000 MS (Jav ...

  7. c#中关于结构体和字节数组转化

    最近在使用结构体与字节数组转化来实现socket间数据传输.现在开始整理一下.对于Marshal可以查阅msdn,关于字节数组与结构体转代码如下: using System; using System ...

  8. ## `nrm`的安装使用

    作用:提供了一些最常用的NPM包镜像地址,能够让我们快速的切换安装包时候的服务器地址:什么是镜像:原来包刚一开始是只存在于国外的NPM服务器,但是由于网络原因,经常访问不到,这时候,我们可以在国内,创 ...

  9. SpringMVC 导入导出Excel文件

    /**  * 下载Excel模板 创建一个新的文件用于下载,创建的文件放在缓存中  *   * @param request  * @param response  */ /*  * @Request ...

  10. mysql快速导入导出数据

    --导入 select * from inhos_genoperation(表名) where UPLOAD_ORG_CODE='***' into outfile '/tmp/inhos_genop ...