多表查询sql语句

  1. 1 --解锁SCOTT用户
  2. 2 alter user scott account unlock
  3. 3 --检索指定的列
  4. 4 select job,ename,empno from emp;
  5. 5 --带有表达是的select子句
  6. 6 select sal*(1+0.2),sal from emp;
  7. 7 --显示不重复的记录
  8. 8 select distinct job from emp;
  9. 9 --比较筛选 <> =
  10. 10 select empno,ename,sal from emp where sal>1000;
  11. 11 select empno,ename,JOB from emp;
  12. 12 select empno,ename,sal from emp where sal <>all(3000,950,800);
  13. 13 --特殊关键字筛选
  14. 14 --like 模糊查询
  15. 15 select empno,ename,job from emp where JOB like '%S';
  16. 16 --IN --varchar
  17. 17 select empno,ename,job from emp where job in('PRESIDENT','MANAGER','ANALYST');
  18. 18 --NOT IN
  19. 19 select empno,ename,job from emp where job not in('PRESIDENT','MANAGER','ANALYST') ;
  20. 20 --BETWEEN -numer ,inter
  21. 21 select empno,ename,sal from emp where sal between 2000 and 3000;
  22. 22 --NOT BETWEEN
  23. 23 select empno,ename,sal from emp where sal NOT between 2000 and 3000;
  24. 24 --IS NULL/ is not null
  25. 25 select * from emp where comm is NOT null;
  26. 26 --逻辑筛选
  27. 27 --and ,or,not 关系 -或 --非
  28. 28 select empno,ename,sal from emp where sal>=2000 and sal<=3000 ;
  29. 29 select empno,ename,sal from emp where sal<2000 or sal>3000 ;
  30. 30 --分组查询
  31. 31 select deptno,job from emp group by deptno,job order by deptno ;
  32. 32 select deptno as 部门编号,avg(sal) as 平均工资 from emp group by deptno;
  33. 33 select deptno as 部门编号,avg(sal) as 平均工资 from emp group by deptno having avg(sal)>2000; --group by 子条件 having
  34. 34 --排序查询Order by; desc:逆序 asc默认
  35. 35 select deptno,empno,ename from emp order by deptno,EMPNO;
多表查询sql语句七种示例图
在创建关系型数据表时,根据数据库范式的要求,为了降低数据的冗余,提供数据维护的灵活性
将数据分成多个表进行存储,实际工作当中,需要多个表的信息,需要将多个表合并显示
 

多表查询sql语句 代码

  1. 1 --内连接
  2. 2 select e.empno as 员工编号, e.ename as 员工名称, d.dname as 部门
  3. 3 from emp e inner join dept d on e.deptno=d.deptno;
  4. 4
  5. 5 --左外连接
  6. 6 insert into emp(empno,ename,job) values(9527,'EAST','SALESMAN');
  7. 7
  8. 8 select e.empno,e.ename,e.job,d.deptno,d.dname from emp e left join dept d
  9. 9 on e.deptno=d.deptno;
  10. 10 --右外连接
  11. 11 select e.empno,e.ename,e.job,d.deptno,d.dname from emp e right join dept d
  12. 12 on e.deptno=d.deptno;
  13. 13
  14. 14 --完全连接
  15. 15 select e.empno,e.ename,e.job,d.deptno,d.dname from emp e full join dept d
  16. 16 on e.deptno=d.deptno;
  17. 17
  18. 18 --自然连接(共有的属性,会去除重复列)
  19. 19 select empno,ename,job,dname from emp natural join dept where sal>2000;
  20. 20
  21. 21 事务如果不提交,会一直写入以下表空间;
  22. 22 redo(记录日志表空间) undo(记录日志备份表空间)
  23. 23 提交: commit 回滚: rollback
  24. 24
  25. 25 --右外连接过滤
  26. 26 select * from emp e right join dept d on e.deptno=d.deptno
  27. 27 where e.deptno is null;
  28. 28 --左外连接过滤
  29. 29 select * from emp e left join dept d on e.deptno=d.deptno
  30. 30 where d.deptno is null;
  31. 31 --全外连接过滤
  32. 32 select * from emp e full join dept d on e.deptno=d.deptno
  33. 33 where d.deptno is null or e.deptno is null;
  34. 34
  35. 35
  36. 36 /*自连接(self join)是SQL语句中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。
  37. 37 在emp中的每一个员工都有自己的mgr(经理),并且每一个经理自身也是公司的员工,自身也有自己的经理。*/
  38. 38 select em2.enname 管理者,em1.enname 下属员工 from emp em1 left join emp em2 on em1.mgr=em2.empno order by em1.mgr;
  39. 39
  40. 40 /*交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数*/
  41. 41 select count(*) from dept cross join emp;

ROWNUM伪列

  1. 1 select rownum,empno,ename from emp where deptno=20;
  2. 2 --返回emp表中前5个员工消息
  3. 3 select rownum seq,empno,ename,sal from emp where rownum<=5;
  4. 4
  5. 5 --查询emp表中2条到第5条的数据
  6. 6 select rownum seq,empno,ename,sal from emp where rownum>=2 and rownum<=5;
  7. 7
  8. 8 /*ROWNUM列值会被重置所致,比如在取第1行,where子条件不成立,第1行被丢弃,
  9. 9 但是取下一行时,ROWNUM会被重置为1,而不是2, 导致,ROWNUM永远无法取到正确的值
  10. 10 无法返回 任何行数据*/
  11. 11 select * from emp;
  12. 12 select seq,empno,ename,sal from (select rownum seq,empno,ename,sal from emp)
  13. 13 where seq>=2 and seq<=5
 
外键约束的作用 
外键是该表是另一个表之间联接的字段 外键必须为另一个表中的主键 外键的用途是确保数据的完整性。它通常包括以下几种: 实体完整性,确保每个实体是唯一的(通过主键来实施)
 
1 域完整性,确保属性值只从一套特定可选的集合里选择
2 关联完整性,确保每个外键或是NULL(如果允许的话)或含有与相关主键值相配的值    


有外键约束的表CRUD操作

  1   增加数据:先插入外表,再插入主表
  2   删除数据:先删除主表再删除外表,
  3   有对应记录的值,不能修改当前列;

多表查询sql语句的更多相关文章

  1. phpmyadmin查看创建表的SQL语句

    本人菜鸟 发现创建表的SQL语句还不会 直接phpmyadmin解决的 查看见表的语句除了直接到处SQL格式文件 打开查看外 就是执行语句查询 语句:show create table 表名  貌似大 ...

  2. 查询sql语句所花时间

    --1:下面这种是SQL Server中比较简单的查询SQL语句执行时间方法,通过查询前的时间和查询后的时间差来计算的: declare @begin_date datetime declare @e ...

  3. 跨服务器查询sql语句样例

    若2个数据库在同一台机器上:insert into DataBase_A..Table1(col1,col2,col3----)select col11,col22,col33-- from Data ...

  4. Entity Framework Code First 在Object Join Linq查询时出现全表查询的语句。

    最近一个项目,使用微软的Entity Framework的ORM框架的项目,部署到现场后,出现了系统缓慢,多个客户端的内存溢出崩溃的问题. 打开了SQL Server Profiler(SQL Ser ...

  5. MySQL数据库-表操作-SQL语句(一)

    1. 数据库操作与存储引擎 1.1   数据库和数据库对象 数据库对象:存储,管理和使用数据的不同结构形式,如:表.视图.存储过程.函数.触发器.事件等. 数据库:存储数据库对象的容器. 数据库分两种 ...

  6. 跨服务器查询sql语句样例(转)

    若2个数据库在同一台机器上: insert into DataBase_A..Table1(col1,col2,col3----) select col11,col22,col33-- from Da ...

  7. 创建数据库和表的SQL语句

    创建数据库的SQL语句: 1 create database stuDB 2 on primary -- 默认就属于primary文件组,可省略 3 ( 4 /*--数据文件的具体描述--*/ 5 n ...

  8. 创建数据库和表的SQL语句【转】

    创建数据库和表的SQL语句 转至http://www.cnblogs.com/philanthr/archive/2011/08/09/2132398.html 创建数据库的SQL语句: 1 crea ...

  9. oracle 修改表的sql语句

    oracle 修改表的sql语句     1增加一个列:ALTER TABLE 表名 ADD(列名 数据类型);如:ALTER TABLE emp ADD(license varchar2(256)) ...

随机推荐

  1. 关于右键属性与du -sh显示的文件大小不一致的解决

    du -sh filename(其实我们经常用du -sh *,显示当前目录下所有的文件及其大小,如果要排序再在后面加上 | sort -n)   关于右键属性与du -sh显示的文件大小不一致的解决 ...

  2. python-一个小爬虫,爬取图片

    import re import urllib.request # 爬取网页 def getHtml(url): page=urllib.request.urlopen(url) html=page. ...

  3. Hive学习之路 (十四)Hive分析窗口函数(二) NTILE,ROW_NUMBER,RANK,DENSE_RANK

    概述 本文中介绍前几个序列函数,NTILE,ROW_NUMBER,RANK,DENSE_RANK,下面会一一解释各自的用途. 注意: 序列函数不支持WINDOW子句.(ROWS BETWEEN) 数据 ...

  4. 03.Java语言基础

    Java程序的组成 关键字,标识符,注释,变量,语句,表达式,数组,方法 关键字 Java语言内部使用了的一些用于特殊用途的词汇,那么在程序中用户不能使用.语言本身保留了一些词汇用于语言的语法等用途. ...

  5. Java基础加强之代理

    本文引用自 http://www.cnblogs.com/xdp-gacl/p/3971367.html 1.什么是代理 动态代理技术是整个java技术中最重要的一个技术,它是学习java框架的基础, ...

  6. javascript:apply方法 以及和call的区别 (转载)

    javascript:apply方法   1.        apply和call的区别在哪里 2.        什么情况下用apply,什么情况下用call 3.        apply的其他巧 ...

  7. js中css样式兼容各个浏览器写法

    在实际业务中往往需要在js中对dom添加一些样式,还需要对各个浏览器厂商的兼顾,看到一位大神写的一个方法很赞,做一个笔记 function prefixStyle(style){ var eleSty ...

  8. django自带的登录验证功能

    django自带的验证机制 from django.shortcuts import render, redirect from django.contrib.auth import authenti ...

  9. The Ribbon Tab with id: "Ribbon.Read" has not been made available for this page or does not exist.

    The Ribbon Tab with id: "Ribbon.Read" has not been made available for this page or does no ...

  10. MacOS(10.11.6)+Qt(5.5.1)+Xcode(8.2) C++开发环境配置

    VMware虚拟机安装MacOS(这里安装的是MacOS X 10.11.6), 百度很多, 不再详述. 安装Xcode(这里安装的是Xcode8.2) 下载(https://developer.ap ...