SQL语言基础inform.ppt_第1页
SQL语言基础inform.ppt_第2页
SQL语言基础inform.ppt_第3页
SQL语言基础inform.ppt_第4页
SQL语言基础inform.ppt_第5页
已阅读5页,还剩255页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

亿阳信通股份有限公司 ,SQL基础 For Informix,关系数据模型,代表系统 (1) Oracle (2) Sybase (3) DB2 (4) SQL server (5) VFP (6) Access (7) DBASE,数据库模式对象,术语: 表 存放用户数据的所在 视图 数据查看的特殊方式 索引 加快访问数据的方法,数据库模式对象,表(Table) 是用于存放用户数据的数据库对象。有关每个表的信息存放在数据字典中,利用这些信息,用户可以维护表中的数据。 数据库触发器(Database Triggers) 是存储在数据库中的程序,并当某一事件(如数据变化和用户登录)发生时运行。 视图(View) 允许用户看到一个或多个表的自定义组合,视图使用存放在数据库中的SQL查询。当需要使用视图时,执行定义该视图所需的SQL语句,就如同用户自己编写了这些定义语句一样。 索引(Index) 是表的小型化拷贝,表的索引项允许Oracle 快速访问表中的数据。,数据库模式对象,同义词(Synonym) 是数据库对象的别名。同义词即数据库对象的昵称,就像称呼一个名叫Margaret 的人为Maggie 一样。 授权(Grants) 为对象所有者将权限授出,允许其他用户处理这些对象的数据。 数据类型(Data Type) 是用户打算存储其信息的格式结构。Informix的数据格式有Int/Float/Char/Varchar/bin等,(1) 关系:整个二维表 (2) 关系名:表格名称 (3) 元组:行数据(记录) (4) 属性:列数据(字段) (5) 属性名:列名称(字段名) (6) 主码:唯一确定元组的属性组(关键字) (7) 域:属性的取值范围 (8) 分量:元组中的一个属性值 (9) 关系模式:关系名(属性),如:学生(学号,姓名,性别,系别,年龄,籍贯) (10)约束 实体完整性约束 参照完整性约束 用户定义的完整性约束,概念,基本SQL语句,目标,完成本节课学习后,应当达到如下目标: 能够指出SQL语句中SELECT语句的作用 执行一个基本SELECT查询语句,Select语句的功能,选择,投影,Table 1,Table 2,Table 1,Table 1,连接,基本SELECT语句,SELECT DISTINCT *, column alias,. FROM table;,SELECT 关键字标明取哪些列的数据. FROM 关键字标明从哪些表中取数据.,SQL语句的书写,SQL 语句不是大小写敏感的。 建议关键字用大写,其他用小写。 SQL 语句可以分布在一行或者多行中。 关键字不能进行缩写,也不能分布在两行。 一般地,不同的子句写在不同的行为宜。 经常用跳格键或者缩进来增强可读性。,选出所有的列,DEPTNO DNAME LOC - - - 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON,SQL SELECT * 2 FROM dept;,选出特定的列,DEPTNO LOC - - 10 NEW YORK 20 DALLAS 30 CHICAGO 40 BOSTON,SQL SELECT deptno, loc 2 FROM dept;,数学表达式,可以用下述的数学符号,将日期或者数字数据组合起来形成数学表达式,符号 + - * /,描述 加 减 乘 除,在SQL语句中运用数学表达式,SQL SELECT ename, sal, sal+300 2 FROM emp;,ENAME SAL SAL+300 - - - KING 5000 5300 BLAKE 2850 3150 CLARK 2450 2750 JONES 2975 3275 MARTIN 1250 1550 ALLEN 1600 1900 . 14 rows selected.,表达式优先级,乘和除操作的优先级高于加和减。 相同优先级的操作符自左向右进行计算。 圆括号“(”“)”,用来重新组合表达式的优先级,操作符顺序,SQL SELECT ename, sal, 12*sal+100 2 FROM emp;,ENAME SAL 12*SAL+100 - - - KING 5000 60100 BLAKE 2850 34300 CLARK 2450 29500 JONES 2975 35800 MARTIN 1250 15100 ALLEN 1600 19300 . 14 rows selected.,使用圆括号,SQL SELECT ename, sal, 12*(sal+100) 2 FROM emp;,ENAME SAL 12*(SAL+100) - - - KING 5000 61200 BLAKE 2850 35400 CLARK 2450 30600 JONES 2975 36900 MARTIN 1250 16200 . 14 rows selected.,定义空值(null),空值是一个表达不可用、未分配、未知、或者不适用等意义的值。 空值与零和空格的概念不同,应当严格区分。,ENAME JOB SAL COMM - - - - KING PRESIDENT 5000 BLAKE MANAGER 2850 . TURNER SALESMAN 1500 0 . 14 rows selected.,SQL SELECT ename, job, sal, comm 2 FROM emp;,数学表达式中空值的处理,如果数学表达式中包含了一个空值,那么该数学表达式计算的结果为空值,SQL select ename, 12*sal+comm 2 from emp 3 WHERE ename=KING;,ENAME 12*SAL+COMM - - KING,定义一个列别名,重新命名一个列的名字有时很有用。 可以用AS关键字为列名取一个别名。 别名中不能使用空格,使用列的别名,SQL SELECT ename AS name, sal salary 2 FROM emp;,NAME SALARY - - .,串接操作符,可以将一些列连接起来,也可以将一些列和一些字符串连接起来。 串接操作符用两个竖杠 (|)表示。 可以用这种方法创建一个由字符串组成的结果列。,使用串接操作符,SQL SELECT ename|job AS “Employees“ 2 FROM emp;,Employees - KINGPRESIDENT BLAKEMANAGER CLARKMANAGER JONESMANAGER MARTINSALESMAN ALLENSALESMAN . 14 rows selected.,文字(literal)字符串,文字字符串是包含在一个Select语句中的字符串、数字、或者日期。 文字字符串必须用单引号()括起来。 对于返回的每一行,文字字符串都显示一次。 在生成报表时非常有用。,使用文字字符串,Employee_Details - KING is a PRESIDENT BLAKE is a MANAGER CLARK is a MANAGER JONES is a MANAGER MARTIN is a SALESMAN . 14 rows selected.,SQL SELECT ename | is a |job 2 AS “Employee_Details“ 3 FROM emp;,重复行,查询语句执行的结果,缺省的显示方法是显示所有的行,包括重复的行。,SQL SELECT deptno 2 FROM emp;,DEPTNO - 10 30 10 20 . 14 rows selected.,消除掉重复行,在SELECT语句中用 DISTINCT关键字来消除所有重复的行。,SQL SELECT DISTINCT deptno 2 FROM emp;,DEPTNO - 10 20 30,对数据进行限定和排序,目标,结束本节课后,应当达到如下: 在一个查询中限定查询出的行 对查询出的行进行排序,用“选择”限定行,选择查询出的行,用where子句限定查询出的行. Where子句紧跟在From子句之后.,SELECT DISTINCT *| column alias, . FROM table WHERE condition(s);,运用WHERE子句,SQL SELECT ename, job, deptno 2 FROM emp 3 WHERE job=CLERK;,ENAME JOB DEPTNO - - - JAMES CLERK 30 SMITH CLERK 20 ADAMS CLERK 20 MILLER CLERK 10,字符串和日期,字符串和日期值应当用单引号括起来. 字符串值大小写敏感,日期值对于日期的格式敏感。 缺省的日期值格式: MON-DD-YYYY. 例如:09-23-2002.为2002年9月23日,SQL SELECT ename, job, deptno 2 FROM emp 3 WHERE ename = ;,JAMES,比较操作符,操作符 = = ,含义 等于 大于 大于或等于 小于 小于或等于 不等于,使用比较操作符,SQL SELECT ename, sal, comm 2 FROM emp 3 WHERE sal=comm;,ENAME SAL COMM - - - MARTIN 1250 1400,其它比较操作符,操作符 BETWEEN .AND. IN(list) LIKE IS NULL,含义 在两个值之间 (包含着两个值) 在列出的值中 与给出的字符串匹配 是一个空值,用 BETWEEN 操作符,ENAME SAL - - MARTIN 1250 TURNER 1500 WARD 1250 ADAMS 1100 MILLER 1300,SQL SELECT ename, sal 2 FROM emp 3 WHERE sal BETWEEN 1000 AND 1500;,用BETEEN操作符来查询出在某一范围内的行.,使用IN操作符,用IN操作符来检验一个值是否在一个列表中.,SQL SELECT empno, ename, sal, mgr 2 FROM emp 3 WHERE mgr IN (7902, 7566, 7788);,EMPNO ENAME SAL MGR - - - - 7902 FORD 3000 7566 7369 SMITH 800 7902 7788 SCOTT 3000 7566 7876 ADAMS 1100 7788,使用LIKE操作符,用LIKE进行某个字符串值的通配符匹配,来选出某些行. 查询条件中既可以包含字符,也可以包含数字. % 代表个或者多个字符. _ 代表一个字符.,SQL SELECT ename 2 FROM emp 3 WHERE ename LIKE S%;,使用 LIKE操作符,可以混合使用模式字符串. 如果要匹配这个字符,可以用来表示.,SQL SELECT ename 2 FROM emp 3 WHERE ename LIKE _A%;,ENAME - MARTIN JAMES WARD,使用 IS NULL 操作符,用 IS NULL操作符来检查有无空值,SQL SELECT ename, mgr 2 FROM emp 3 WHERE mgr IS NULL;,ENAME MGR - - KING,逻辑操作符,操作符 AND OR NOT,含义 两个条件都为TRUE ,则返回TRUE 两个条件中任何一个为TRUE,则返回TRUE 如果条件为FALSE,返回TRUE,使用 AND操作符,AND 需要所有的条件都为TRUE.,SQL SELECT empno, ename, job, sal 2 FROM emp 3 WHERE sal=1100 4 AND job=CLERK;,EMPNO ENAME JOB SAL - - - - 7876 ADAMS CLERK 1100 7934 MILLER CLERK 1300,使用OR 操作符,OR操作符只需任意条件为TRUE即可,SQL SELECT empno, ename, job, sal 2 FROM emp 3 WHERE sal=1100 4 OR job=CLERK;,EMPNO ENAME JOB SAL - - - - 7839 KING PRESIDENT 5000 7698 BLAKE MANAGER 2850 7782 CLARK MANAGER 2450 7566 JONES MANAGER 2975 7654 MARTIN SALESMAN 1250 . 7900 JAMES CLERK 950 . 14 rows selected.,使用 NOT操作符,SQL SELECT ename, job 2 FROM emp 3 WHERE job NOT IN (CLERK,MANAGER,ANALYST);,ENAME JOB - - KING PRESIDENT MARTIN SALESMAN ALLEN SALESMAN TURNER SALESMAN WARD SALESMAN,优先级规则,用圆括号可以改变操作符的优先级次序。,顺序 操作符 1 所有比较操作符 2 NOT 3 AND 4 OR,优先级规则,ENAME JOB SAL - - - KING PRESIDENT 5000 MARTIN SALESMAN 1250 ALLEN SALESMAN 1600 TURNER SALESMAN 1500 WARD SALESMAN 1250,SQL SELECT ename, job, sal 2 FROM emp 3 WHERE job=SALESMAN 4 OR job=PRESIDENT 5 AND sal1500;,优先级规则,ENAME JOB SAL - - - KING PRESIDENT 5000 ALLEN SALESMAN 1600,用圆括号强制改变操作符优先级.,SQL SELECT ename, job, sal 2 FROM emp 3 WHERE (job=SALESMAN 4 OR job=PRESIDENT) 5 AND sal1500;,ORDER BY 子句,用 ORDER BY子句进行行的排序 ASC: 升序, 缺省 DESC: 降序 ORDER BY子句跟在SELECT 语句之后,SQL SELECT ename, job, deptno, hiredate 2 FROM emp 3 ORDER BY hiredate;,ENAME JOB DEPTNO HIREDATE - - - - SMITH CLERK 20 17-DEC-80 ALLEN SALESMAN 30 20-FEB-81 . 14 rows selected.,采用降序排序,SQL SELECT ename, job, deptno, hiredate 2 FROM emp 3 ORDER BY hiredate DESC;,ENAME JOB DEPTNO HIREDATE - - - - ADAMS CLERK 20 12-JAN-83 SCOTT ANALYST 20 09-DEC-82 MILLER CLERK 10 23-JAN-82 JAMES CLERK 30 03-DEC-81 FORD ANALYST 20 03-DEC-81 KING PRESIDENT 10 17-NOV-81 MARTIN SALESMAN 30 28-SEP-81 . 14 rows selected.,按照列的别名来进行排序,SQL SELECT empno, ename, sal*12 annsal 2 FROM emp 3 ORDER BY annsal;,EMPNO ENAME ANNSAL - - - 7369 SMITH 9600 7900 JAMES 11400 7876 ADAMS 13200 7654 MARTIN 15000 7521 WARD 15000 7934 MILLER 15600 7844 TURNER 18000 . 14 rows selected.,按照多个列进行排序,ORDER BY 后的列的顺序既排序的顺序.,不可以按照 SELECT 列中没有的列来进行排序,SQL SELECT ename, deptno, sal 2 FROM emp 3 ORDER BY deptno, sal DESC;,ENAME DEPTNO SAL - - - KING 10 5000 CLARK 10 2450 MILLER 10 1300 FORD 20 3000 . 14 rows selected.,总结,SELECT DISTINCT *| column alias, . FROM table WHERE condition(s) ORDER BY column, expr, alias ASC|DESC;,处理单行的函数,目标,完成本节课后,应当达到如下的目标: 描述在 SQL语句中可能用到的各种函数。 在SELECT 语句中使用字符串、数字、日期的函数。 描述转换函数的用法,SQL函数,函数,函数处理动作,两种类型的 SQL函数,函数,单行函数,多行函数,单行函数,操作数据项 接收参数并返回一个值 在返回的每一行上进行处理 每一行都有一个处理结果 可能要修改数据类型 可以进行嵌套,function_name (column|expression, arg1, arg2,.),单行函数,格式转换,字符,数字,日期,常规处理,单行函数,字符函数,字符函数,LOWER UPPER INITCAP,SUBSTR LENGTH LPAD RPAD TRIM REPLACE CONCAT,大小写转换函数,字符操作函数,函数,结果,大小写转换,对字符串的大小写进行转换,LOWER(SQL Course) UPPER(SQL Course) INITCAP(SQL Course),sql course SQL COURSE Sql Course,使用大小写转换函数,查出员工Blake的号码、名字、部门号,SQL SELECT empno, ename, deptno 2 FROM emp 3 WHERE ename = blake; no rows selected,EMPNO ENAME DEPTNO - - - 7698 BLAKE 30,SQL SELECT empno, ename, deptno 2 FROM emp 3 WHERE ename = UPPER(blake);,SUBSTR(String,1,3) LENGTH(String) LPAD(sal,10,*) TRIM(S FROM SSMITH) REPLACE(eachday,each,eve) CONCAT(Very,Good),Str 6 *5000 MITH eveday VeryGood,函数,结果,字符操作函数,操作字符串,使用字符操作函数,SQL SELECT ename, CONCAT (ename, job), LENGTH(ename), 2 3 FROM emp 4 WHERE,SUBSTR(job,1,5) = SALES;,ENAME CONCAT(ENAME,JOB) LENGTH(ENAME) INSTR(ENAME,A) - - - MARTIN MARTINSALESMAN 6 ALLEN ALLENSALESMAN 5 TURNER TURNERSALESMAN 6 WARD WARDSALESMAN 4,数字函数,ROUND: 对指定的值进行四舍五入 小数 ROUND(45.926, 2) 45.93 TRUNC: 对指定的值进行取整 小数 TRUNC(45.926, 2) 45.92 MOD: 返回除法计算后的余数 MOD(1600, 300) 100,使用 ROUND函数,SQL SELECT ROUND(45.923,2), ROUND(45.923,0), 2 ROUND(45.923,-1) 3 FROM DUAL;,ROUND(45.923,2) ROUND(45.923,0) ROUND(45.923,-1) - - - 45.92 46 50,SQL SELECT TRUNC(45.923,2), TRUNC(45.923), 2 TRUNC(45.923,-1) 3 FROM DUAL;,TRUNC(45.923,2) TRUNC(45.923) TRUNC(45.923,-1) - - - 45.92 45 40,使用 TRUNC函数,使用 MOD函数,计算工作为 salesman的员工的工资(Sal),除以COMM后的余数。,SQL SELECT ename, sal, comm, MOD(sal, comm) 2 FROM emp 3 WHERE job = SALESMAN;,ENAME SAL COMM MOD(SAL,COMM) - - - - MARTIN 1250 1400 1250 ALLEN 1600 300 100 TURNER 1500 0 1500 WARD 1250 500 250,使用日期,两种日期类型date和datetime date缺省的格式:MON-DD-YYYY.例如:12-25-2007 CURRENT 是一个返回日期和时间的函数.,常用日期函数,获取系统当前时间,CURRENT,INTERVAL,DAY/MONTH/YEAR/ WEEKDAY,DATETIME,DATE,日期加减函数,调整date或datetime值的精度,返回表达式的日期时间值,返回表达式的日期值,函数,描述,返回表达式中得天/月/年/周,EXTEND,CURRENT(),使用Date函数,DAY (10-16-2008) or DAY (2008-10-16 10:00:00),MONTH (10-16-2008 ) or MONTH (2008-10-16 10:00:00),2008-10-16 10:00:28,16,10,YEAR (10-16-2008 ) or YEAR (2008-10-16 10:00:00),2008,WEEKDAY (10-16-2008 ) or WEEKDAY (2008-10-16 10:00:00),4,使用日期函数,NVL 函数,NVL(expr1, expr2) 如果expr1为null,则返回expr2,否则返回expr1 可以使用的数据类型是数字、日期、字符型. 数据类型必须能够匹配 NVL(comm,0) NVL(hiredate,01-JAN-97) NVL(job,No Job Yet),SQL SELECT ename, sal, comm, (sal*12)+NVL(comm,0) 2 FROM emp;,使用 NVL 函数,ENAME SAL COMM (SAL*12)+NVL(COMM,0) - - - - KING 5000 60000 BLAKE 2850 34200 CLARK 2450 29400 JONES 2975 35700 MARTIN 1250 1400 16400 ALLEN 1600 300 19500 . 14 rows selected.,DECODE 函数,DECODE函数的作用类似于 CASE or IF-THEN-ELSE 语句,DECODE(col/expression, search1, result1 , search2, result2,., , default),使用 DECODE函数,SQL SELECT job, sal, 2 DECODE(job, ANALYST, SAL*1.1, 3 CLERK, SAL*1.15, 4 MANAGER, SAL*1.20, 5 SAL) 6 REVISED_SALARY 7 FROM emp;,JOB SAL REVISED_SALARY - - - PRESIDENT 5000 5000 MANAGER 2850 3420 MANAGER 2450 2940 . 14 rows selected.,使用 DECODE函数,SQL SELECT ename, sal, 2 DECODE(TRUNC(sal/1000, 0), 3 0, 0.00, 4 1, 0.09, 5 2, 0.20, 6 3, 0.30, 7 4, 0.40, 8 5, 0.42, 9 6, 0.44, 10 0.45) TAX_RATE 11 FROM emp 12 WHERE deptno = 30;,显示30号部门所有员工应交的税金.,函数的嵌套,单行的函数可以嵌套到任何一个层次. 嵌套函数的计算顺序先计算深层嵌套,再计算浅层嵌套.,F3(F2(F1(col,arg1),arg2),arg3),Step 1 = Result 1,Step 2 = Result 2,Step 3 = Result 3,嵌套函数,SQL SELECT ename, 2 ABS(NVL(age,0) 3 FROM emp 4 WHERE mgr IS NULL;,ENAME - - KING 0,总结,可以用函数来作如下的工作: 对数据进行计算 更改单个的数据条目 操纵数据行的输出 改变日期值的输出 改变列的数据类型,作业概览,建立需要用到日期、数字、字符串的函数的查询。 使用函数的串接和嵌套 使用字符串函数,建立大小写敏感的查询。 进行年、月等日期的计算。,从多个表中获取数据,目标,完成本节课的学习后,应当达到如下目标: 写出能从多个等连接或者非等连接的表中取出数据的SQL语句。 使用外连接来查找数据。 写出一个表与其自身连接的SQL语句。,EMPNO DEPTNO LOC - - - 7839 10 NEW YORK 7698 30 CHICAGO 7782 10 NEW YORK 7566 20 DALLAS 7654 30 CHICAGO 7499 30 CHICAGO . 14 rows selected.,从多个表中获取数据,EMP,DEPT,EMPNO ENAME . DEPTNO - - . - 7839 KING . 10 7698 BLAKE . 30 . 7934 MILLER . 10,DEPTNO DNAME LOC - - - 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON,什么是连接?,用一个连接来从多个表中获取数据. 在Where子句中书写连接的条件. 如果某个列的名字在多个表中出现了,那么需要在列的名字前面加上表名作为前缀.,SELECT table1.column, table2.column FROM table1, table2 WHERE table1.column1 = table2.column2;,笛卡尔积,以笛卡尔积连接的表具有下列特征: 连接条件被忽略。 第一个表中的所有的行与第二个表中的所有行相连接。 如果在WHERE子句中加入条件,那么可以避免笛卡尔积.,产生一个笛卡尔积,ENAME DNAME - - KING ACCOUNTING BLAKE ACCOUNTING . KING RESEARCH BLAKE RESEARCH . 56 rows selected.,EMP (14 行),DEPT (4 行),EMPNO ENAME . DEPTNO - - . - 7839 KING . 10 7698 BLAKE . 30 . 7934 MILLER . 10,DEPTNO DNAME LOC - - - 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON,连接的类型,等连接,非等连接,外连接,自连接,什么是等连接?,EMP,DEPT,EMPNO ENAME DEPTNO - - - 7839 KING 10 7698 BLAKE 30 7782 CLARK 10 7566 JONES 20 7654 MARTIN 30 7499 ALLEN 30 7844 TURNER 30 7900 JAMES 30 7521 WARD 30 7902 FORD 20 7369 SMITH 20 . 14 rows selected.,DEPTNO DNAME LOC - - - 10 ACCOUNTING NEW YORK 30 SALES CHICAGO 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 20 RESEARCH DALLAS 20 RESEARCH DALLAS . 14 rows selected.,用等连接获取纪录,SQL SELECT emp.empno, emp.ename, emp.deptno, 2 dept.deptno, dept.loc 3 FROM emp, dept 4 WHERE emp.deptno=dept.deptno;,EMPNO ENAME DEPTNO DEPTNO LOC - - - - - 7839 KING 10 10 NEW YORK 7698 BLAKE 30 30 CHICAGO 7782 CLARK 10 10 NEW YORK 7566 JONES 20 20 DALLAS . 14 rows selected.,限定不明确的列名,用表名作为前缀来限定在多个表中都出现的列名字. 利用表的前缀可以提高性能. 使用不同的别名来标志在不同表中的相同的名字。,用 AND操作符增加查询条件,EMP,DEPT,EMPNO ENAME DEPTNO - - - 7839 KING 10 7698 BLAKE 30 7782 CLARK 10 7566 JONES 20 7654 MARTIN 30 7499 ALLEN 30 7844 TURNER 30 7900 JAMES 30 7521 WARD 30 7902 FORD 20 7369 SMITH 20 . 14 rows selected.,DEPTNO DNAME LOC - - - 10 ACCOUNTING NEW YORK 30 SALES CHICAGO 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 30 SALES CHICAGO 20 RESEARCH DALLAS 20 RESEARCH DALLAS . 14 rows selected.,使用表的别名,使用的表的别名来简化查询,SQL SELECT emp.empno, emp.ename, emp.deptno, 2 dept.deptno, dept.loc 3 FROM emp, dept 4 WHERE emp.deptno=dept.deptno;,SQL SELECT e.empno, e.ename, e.deptno, 2 d.deptno, d.loc 3 FROM emp e, dept d 4 WHERE e.deptno= d.deptno;,连接多个表,NAME CUSTID - - JOCKSPORTS 100 TKB SPORT SHOP 101 VOLLYRITE 102 JUST TENNIS 103 K+T SPORTS 105 SHAPE UP 106 WOMENS SPORTS 107 . . 9 rows selected.,CUSTOMER,非等连接,EMP,SALGRADE,EMPNO ENAME SAL - - - 7839 KING 5000 7698 BLAKE 2850 7782 CLARK 2450 7566 JONES 2975 7654 MARTIN 1250 7499 ALLEN 1600 7844 TURNER 1500 7900 JAMES 950 . 14 rows selected.,GRADE LOSAL HISAL - - - 1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999,用非等连接查询记录,ENAME SAL GRADE - - - JAMES 950 1 SMITH 800 1 ADAMS 1100 1 . 14 rows selected.,SQL SELECT e.ename, e.sal, s.grade 2 FROM emp e, salgrade s 3 WHERE e.sal 4 BETWEEN s.losal AND s.hisal;,外连接,EMP,DEPT,ENAME DEPTNO - - KING 10 BLAKE 30 CLARK 10 JONES 20 .,DEPTNO DNAME - - 10 ACCOUNTING 30 SALES 10 ACCOUNTING 20 RESEARCH . 40 OPERATIONS,外连接,可以用外连接来查出在一个表中,不匹配连接条件的行. 外连接的关键字是:outer,SELECT table1.column, table2.column FROM table1, outer table2 WHERE table1.column = table2.column;,使用外连接,SQL SELECT e.ename, d.deptno, d.dname 2 FROM dept d ,outer emp e 3 WHERE e.deptno = d.deptno 4 ORDER BY e.deptno;,ENAME DEPTNO DNAME - - - KING 10 ACCOUNTING CLARK 10 ACCOUNTING . 40 OPERATIONS 15 rows selected.,自连接,EMP (WORKER),EMP (MANAGER),EMPNO ENAME MGR - - - 7839 KING 7698 BLAKE 7839 7782 CLARK 7839 7566 JONES 7839 7654 MARTIN 7698 7499 ALLEN 7698,EMPNO ENAME - - 7839 KING 7839 KING 7839 KING 7698 BLAKE 7698 BLAKE,表与自身连接,WORKER.ENAME|WORKSFOR|MANAG - BLAKE works for KING CLARK works for KING JONES works for KING MARTIN works for BLAKE . 13 rows selected.,SQL SELECT worker.ename| works for |manager.ename 2 FROM emp worker, emp manager 3 WHERE worker.mgr = manager.empno;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论