数据库

什么是数据库 存储数据的仓库,本质上是一套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语句和多表查询相关推荐

  1. mysql语句中多表查询_6.MySql中的SQL语句(五):多表查询

    多表查询有如下几种: 合并结果集:UNION.UNION ALL 连接查询 内连接[INNER] JOINON 外连接OUTER JOIN ON 左外连接LEFT [OUTER] JOIN 右外连接R ...

  2. mysql查询单表的销售额_MYSQL select语句的单表查询

    MYSQL select语句的单表查询 发布时间:2020-05-29 13:19:48 来源:亿速云 阅读:131 作者:Leah 这篇文章运用了实例代码展示select语句的单表查询的用法,代码非 ...

  3. MySQL 笔记5 -- 多表查询

    MySQL 笔记5 – 多表查询 MySQL 系列笔记是笔者学习.实践MySQL数据库的笔记 课程链接: MySQL 数据库基础入门教程 参考文档: MySQL 官方文档 一.表之间关系 1.一对一 ...

  4. 在MySQL中实现交叉表查询2(动态交叉表)

    在MySQL中实现交叉表查询2(动态交叉表) 交叉表分为静态交叉表和动态交叉表.其中静态交叉表中的列是固定的,因此相对容易实现:而动态交叉表中的列需要动态生成. 一.静态交叉表的实现 参见上一篇文章: ...

  5. MySQL数据库应用 多表查询_mysql数据库-多表查询

    今日任务 完成对MYSQL数据库的多表查询及建表的操作 教学目标 掌握MYSQL中多表的创建及多表的查询 掌握MYSQL中的表关系分析并能正确建表 昨天内容回顾: ​ 数据库的创建 : create ...

  6. 基于SpringDataJpa的mysql动态分页多表查询

    基于SpringDataJpa的mysql动态分页多表查询 由于这篇文章预计篇幅会很长,关于Spring Data JPA的知识就简短的分享,更多的请自行度娘,JPA 封装了很多查询的接口,但今天要讲 ...

  7. 记录:数据库(MySQL)之多表查询

    数据库(MySQL)之多表查询 1.创建表 -- 多表联合查询 -- 创建三个表,并进行插入数据 -- 创建emp表,并插入数据 CREATE TABLE emp ( eno int(5),-- 员工 ...

  8. 【mysql】基础-多表查询(下)

    上文 中描述了多表关系.内连接.外连接.自连接.联合查询 union, union all.标量子查询.列子查询.行子查询.表子查询 文章链接在[mysql]基础-多表查询(上)_無名_b的博客-CS ...

  9. mysql交互式创建表_用mysql语句创建数据表详细教程

    MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 1.使用具有交互式创建和管理表的工具: 2.表也可以直接用MySQL语句操纵. ...

  10. php语句创建数据表,用mysql语句创建数据表详细教程

    MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理. 一般有两种创建表的方法: 1.使用具有交互式创建和管理表的工具: 2.表也可以直接用MySQL语句操纵. ...

最新文章

  1. retina 负样本回归增强loss
  2. python爬虫案例-python爬虫案例
  3. 处理JSON格式的数据
  4. 网络:TCP停止等待、超时重传、滑动窗口、拥塞控制、快重传和快恢复
  5. $GLOBALS -- 变量
  6. 【C++】错误处理和异常处理
  7. matlab中循环读入文件内容,[转载]Matlab利用load循环读入数据文件
  8. 有趣的面试题解 (2 )
  9. torch.cat() 函数用法
  10. Android TabLayout定制CustomView与ViewPager交互双向联动
  11. 面向客户定制化开发项目的管理重点
  12. 错过了蓝月亮,你还有我们~~只此一次!
  13. 一道面试题,设计电路,set,reset
  14. SEGGER-RTT调试(代替串口printf输出)的使用方法
  15. SwitchNAT 测试
  16. 简单银行管理系统C#版本
  17. 第十五章 输入/输出
  18. ABB机器人689-1 Externally Guided Motion(EGM)选项添加
  19. Android手势密码
  20. AutomatorX自动化测试工具介绍(Android篇)

热门文章

  1. python字典默认排序_Python字典练习:设置默认获取排序,小,知识点,setdefaultgetsorted...
  2. 在mysql数据库中创建Oracle数据库中的scott用户表
  3. Google Gson API 介绍与使用
  4. 动态加载执行 JS 文件、对话框 confirm 方法
  5. Android 控件 之 菜单(Menu)
  6. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_05-新增页面-服务端-接口测试...
  7. 小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_11、SpringBoot2.x目录文件结构讲解...
  8. 阶段3 2.Spring_09.JdbcTemplate的基本使用_3 JdbcTemplate在Dao中的使用
  9. 阶段3 2.Spring_06.Spring的新注解_7 spring整合junit问题分析
  10. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第3节 综合案例_文件上传_3_综合案例_文件上传案例的服务器端...