数据库学习笔记author——WANG
数据库复习整理笔记.doc

学习好资料欢迎下载加密的基本思想根据一定的算法将原始数据(术语为明文,Plain text)变换为不可直接识别的格式(术语为密文,Cipher text)。
不知道解密算法的人无法获知数据的内容。
触发器( Trigger)用户定义在关系表上的一类由事件驱动的特殊过程,一旦定义,任何用户对表的增加、修改和删除工作均由服务器自动激活相应的触发器,在DBMS 核心层进行集中的完整性控制。
触发器类似于约束,但是比约束更加灵活,可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力。
重点掌握并能够灵活运用关系模式规范化的方法和关系模式分解的方法,这也是本章的难点。
关系数据库:基于关系模型的数据库,利用关系来描述现实世界。
关系模式由五部分组成,即它是一个五元组:R(U,D,DOM,F)R:关系名U:组成该关系的属性名集合D:属性组U中属性所来自的域DOM :属性到域的映象集合F:属性间的数据依赖关系集合由于 D 和 DOM 对模式设计关系不大,因此可以把关系模式看做一个三元组: R <U, F> 。
例如:关系模式: S(Sno, Sdept, Sno→ Sdept)当且仅当 U 上的一个关系r 满足 F 时,r 称为关系模式 R <U, F>的一个关系。
数据依赖是数据库模式设计的关键,它是一个关系内部属性与属性之间的一种约束关系,这种约束关系是通过属性间的值是否相等体现出来的数据间的相互关系。
它是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。
数据依赖有很多类型,其中最重要的是:函数依赖( Functional Dependency,简记为 FD )多值依赖( Multivalued Dependency,简记为 MVD )其中,函数依赖起着核心的作用,是模式分解和模式设计的基础,范式是模式分解的标准。
一个“好”的模式应当:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。
数据库工程师 中级 三色笔记

数据库工程师中级三色笔记 蓝色笔记,基础概念篇。
你知道吗?数据库就像是咱们的大仓库,里面堆满了各种各样的数据货物。
作为数据库工程师,得学会怎么把这些货物分类、打包、快速找到。
SQL语言就像是咱们的“数据翻译官”,得掌握得溜。
还有数据结构、索引、视图这些,都是日常操作的好帮手。
绿色笔记,技术实践篇。
实战经验嘛,那可不能少。
比如说,有一天,老板突然让你把整个仓库的数据搬到新家去,怎么办?这时候,数据迁移、备份恢复这些技能就派上用场了。
得确保数据在搬家过程中不会丢、不会乱,还得快!所以,日常得多练习,以备不时之需。
红色笔记,前沿探索篇。
技术这东西,永远都在变。
数据库工程师也不能停留在原地。
分布式数据库、云数据库、图数据库这些新鲜玩意儿,听着就让人兴奋。
得时常关注新技术,学习实践,让自己的技能树更加枝繁叶
茂。
这样,无论未来遇到什么挑战,都能从容应对,成为真正的技术大牛!。
ORACLE自学笔记

ORACLE 10G 自学笔记一.ORACLE 常用的4个用户1.最高级别管理员用户SYS/CHANGE_ON_INSTALL2.普通级别管理员用户SYSTEM/MANAGER3.普通用户SCOTT/TIGER 默认锁定alter user scott identified by "tiger" account unlock 設置密碼4.大数据用户SH/SH 默认锁定二.与ORACLE 相关服务:其中最主要的二个服务为:1.监听服务:OracleOraDb10g_home1TNSListener| 以后如果有程序要操作数据库,或者是一些远程的客户端要连接数据库则必须启动此服务2.数据库实例服务:OracleServiceTUG| 保存数据库具体信息的服务,每一个数据库有每一个数据库的实例(服务)| 命名规则:OracleServiceXXX 其中XXX为配置数据库的名称(严格的意义是SID的名称)三.ORACLE監聽問題ORACLE 二種常見的錯誤解決方案:錯誤一:註冊表相關項丟失問題HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\OracleOraDb10g_home1TNSListener ImagePath中D:\oracle\product\10.1.0\db_1\BIN\TNSLSNR錯誤二:網絡環境的改變例:計算機名的改變在ORACLE10G或者更早的版本中這個問題只能手工解決ORACLE11G則可以幫助用戶自動的重新配置1. D:\oracle\product\10.1.0\db_1\NETWORK\ADMIN中listener.ora和tnsnames.ora 用記事本打開修改其中的(HOST =xxx)部分2.如果以上方法仍舊無法解決問題那麽再進入NET MANAGER 選項選擇監聽程序中的LISTENER 選擇數據庫服務后添加數據庫添加正確的服務器名稱和SID 此更改作用与listener.ora之中。
数据库学习笔记与总结

数据库学习笔记与总结1.数据库1.1.基本查询语句1. S electSELECT column_name,column_name FROM table_name;SELECT * FROM table_name;SELECT DISTINCT column_name,column_name FROM table_name;2. W hereSELECT * FROM Websites WHERE country='CN'SQL 使用单引号来环绕文本值,如果是数值字段,请不要使用引号运算符描述= 等于<> 不等于。
注释:在SQL 的一些版本中,该操作符可被写成!= > 大于< 小于>= 大于等于<= 小于等于BETWEEN 在某个范围内LIKE 搜索某种模式IN 指定针对某个列的多个可能值SELECT * FROM Websites WHERE country='CN' AND alexa > 50SELECT * FROM Websites WHERE country='USA' OR country='CN';SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR country='USA');3. O RDER BYORDER BY 关键字默认按照升序对记录进行排序。
如果需要按照降序对记录进行排序,您可以使用DESC 关键字。
SELECT column_name,column_nameFROM table_nameORDER BY column_name,column_name ASC|DESC;SELECT * FROM Websites ORDER BY country,alexa;4. I NSERT INTOINSERT INTO table_nameVALUES (value1,value2,value3,...);NSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);5. U PDEATEUPDATE table_nameSET column1=value1,column2=value2,...WHERE some_column=some_value;6. D ELETEDELETE FROM Websites WHERE name='百度' AND country='CN';1.2.高级查询1.LIKESELECT TOP 50 PERCENT * FROM Websites;SELECT * FROM Websites WHERE name LIKE 'G%'"%" 符号用于在模式的前后定义通配符(缺省字母);“_”代替一个字符2.IN、BETWEEN、AS(1) IN 操作符允许您在WHERE 子句中规定多个值(2) BETWEEN 操作符用于选取介于两个值之间的数据范围内的值(3) AS 为表名称或列名称指定别名SELECT * FROM WebsitesWHERE name IN ('Google','菜鸟教程')SELECT column_name(s)FROM table_nameWHERE column_name BETWEEN value1 AND value2;3.JOIN(1)INNER JOIN 与JOIN 是相同的。
hibernate4学习笔记

hibernate4学习笔记Hibernate4学习笔记本⼈全部以⾃学为主,在⽹上收集各种学习资料,总结归纳学习经验,现将学习路径给予⼤家分享。
此次学习的hibernate的版本是:hibernate-release-4.2.4.Final(截⽌2015年7⽉31⽇最新版),JAVA的版本是:java8.0,使⽤的开发⼯具是:Eclipse Mars Release (4.5.0)。
第⼀天:Hibernate4基础知识和HelloWorld简单编程Hibernate是⼀种半成品ORM框架,对数据库持久化操作,程序员对数据库的操作转换成对对象的操作。
ORM 采⽤元数据来描述对象-关系映射细节, 元数据通常采⽤XML 格式, 并且存放在专门的对象-关系映射⽂件中。
HelloWorld简单编程1、准备Hibernate环境(1)导⼊Hibernate的Jar包,如下:(2)导⼊Mysql驱动包,我⽤的数据库是:Mysql 5.0,数据库驱动包如下:以上所有Jar加完毕之后,需要加⼊到Eclipse⾃⾝系统⾥⾯,具体如下:以上操作完毕之后,Hibernate的环境就算搭建完毕,下⾯就可以进⼀步操作。
2、配置hibernate.cfg.xml⽂件,主要是对数据库的连接,具体如下:"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/doc/63fa364d5022aaea998f0fde.html /hibernate-configuration-3.0.dtd ">rootmysqlname="connection.driver_class">com.mysql.jdbc.Driver jdbc:mysql:///Test(或者:jdbc:mysql://localhost:3306/Test)name="dialect">org.hibernate.dialect.MySQLInnoDBDialecttruetrueupdate3、编写⼀个实例类News.java,具体代码如下:package com.hibernate.helloworld;import java.sql.Date;public class News {private Integer id;private String title;private Date date;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public Date getDate() {return date;}public void setDate(Date date) {this.date = date;}public News(String title, String author, Date date) { super();this.title = title;this.author = author;this.date = date;}public News(){}@Overridereturn"News [id="+ id+ ", title="+ title+ ", author="+ author + ", date=" + date + "]";}}4、创建News.hbm.xml配置映射⽂件,具体代码如下:"/doc/63fa364d5022aaea998f0fde.html /hibernate-mapping-3.0.dtd">5、将映射⽂件News.hbm.xml指定到hibernate.cfg.xml配置⽂件⾥⾯,即在hibernate.cfg.xml⽂件⾥加⼊⼀⾏映射代码,具体如下:6、创建hibernate API操作测试类(Juit测试),验证hibernate的优势效果,具体代码如下:package com.hibernate.helloworld;import java.sql.Date;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;import org.junit.Test;public class HibernateTest {@Testpublic void test() {//1. 创建⼀个 SessionFactory 对象SessionFactory sessionFactory=null;//1). 创建 Configuration 对象: 对应 hibernate 的基本配置信息和对象关系映射信息Configuration configuration=new Configuration().configure();//4.0 之前这样创建//sessionFactory=configuration.buildSessionFactory();//2). 4.0以后创建⼀个 ServiceRegistry 对象: hibernate 4.x 新添加的对象//hibernate 的任何配置和服务都需要在该对象中注册后才能有效.ServiceRegistry serviceRegistry=newServiceRegistryBuilder().applySettings(configuration.getProperties() ).buildServiceRegistry();sessionFactory=configuration.buildSessionFactory(serviceRegistry) ;//2. 创建⼀个 Session 对象Session session=sessionFactory.openSession();//3. 开启事务Transaction transaction=session.beginTransaction();//4. 执⾏保存操作News news = new News("Java12345", "ATGUIGU", new Date(new java.util.Date().getTime()));session.save(news);//5. 提交事务/doc/63fa364d5022aaea998f0fde.html mit();//6. 关闭 Sessionsession.close();//7. 关闭 SessionFactory 对象sessionFactory.close();}}7、测试结果如下:(1)数据库⾥⾯的结果如下:(2)Eclipse下的语句⽣成如下:以上就是简单Hibernate的测试,总结:1、不需要在数据库⾥⾯创建任何数据,由hibernate ⾃动⽣成;2、代码简单易理解,不复杂,测试数据只需要先创建以下⼏个步骤:SessionFactory-→Session-→Transaction-→session操作数据库-→提交-→关闭;3、不需要写SQL 语句,从头到尾没有写⼀条SQL语句,反⽽Hibernate帮我们⽣成SQL语句。
数据库系统教程第三版笔记

数据库系统教程第三版笔记
《数据库系统教程(第三版)》是数据库领域的一部经典教材,其内容涵盖了数据库的基本概念、原理、技术和应用等方面。
以下是一份可能的笔记提纲,供您参考:
1. 数据库系统概述
数据库的定义和作用
数据库系统的组成
数据库系统的特点
2. 数据模型
数据模型的概念和分类
层次模型和网状模型
关系模型
面向对象模型
3. 关系数据库系统
关系数据库的基本概念
关系代数和关系演算
数据库语言SQL
4. 数据库设计和规范化
数据库设计的基本概念和步骤
规范化理论和方法
E-R模型和逻辑结构设计
5. 数据库管理系统
数据库管理系统的功能和组成
数据库存储结构和管理技术
数据库的并发控制和恢复技术
6. 数据库应用开发和管理
数据库应用开发概述
数据库应用程序设计和开发过程
数据库系统的管理和维护
7. 分布式数据库系统
分布式数据库系统的概念和特点
分布式数据库系统的体系结构和设计方法分布式查询处理和优化技术
8. 数据仓库和大数据处理
数据仓库的概念和特点
数据仓库的体系结构和设计方法
大数据处理技术及其应用
9. 新技术和新应用
NoSQL数据库系统
云计算和云数据库系统
数据挖掘和机器学习在数据库中的应用
10. 实验和实践环节
关系数据库管理系统(如MySQL、Oracle等)的使用和实践操作
使用SQL进行数据查询和操作,掌握基本的数据定义语言(DDL)、数据操纵语言(DML)和数据控制语言(DCL)等。
进行数据库设计和规范化实践,掌握E-R模型、逻辑结构设计等方法和技巧。
数据库读书笔记

数据库读书笔记数据库读书笔记读完某一作品后,相信大家的视野一定开拓了不少,记录下来很重要哦,一起来写一篇读书笔记吧。
那么你会写读书笔记吗?下面是小编收集整理的数据库读书笔记,欢迎阅读,希望大家能够喜欢。
一、存储优化物化视图——物化视图是包括一个查询结果的数据库对象(可由系统定期刷新其中的数据),物化视图不是在使用时才读取,而是预先计算并保存表连接或聚集等耗时较多的操作结果,这样在查询时大大提高读取速度,特别适用于多个数据量较大的表进行连接操作及分布式数据库中需要进行分布在多个站点的表进行连接操作时使用。
物化视图可以进行远程数据的本地复制,此时物化视图的存储也可以成为快照。
主要用于实施数据库间的同步。
物化视图对于数据库客户端的使用者来说如同一个实际表,具有和表相同的一般select操作,而其实际上是一个视图,一个定期刷新的数据视图。
物化视图的刷新可采用自动刷新和人工刷新两种方式,具体刷新方式和刷新时间在定义物化视图的时候可以定义。
使用物化视图可以实现视图的所有功能,因物化视图不是在使用时才读取,而大大提高了读取速度,特别使用抽取大量数据表中某些信息以及分布式环境中跨节点进行多表数据连接的场合。
聚集二、查询优化在数据库运行初期,数据库对SQL语句各种写法的性能优劣还不敏感,但是随着数据库正式使用,数据库中的数据不断增加,劣质SQL语句和好的SQL语句之间的速度差异就逐渐显示出来。
合理使用索引避免和简化排序:通常在运行order by和group by的SQL语句值,会涉及到排序操作,应当简化成避免对大型表进行重复排序,因为磁盘排序的开销是很大的。
与内存排序相比,磁盘排序操作很慢,从而会花费很长时间,降低数据库性能,而且磁盘排序会消耗临时表空间中的资源。
当能够利用索引自动以适当的次序产生输出时,优化器就可以避免不必要的排序步骤,以下是一些影响因素:(1)由于现有索引的不足,导致排序时索引中不包括一个或几个待排序的列;(2)group by或order by子句中列的次序与索引的次序不一样;(3)排序的列来源于不同的表。
orccle数据库,自学笔记

Sys账户口令:change_on_installSystem账户口令:managerEnterprise:企业Database:数据库Extended:扩展migration /maɪˈɡreɪʃn/:迁移utility /juːˈtɪləti/:实用,多用途public utility公用事业(公司):directory /dəˈrektəri/ DJ:电话号码簿;公司名录,计算机文件或程序的)目录Release Notes:发行说明1,建立表空间:create tablespace wangDatafile’e:\wang\wang.dbf”size 100MAutoextend on next 1MMaxsize 200M建立表空间,名称wang,数据文件路径e:\wang\wang.dbf,大小100M,最大空间200M,自动扩展空间1M。
2,删除表空间:drop tablespace wang i ncluding contentsContent:翻译内容,该方法磁盘上仍然有文件。
磁盘上的文件,手工删除,对8i版本,9i版本可以加and datafiles 删除文件。
3,创建用户,create user wang identified by wangDefault tablespace guiTemporary tablespace temp创建用户:wang,密码:wang默认表空间:gui临时表空间:temp,4,grant /ɡrɑːnt/,创建,用户授权Grant connect to wang:连接数据库权利授予wang用户Resource ,资源,dba,管理员权利revoke /rɪˈvəʊk/,收回权限revoke resource from wang将wang 的资源访问权收回5,alter /ˈɔːltə(r)/改变,更改,改动修改用户密码alter user wang Indentified By gui6,删除用户:Drop user wang cascade :级联删除用户,将用户所有数据删除一,关于表1constraint /kənˈstreɪnt 约束。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、基本概念 (2)二、数据库基本操作 (2)①常用的查询条件运算符: (2)②创建表: (2)③修改基本表: (3)④删除基本表或视图 (3)⑤创建索引 (3)三、表内数据的操作 (3)① select语句 (3)②聚集函数 (3)③ group by 子句 (4)④ where 与 having的区别: (4)⑤连接查询 (4)⑥嵌套查询: (5)四、数据更新操作 (7)①插入数据 (7)②修改数据(更新数据) (7)③删除数据 (8)五、视图 (8)①建立视图 (8)②删除视图 (8)③视图的作用 (8)六、授权 (9)七、触发器 (9)八、范式 (10)一、基本概念①数据:是数据库中存储的基本对象、数据库:(DataBase简称DB)是长期存储在计算机内、有组织的、可共享的大量数据的集合数据库管理系统:(DBMS)位于用户与操作系统之间的一层数据管理软件数据库系统:(DBS)在计算机中引入数据库后的系统构成数据模型:在数据库中用数据模型这个工具来抽象、表示和处理现实世界中的数据信息。
通俗的讲,数据模型就是现实世界的模拟数据模型的组成要素:数据结构、数据操作、完整性约束条件②实体:客观存在并可相互区别的事物称为实体属性:实体所具有的某一特性码:唯一标识实体的属性域:属性取值范围称为该属性的域实体型:用实体名及其属性名集合来抽象和刻画同类实体实体集:同一类型实体的集合实体内部的联系(1对多)联系:实体间的联系(1对1)E-R图:实体型用矩形表示、属性用椭圆表示、联系用菱形表示③关系的完整性:实体完整性(主码不能为空)、参照完整性、用户定义完整性一、数据库基本操作①常用的查询条件运算符:比较:=、>、<、>=、<=、!=、<>、!>、!<、NOT加上比较运算符确定范围:between and,not between and确定集合:in<值表>、not in<值表>字符匹配:[not]like ‘匹配串’[escape ‘<转码字符>’] 。
通配符:%、_。
(%可心代表0个或0个以上的所有字符,它代的是一个字符串;_只能代表一个字符。
一个汉字占两个字符,故匹配一个汉字需使用两个_,即_ _)空值:is null、is not null(不能用=null代替is null)多重条件:and、or、not例:查询以“DB_开头,且倒数第三个字符为i的课程”Select * from Course where Cname like ‘DB\_%i_ _’ escape ‘\’②创建表:Create table Course(Cno char(4) primary key,Cname varchar(40) unique,/*Cname取值唯一*/Ssex char(2) check(Ssex in(‘男’,’女’)),/*性别属性只能取’男’或’女’*/Cpno char(4),Ccridit smallint,Foreign key(Cpno) references Course(Cno));③修改基本表:Alert table <表名>[add <新列名><数据类型>[完整性约束]][drop <完整性约束名>][alert column <列名><数据类型>];④删除基本表或视图Drop Schema <模式名> <cascade|restrict>Drop table <表名> <cascade|restrict>⑤创建索引Create [unique][cluster] index <索引名>On <表名>(<列名>[<次序>] [,<列名>[<次序>]]……);例:create unique index SCno on SC(Sno asc,Cno desc);二、表内数据的操作① select语句Select [all|distinct]<目标列表达式>[,<目标列表达式>]……From <表名或视图>[,<表名或视图>]……[where <条件表达式>][group by <列名>[having <条件表达式>]][order by <列名> [asc|desc]]注:distinct表示数据去重,默认的为all例:Select Sname,”year of birth:”,2004-Sage BIRTHDAY,islower(Sdept) DEPARTMENT from student解析:这个查询语句查了student表中的3个字段,Sname、Sage、Sdept,而”year of birth:”是在查询的结果列中加入一列字符串。
2004-age是一个表达式,它后面的BIRTHDAY是指将查询的结果列的列名用BIRTHDAY代替(如果不代替,则显示的列名将会是2004-age)。
Islower(Sdept)是指将查询到的Sdept数据以小写的形式呈现②聚集函数计数:count ([distinct|all]*) 统计元组个数Count ([distinct|all]<列名>) 统计一列中值的个数计算总和:sum ([distinct|all]<列名>) 计算一列值的总和(此列必需是数值型)计算平均:avg([distinct|all]<列名>)最大:max([distinct|all]<列名>) 求一列值中的最大值最小:min([distinct|all]<列名>) 求一列值中的最小值注:在聚集函数遇到空值时,除count(*)外,都能跳过空值而处理非空值。
Count <列名>也会跳过空值而处理非空值例:select count(distinct Sno) from SC;Select avg(Grade) from SC where Cno=’1’;Select max(Grade) from SC where Cno=’1’;Select sum(Ccredit) from SC,Course where Sno=’200215012’ andSC.no=o; /*查询学生200215012选修课程的总学分数*/③ group by 子句将查询结果按某一列或多列的值进行分组,值相等的为一组。
结查询结果分组的目的是为了细化聚集函数的作用对象,如果未对查询结果分组,聚集函数将作用于整个查询结果,分组后聚集函数将作用于每个分组,即每一组都有一个函数值。
Select后为聚集函数时,它一般只能带分组字段(带其它字段似乎意义不大,当然,带的话在语法上是没有错的)例:Select Sno from SC group by Sno having count(*)④ where 与 having的区别:Where子句作用于基本表或视图。
Having作用于组。
⑤连接查询若一个查询同时涉及两个两个以上的表,则称之为连接查询。
连接查询包括:等值连接、自然连接、非等值连接、自身连接、外连接和复合条件连接查询。
1、等值连接与非等值连接:例:select Student.*,SC.* from Student,SC where Student.Sno=SC.Sno 解析:sql的意思为将Student与SC中同一学生的信息的元组连接起来,并返回查询结果,返回的即为学生的信息。
此查询涉及了两个表,且带有比较运算符。
使用的比较运算符为=时,就叫等值连接,使用的是其他比较运算符时就叫非等值连接。
RDBMS执行该连接操作的一种可能过程是:首先在表Student中找到第一个元组,然后从头开始扫描SC表,逐一查找与Student 第一个元组的Sno相等的SC无组,找到后将Student中的第一个元组与该元组拼接起来,形成结果表中的一个元组。
SC表全部查找一遍后,再开始Student表中的第二个元组,依此反复执行,直到找完Student表为止。
2、自然连接若在等值连接中把目标列中的重复的属性列去掉则为自然连接例:对上面的sql使用自然连接查询来完成的话即为:Select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,GradeFrom Stuent,SCWhere Student.Sno=SC.Sno3、自身连接:一个表与其自己进行连接,称为表的自身接连。
例:查询每门课程的间接先修课Select o,second.Cpno from Course first,Course secondWhere first.Cpno=o注:在做自身连接时需要将表取别名以示区别。
4、外连接:如果在关系R和关系S作自然连接时,把该舍弃的元组也保留在新关系中,在新增加的属性上填空值(null),那么这种操作叫外连接操作。
如果只把R中舍弃的元组放到新关系中,则称为“左外连接”,相应的如果只把S中舍弃的元组放到新关系中,则称为“右外连接”。
三种外连接:left、right、full例:select Student.Sno,Sname,Ssex,Sage,Ssdept,Cno,GradeFrom Student left out join SC on (Student.Sno=SC.Sno);/*也可使用using来去掉结果中的重复值:from Student left out joinusing(Sno);*/5、复合条件连接:Where子句中如果有多个连接条件,则称为复合条件连接。
例1:查询选修2号课程且成绩在90分以上的所有学生Select Student.Sno,SnameFrom Student,SCWhere Student.Sno=SC.Sno and o=’2’ and SC.Grade>90;解析:该查询的一种优化的执行过程是先从SC中挑选出Cno=’2’并且Grade>90的元组形成一个中间关系,再和Student中满足连接条件的元组进行连接得到最终的结果关系。
例2:查询每个学生的学号、姓名、选修课的课程名及成绩Select Student.Sno,Sname,Cname,GradeFrom Student,SC,CourseWhere Student.Sno=SC.Sno and o=o;⑥嵌套查询:在sql语言中,一个select-from-where语句称为一个查询块。