04 mysql 基础三 (进阶)
mysql 基础三
阶段一 mysql 单表查询
1.查询所有记录
select * from department;
select * from student;
select * from student_detail;
2.查询选中列记录
select s_name from student;
3.查询指定条件下的记录
select s_name from student where s_id>2;
4.查询后为列取别名
select s_name as 姓名 from student;
5.模糊查询
select * from student where s_name like '赵%' # %代表多个字符
select * from student where s_name like '_春_' # _代表一个字符
6.排序 order by : asc升序(默认) desc降序
select * from student order by dept_id; # 升序
select * from student order by dept_id desc; # 降序
7.限制显示数据的数量LIMIT
# 按学号升序输出前2条数据
select * from student order by s_id limit 2;
# 按学号升序输出 第3条数据后面的2条数据
select * from student order by s_id limit 3,2;
8.常用聚合函数
#求最大年龄
select max(age) from stu_detail;
#求最小年龄
select min(age) from stu_detail;
#求和
select sum(age) from stu_detail;
#求平均数
select avg(age) from stu_detail;
#四舍五入
select round(avg(age)) from stu_detail;
#统计
select count(age) from stu_detail;
9.分组查询 group by
# 对学生表中学院栏进行分组,并统计每个学院各有多少学生
select dept_id 学院,count(dept_id) 学生个数 from student group by dept_id;
# having 分组条件
# having 后的字段必须是select 后出现过的
# 查看哪些学院,只有一个学生
select dept_id 学院,count(dept_id) 学生个数 from student group by dept_id
-> having count(dept_id)=1;
阶段二 musql 子查询
出现在其他SQL语句内的SELECT字句。(select 中 嵌套 select )
# 查出潭州学院中 '软件学院'和'外语学院' 的 id
select tz_id from tanzhou where tz_name='软件学院' or tz_name='外语学院';
+-------+
| tz_id |
+-------+
| 1 |
| 3 |
+-------+
# 查出学生表中属于'软件学院' 和 '外语学院' 的学员
select * from student where dept_id in( select tz_id from tanzhou where tz_name='软件学院' or tz_name='外语学院');
+------+--------------+---------+
| s_id | s_name | dept_id |
+------+--------------+---------+
| 1 | 张三 | 3 |
| 3 | 王六 | 1 |
| 6 | 隔壁老王 | 3 |
+------+--------------+---------+
阶段三 mysql 关联查询
1. 内连接 [inner | cross] join
无条件内连接: 又名交叉连接/笛卡尔连接
第一张表种的每一项会和另一张表的每一项依次组合
select * from student inner join tanzhou;
有条件内连接:
在无条件的内连接基础上,加上一个ON子句
当连接的时候,筛选出那些有实际意义的记录行来进行拼接
select * from student inner join tanzhou on dept_id=tz_id;
2. 外连接 { lifet | right} join
左外连接: (以左表为基准)
两张表做连接的时候,在连接条件不匹配的时候
留下左表中的数据,而右表中的数据以NULL填充
select * from tanzhou left join student on tz_id=dept_id;
+-------+--------------+------+--------------+---------+
| tz_id | tz_name | s_id | s_name | dept_id |
+-------+--------------+------+--------------+---------+
| 3 | 外语学院 | 1 | 张三 | 3 |
| 2 | 艺术学院 | 2 | 李四 | 2 |
| 1 | 软件学院 | 3 | 王六 | 1 |
| 4 | 语言学院 | 4 | 陈七 | 4 |
| 2 | 艺术学院 | 5 | 郭伟涛 | 2 |
| 3 | 外语学院 | 6 | 隔壁老王 | 3 |
| 5 | 电竞学院 | NULL | NULL | NULL |
+-------+--------------+------+--------------+---------+
右外连接 right join
右外连接: (以右表为基准)
对两张表做连接的时候,在连接条件不匹配的时候
留下右表中的数据,而左表中的数据以NULL填充
select * from student right join tanzhou on tz_id=dept_id;
+------+--------------+---------+-------+--------------+
| s_id | s_name | dept_id | tz_id | tz_name |
+------+--------------+---------+-------+--------------+
| 1 | 张三 | 3 | 3 | 外语学院 |
| 2 | 李四 | 2 | 2 | 艺术学院 |
| 3 | 王六 | 1 | 1 | 软件学院 |
| 4 | 陈七 | 4 | 4 | 语言学院 |
| 5 | 郭伟涛 | 2 | 2 | 艺术学院 |
| 6 | 隔壁老王 | 3 | 3 | 外语学院 |
| NULL | NULL | NULL | 5 | 电竞学院 |
+------+--------------+---------+-------+--------------+
查询没有学员的学院(电竞学员)
select * from student right join tanzhou on tz_id=dept_id where s_id is null;
+------+--------+---------+-------+--------------+
| s_id | s_name | dept_id | tz_id | tz_name |
+------+--------+---------+-------+--------------+
| NULL | NULL | NULL | 5 | 电竞学院 |
+------+--------+---------+-------+--------------+
外连接多张表
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; +------+--------------+---------+--------------+----------+--------+
| s_id | s_name | dept_id | tz_name | deptc_id | c_name |
+------+--------------+---------+--------------+----------+--------+
| 3 | 王六 | 1 | 软件学院 | 1 | python |
| 2 | 李四 | 2 | 艺术学院 | 2 | java |
| 5 | 郭伟涛 | 2 | 艺术学院 | 2 | java |
| 1 | 张三 | 3 | 外语学院 | 3 | c/c++ |
| 6 | 隔壁老王 | 3 | 外语学院 | 3 | c/c++ |
| 4 | 陈七 | 4 | 语言学院 | 4 | 外语 |
+------+--------------+---------+--------------+----------+--------+
04 mysql 基础三 (进阶)的更多相关文章
- 01 mysql 基础一 (进阶)
mysql基础一 1.认识mysql与创建用户 01 Mysql简介 Mysql是最流行的关系型数据库管理系统之一,由瑞典MySQLAB公司开发,目前属于Oracle公司. MySQL是一种关联数据库 ...
- 02 mysql 基础二 (进阶)
mysql 基础二 阶段一 表约束 1.not null 非空约束 例子: create table tb1( id int, name varchar(20) not null ); 注意 空字符不 ...
- mysql基础sql进阶
回顾前面的基础命令语句 修改数据表 添加字段: alter table 表名 add 字段名 列类型[not null|null][primary key][unique][auto_incremen ...
- mysql基础(三)——中级查询
创建表 CREATE TABLE DEPT( DEPTNO ) PRIMARY KEY, DNAME ) , LOC ) ) ; ,'ACCOUNTING','NEW YORK'); ,'RESEAR ...
- mysql基础三(视图、触发器、函数、存储过程、事务、防注入)
一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. 1.创建视图 -格式:CREATE ...
- MySQL 基础三 函数(聚合、字符串、时间、条件判断)
1.聚合 其它:GROUP_CONCAT.avg.sum.count.max.min SELECT typeid,GROUP_CONCAT(goodsname) FROM `goods` GROUP ...
- Mysql基础(三)
#DML语言 /* 数据操作语言 插入:insert insert into 表名(列名,...) values(值1,...); insert into 表名 set 列名=值, 列名=值,... ...
- python进阶08 MySQL基础补充
python进阶08 MySQL基础补充 本次课程都是基于三张表格的使用 一.子查询 #如何找到‘张三’的成绩 #思路:先找到张三的学号,在拿这个张三的学号到成绩表里面去匹配,得出成绩 #如何用一条查 ...
- MySQL基础(三)——约束
MySQL基础(三)--约束 约束是在表上强制执行的数据校验规则,主要用于维护表中数据的完整性以及当数据之间有以来关系时,保护相关的数据不会被删除. 根据约束对列的限制,可以划分为:单列约束(只约束一 ...
随机推荐
- 生成centos7 安装脚本
[root@us-1-217 install]# cat gen7.py #!/usr/bin/env python # -*- coding: utf-8 -*- import os, crypt ...
- Oracle数据库克隆后temp文件因路径变化无法找到问题
Oracle数据库克隆后temp文件因路径变化无法找到出现如下报错Errors in filexxxx.trc:ORA-01157: cannot identify/lock data file xx ...
- Jerry的CRM Middleware(中间件)文章合集
我在SAP成都研究院做过的CRM中间件的项目其实并不是很多: 1. 2013年下半年和2014年上半年曾经支持过中联重科和蒙牛的CRM项目相关的中间件问题; 2. 2014年上半年做过一个CRM物料主 ...
- flume-ng 自定义sink消费flume source
如何从一个已经存在的Flume source消费数据 1.下载flume wget http://www.apache.org/dist/flume/stable/apache-flume-1.5.2 ...
- 从并发和索引说说innodb和myisam的区别
一.引言 这个问题看似是个很俗气的问题,但是在面试中也是个经常被问到的问题.我想很多人都能说出几条,比如事物,外键,等等.但是我想这样想起一点说一句这么回答的话,知识其实都是分散的,这样就显得不是很高 ...
- 防止HTML出现滚动条时页面的抖动
<html> <style> * { padding: 0; margin: 0; } body { font: 40px fantasy; } .container { wi ...
- 20150103 海南铁汉vs哈尔滨毅腾
本文首发于『懂球帝』 这一场球赛虽然极其普通,在各位懂球帝面前或许不值得一提,但它极具历史意义,因为这是海南第一个职业联赛队伍的首场正式比赛,同时也是海南铁汉队第一次在正式比赛中与球迷们见面. 稍做一 ...
- 20165322 2017-2018-2《Java程序设计》课程总结
20165322 2017-2018-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:我期望的师生关系 预备作业2:做中学learning by doing个人感想 预备作业 ...
- 【[CTSC2012]熟悉的文章】
题目 好题啊 \(SAM\)+单调队列优化\(dp\) 首先这个\(L\)满足单调性真是非常显然我们可以直接二分 二分之后套一个\(dp\)就好了 设\(dp[i]\)表示到达\(i\)位置熟悉的文章 ...
- [18/12/03] 多态(polymorphism)和对象的转型(casting)
一.多态 多态指的是同一个方法调用,由于对象不同可能会有不同的行为.现实生活中,同一个方法,具体实现会完全不同. 比如:同样是调用人的“休息”方法,张三是睡觉,李四是旅游,同样是调用人“吃饭”的方法, ...