MYSQL语句和多表查询
数据库
什么是数据库 存储数据的仓库,本质上是一套CS结构的软件程序,分为客户端和服务器, 我们通常说安装数据,装的其实是服务器
库的语句
create database
drop database
alter database
show databases
show create database
表的语句
create table
drop table
alter table add|modify|drop |change
show tables
show create table
desc 表名
rename table a to b
记录的操作
insert into
delete from table
truncate table
update 表名 set xx = xx
select * from 表名
数据类型
int float
char varchar text blob enum set
year date time datetime timestamp
约束
unsigned
unique
not null
null
default
primary key auto_increment
foreign key
添加数据补充:
将一个查询结果插入到另一张表中
create table student(name char(10),gender int);
insert into student values("jack",1);
insert into student values("rose",0);create table student_man(name char(10),gender int);
insert into student_man select * from student where gender = 1;
多表查询
select * from table1,table2,......# 笛卡尔积查询的结果会出现大量的错误数据即,数据关联关系错误!
添加过滤条件 从表外键值 等于 主表的主键值# 并且会产生重复的字段信息 例如员工里的 部门编号 和 部门表的id字段
在select 后指定需要查询的字段名称 案例:
select dept.name 部门 ,dept.id 部门编号,emp.name 姓名,emp.id 员工编号,sex from emp ,dept where dept.id = dept_id;
多表查询案例:
create table stu(id int primary key auto_increment,name char(10));create table tea(id int primary key auto_increment,name char(10));create table tsr(id int primary key auto_increment,t_id int,s_id int,
foreign key(s_id) references stu(id),
foreign key(t_id) references tea(id));insert into stu values(null,"张三"),(null,"李四");
insert into tea values(null,"egon"),(null,"wer");
insert into tsr values(null,1,1),(null,1,2),(null,2,2);#egon老师教过哪些人?
select tea.name,stu.name from tea join tsr join stu
on
tea.id = t_id and stu.id = s_id
where tea.name = "egon";# 子查询实现
select * from stu where id in (select s_id from tsr where t_id = (select id from tea where name = "egon"));
内连接查询:
本质上就是笛卡尔积查询
语法:
select * from table1 inner join table2;
案例:
select * from emp inner join dept where dept_id = dept.id;inner可以省略
select * from emp join dept where dept_id = dept.id;
左外连接查询
左边的表无论是否能够匹配都要完整显示
右边的仅展示匹配上的记录
需求: 要查询所有员工以及其所属的部门信息
select * from emp left join dept on dept_id = dept.id;
注意: 在外连接查询中不能使用where 关键字 必须使用on专门来做表的对应关系
右外连接查询
右边的表无论是否能够匹配都要完整显示
左边的仅展示匹配上的记录
需求: 要查询所有部门以及其对应的员工信息
select * from emp right join dept on dept_id = dept.id;
全外连接查询
无论是否匹配成功 两边表的数据都要全部显示
需求:查询所有员工与所有部门的对应关系
select * from emp full join dept on dept_id = dept.id;注意:mysql不支持全外连接 我们可以将 左外连接查询的结果 和 右外连接查询的结果 做一个合并
select * from emp left join dept on dept_id = dept.id
union
select * from emp right join dept on dept_id = dept.id;union的用法:
select * from emp
union
select * from emp;# union将自动去除重复的记录
# union all 不去重复 select sex,name from emp
union
select * from dept;
# 注意 union 必须保证两个查询结果 列数相同 一般用在多个结果结构完全一致时
转载于:https://www.cnblogs.com/legend27/p/11081331.html
MYSQL语句和多表查询相关推荐
- mysql语句中多表查询_6.MySql中的SQL语句(五):多表查询
多表查询有如下几种: 合并结果集:UNION.UNION ALL 连接查询 内连接[INNER] JOINON 外连接OUTER JOIN ON 左外连接LEFT [OUTER] JOIN 右外连接R ...
- mysql查询单表的销售额_MYSQL select语句的单表查询
MYSQL select语句的单表查询 发布时间:2020-05-29 13:19:48 来源:亿速云 阅读:131 作者:Leah 这篇文章运用了实例代码展示select语句的单表查询的用法,代码非 ...
- MySQL 笔记5 -- 多表查询
MySQL 笔记5 – 多表查询 MySQL 系列笔记是笔者学习.实践MySQL数据库的笔记 课程链接: MySQL 数据库基础入门教程 参考文档: MySQL 官方文档 一.表之间关系 1.一对一 ...
- 在MySQL中实现交叉表查询2(动态交叉表)
在MySQL中实现交叉表查询2(动态交叉表) 交叉表分为静态交叉表和动态交叉表.其中静态交叉表中的列是固定的,因此相对容易实现:而动态交叉表中的列需要动态生成. 一.静态交叉表的实现 参见上一篇文章: ...
- MySQL数据库应用 多表查询_mysql数据库-多表查询
今日任务 完成对MYSQL数据库的多表查询及建表的操作 教学目标 掌握MYSQL中多表的创建及多表的查询 掌握MYSQL中的表关系分析并能正确建表 昨天内容回顾: 数据库的创建 : create ...
- 基于SpringDataJpa的mysql动态分页多表查询
基于SpringDataJpa的mysql动态分页多表查询 由于这篇文章预计篇幅会很长,关于Spring Data JPA的知识就简短的分享,更多的请自行度娘,JPA 封装了很多查询的接口,但今天要讲 ...
- 记录:数据库(MySQL)之多表查询
数据库(MySQL)之多表查询 1.创建表 -- 多表联合查询 -- 创建三个表,并进行插入数据 -- 创建emp表,并插入数据 CREATE TABLE emp ( eno int(5),-- 员工 ...
- 【mysql】基础-多表查询(下)
上文 中描述了多表关系.内连接.外连接.自连接.联合查询 union, union all.标量子查询.列子查询.行子查询.表子查询 文章链接在[mysql]基础-多表查询(上)_無名_b的博客-CS ...
- mysql交互式创建表_用mysql语句创建数据表详细教程
MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 1.使用具有交互式创建和管理表的工具: 2.表也可以直接用MySQL语句操纵. ...
- php语句创建数据表,用mysql语句创建数据表详细教程
MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 1.使用具有交互式创建和管理表的工具: 2.表也可以直接用MySQL语句操纵. ...
最新文章
- retina 负样本回归增强loss
- python爬虫案例-python爬虫案例
- 处理JSON格式的数据
- 网络:TCP停止等待、超时重传、滑动窗口、拥塞控制、快重传和快恢复
- $GLOBALS -- 变量
- 【C++】错误处理和异常处理
- matlab中循环读入文件内容,[转载]Matlab利用load循环读入数据文件
- 有趣的面试题解 (2 )
- torch.cat() 函数用法
- Android TabLayout定制CustomView与ViewPager交互双向联动
- 面向客户定制化开发项目的管理重点
- 错过了蓝月亮,你还有我们~~只此一次!
- 一道面试题,设计电路,set,reset
- SEGGER-RTT调试(代替串口printf输出)的使用方法
- SwitchNAT 测试
- 简单银行管理系统C#版本
- 第十五章 输入/输出
- ABB机器人689-1 Externally Guided Motion(EGM)选项添加
- Android手势密码
- AutomatorX自动化测试工具介绍(Android篇)
热门文章
- python字典默认排序_Python字典练习:设置默认获取排序,小,知识点,setdefaultgetsorted...
- 在mysql数据库中创建Oracle数据库中的scott用户表
- Google Gson API 介绍与使用
- 动态加载执行 JS 文件、对话框 confirm 方法
- Android 控件 之 菜单(Menu)
- 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_05-新增页面-服务端-接口测试...
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_11、SpringBoot2.x目录文件结构讲解...
- 阶段3 2.Spring_09.JdbcTemplate的基本使用_3 JdbcTemplate在Dao中的使用
- 阶段3 2.Spring_06.Spring的新注解_7 spring整合junit问题分析
- 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第3节 综合案例_文件上传_3_综合案例_文件上传案例的服务器端...