SQL语句大全实例_第1页
SQL语句大全实例_第2页
SQL语句大全实例_第3页
SQL语句大全实例_第4页
SQL语句大全实例_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、学号3KO姓名SHANE锌龄AGE性别 SEX黠贵B PLACE9900219&0S52 gsoseaG90S74090573 如刖 991091张舂明22242224332433SQL语句实例何)学生STUDENTS课程号课程名字分CNOCNAMECKEB1TC1教培库3C2数据皓构3C34C4戟件工程3(b)课程 C0W5ES斂师号TNOTKAKE年龄AGE职称FS1420周毎华3S副教授刘逹平30讲师143320讲师数师1EACHERS课程号饲0班級 CLASS教师号THO学生数 SNUMC1£8/51142030C2U2033C3囲为143130C3ESJ214S12

2、0C4ES51143234C1ES咒U303g任课TEACHING表操作学号谍程号成赣SNOCHOCL990027C33S0027C4990653CL990652C430060C3500674C2900676C3990 閔 4C3aGoe34CL901091C3怨)选课ENROLLS例1对于表得教学管理数据库中得表STUDENTS ,可以定义如下:CREATE(SNOSNAMEAGESEXBP LACETABLE STUDENTSNUMERIC (6, 0) NOT NULLCHAR (8) NOT NULL NUMERIC(3,0) CHAR(2)CHAR(20)P RIMARY KEY(S

3、NO)ENROLLS ,可以定义如下:例2对于表得教学管理数据库中得表CREATE(SNOCNOGRADETABLE ENROLLSNUMERIC(6,0) NOT NULLCHAR(4) NOT NULLINTP RIMARY KEY(SNO,CNO)FOREIGN KEY(SNO) REFERENCES STUDENTS(SNO)FOREIGN KEY(CNO) REFERENCES COURSES(CNO)CHECK (GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100)例3根据表得STUDENTS 表,建立一个只包含学号、姓名、年龄得女学生表。CREA

4、TE TABLE GIRLAS SELECT SNO, SNAME, AGEFROM STUDENTS女';WHERE SEX='4删除教师表 TEACHER 。DROP TABLE TEACHER5在教师表中增加住址列。ALTER TABLE TEACHERSADD (ADDR CHAR(50)6把STUDENTS 表中得BP LACE 列删除, 约束也一起删除。并且把引用 BP LACE 列得所有视图与ALTER TABLE STUDENTSDROP BP LACE CASCADE例7补充定义ENROLLS 表得主关键字。ALTER TABLE ENROLLSADD P R

5、IMARY KEY (SNO,CNO)视图操作(虚表)例9建立一个只包括教师号、姓名与年龄得视图ORDER BY 子句)CREATE VIEW FACULTYFACULTY 。(在视图定义中不能包含AS SELECT TNO, TNAME, AGEFROM TEACHERS例10从学生表、课程表与选课表中产生一个视图 课程名与成绩。GRADE_TABLE ,它包括学生姓名、CREATE VIEW GRADE TABLEAS SELECT SNAME,CNAME,GRADEFROM STUDENTS,COURSES,ENROLLSWHERE STUDENTS、SNO = ENROLLS、SNO

6、ANDCOURSES、CNO=ENROLLS 、CNO 例11 删除视图 GRADE_TABLEDROP VIEW GRADE_TABLE RESTRICT索引操作例12在学生表中按学号建立索引。CREATE UNIQUE INDEX STON STUDENTS (SNO,ASC) 例13删除按学号所建立得索引。DROP INDEX ST数据库模式操作例14创建一个简易教学数据库得数据库模式TEACHING_DB ,属主为ZHANG 。CREATE SCHEMA TEACHING_DB AUTHRIZATION ZHANG例15删除简易教学数据库模式TEACHING_DB 。( 1 )选用CA

7、SCADE ,即当删除数据库模式时,则本数据库模式与其下属得基本表、视图、索引等全部被删除。(2 )选用RESTRICT ,即本数据库模式下属得基本表、视图、索引等事先已清除,才能删除 本数据库模式,否则拒绝删除。)DROP SCHEMA TEACHING_DB CASCADE单表操作16找出3个学分得课程号与课程名。SELECT CNO, CNAMEFROM COURSESWHERE CREDIT = 317查询年龄大于 22岁得学生情况。SELECT *FROM STUDENTSWHERE AGE 2218找出籍贯为河北得男生得姓名与年龄。SELECT SNAME, AGEFROM STU

8、DENTSWHEREBP LACE ='河北AND SEX ='男'19找出年龄在 2023岁之间得学生得学号、姓名与年龄,并按年龄升序排序。(ASC (升序)或 DESC (降序)声明排序得方式,缺省为升序。)SELECT SNO, SNAME, AGEFROM STUDENTSWHERE AGE BETWEEN 20 AND 23ORDER BY AGE(大于)、=(大 (或)等。得格式。特殊字例20找出年龄小于 23岁、籍贯就是湖南或湖北得学生得姓名与性别。(条件比较运算 符=、 与逻辑运算符 AND (与),此外还可以使用得运算符有:于等于)、=(小于等于)、

9、(不等于)、NOT (非)、 OR谓词LIKE只能与字符串联用,常常就是“ 列名 LIKE pattern符“_”与“ '作为通配符。中得某得缩写。谓词 NOT IN表示指定得属性不与谓词IN表示指定得属性应与后面得集合(括号中得值集或某个查询子句得结果) 个值相匹配,实际上就是一系列得OR (或)后面得集合中得某个值相匹配。得意思。)谓词BETWEEN 就是 “包含于 之中”SELECT SNAME, SEXFROM STUDENTSLIKE'湖 'WHERE AGE 23 AND BP LACE或SELECT SNAME, SEX FROM STUDENTSIN (

10、'湖南,湖北)WHERE AGE < 23 AND BP LACE例22找出学生表中籍贯就是空值得学生得姓名与性别。(在SQL中不能使用条件:V列名>=NULL 。在SQL中只有一个特殊得查询条件允许查询NULL值:)SELECT SNAME, SEXFROM STUDENTSWHERE BP LACE IS NULL多表操作23找出成绩为 95分得学生得姓名。(子查询)SELECT SNAMEFROMSTUDENTSWHERESNO =(SELECT SNOFROM ENROLLSWHERE GRADE = 95)24找出成绩在 90分以上得学生得姓名。SELECT SN

11、AMEFROM STUDENTSWHERE SNO IN(SELECT SNOFROM ENROLLSWHERE GRADE > 90)SELECTSNAMEFROMSTUDENTSWHERESNO = ANY(SELECT SNOFROM ENROLLSWHERE GRADE > 90)25查询全部学生得学生名与所学课程号及成绩。(连接查询)SELECT SNAME, CNO, GRADEFROM STUDENTS, ENROLLSENROLLS 、 SNOWHERE STUDENTS 、 SNO =1 (若有三个 则对此主关26找出籍贯为山西或河北,成绩为 90分以上得学生得姓

12、名、籍贯与成绩。(当构造 多表连接查询命令时,必须遵循两条规则。第一,连接条件数正好比表数少 表,就有两个连接条件);第二,若一个表中得主关键字就是由多个列组成,键字中得每一个列都要有一个连接条件(也有少数例外情况)SELECTSNAME, BP LACE, GRADEFROMSTUDENTS, ENROLLSWHEREBP LACE IN ( 山西, 河北)AND GRADE > =SNO=ENROLLS 、SNOSTUDENTS 、例28查出课程成绩在 80分以上得女学生得姓名、课程名与成绩。(90 ANDFROM子句中得子查询)SELECT SNAME,CNAME, GRADEFR

13、OM (SELECT SNAME, CNAME , GRADEFROM STUDENTS, ENROLLS,COURSES WHERE SEX ='女')AS TEMP (SNAME, CNAME,GRADE)WHERE GRADE > 80表达式与函数得使用例29查询各课程得学时数。(算术表达式由算术运算符+、-量所组成。)SELECT CNAME,COURSE_TIME FROM COURSES例30找出教师得最小年龄。(内部函数:MIN函数,称之为聚集函数(*、/与列名或数值常CREDIT*16MAX、列统计值得总数目,SUMMAX函数求该列最大值,SELECT M

14、IN(AGE)FROM TEACHERS31统计年龄小于等于SELECT COUNT(*)FROM STUDENTSWHERE AGE < =SQL标准中只使用Set Function函数求该列统计值之与,MIN函数求该列最小值。)22岁得学生人数。(统计)22COUNT 、SUM、AVG、COUNT函数得结果就是该AVG函数求该列统计值之平均值,)。32找出学生得平均成绩与所学课程门数。COUNT(*)SELECT SNO, AVG(GRADE), COURSESFROM ENROLLSGRO UP BY SNO34找出年龄超过平均年龄得学生姓名。SELECT SNAMEFROM ST

15、UDENTSWHERE AGE >(SELECT AVG(AGE)FROM STUDENTS)3人得课程得成绩。例35找出各课程得平均成绩,按课程号分组,且只选择学生超过(GROUP BY 与 HAVINGGRO UP BY 子句把一个表按某一指定列(或一些列)上得值相等得原则分组,然后 再对每组数据进行规定得操作。GROUP BY 子句总就是跟在 WHERE子句后面,当WHERE子句缺省时,它跟在 FROM子句后面。HAVING子句常用于在计算出聚集之后对行得查询进行控制。)SELECT CNO, AVG(GRADE), STUDENTSFROM ENROLLS=COUNT(*)GRO

16、 UP BY CNOHAVING COUNT(*) >= 3相关子查询例37查询没有选任何课程得学生得学号与姓名。(当一个子查询涉及到一个来自外部查 询得列时,称为相关子查询(Correlated Subquery)。相关子查询要用到存在测试谓词EXISTS 与 NOT EXISTS ,以及 ALL 、 ANY(SOME )等。)SELECT SNO, SNAMEFROM STUDENTSWHERE NOT EXISTS(SELECT *FROM ENROLLSWHERE ENROLLS 、SNO=STUDENTS例38 查询哪些课程只有男生选读。、SNO)SELECT DISTINCT

17、 CNAMEFROM COURSESCWHERE '男'=ALL(SELECT SEXFROM ENROLLSSTUDENTSWHERE ENROLLS 、SNO=STUDENTS、SNO ANDENROLLS、CNO=C例39要求给出一张学生、籍贯列表, 籍贯省份。、CNO)该表中得学生得籍贯省份,也就是其她一些学生得SELECTSNAME, BP LACEFROMSTUDENTS AWHEREEXISTS(SELECT *FROM STUDENTS BWHERE A、BPLACE=B、BP LACE ANDA、SNO < > B、SNO)例40找出选修了全部课程

18、得学生得姓名。本查询可以改为:查询这样一些学生,没有一门课程就是她不选修得。SNAMESELECTFROMSTUDENTSWHERENOT EXISTS(SELECT *FROM COURSESWHERE NOT EXISTS(SELECT *FROM ENROLLSWHERE ENROLLS 、SNO = STUDENTS 、SNOAND ENROLLS 、CNO = COURSES、CNO)关系代数运算SP SUBORD 与营销经理表例41设有某商场工作人员得两张表:营业员表 SP_MGR ,其关系数据模式如下:SP_SUBORD (SAL PERS_ID, SAL PERS_NAME,

19、MANAGER_ID, OFFICE)SP_MGR (SAL PERS_ID, SAL PERS_NAME, MANAGER_ID, OFFICE) 其中,属性 SAL PERS_ID 为工作人员得编号 ,SAL PERS_NAME为工作人员得姓名,MANAGER_ID 为所在部门经理得编号,OFFICE为工作地点。若查询全部商场工作人员,可以用下面得SQL语句:(SELECT * FROM SP_SUBORD)UNION(SELECT * FROM SP_MGR)或等价地用下面得 SQL语句:SELECT *FROM (TABLE SP_SUBORD UNION TABLE SP_MGR)(

20、2 ) INTERSECT(SELECT * FROM SP_SUBORD)INTERSECT(SELECT * FROM SP_MGR)或等价地用下面得 SQL语句:SELECT *FROM (TABLE SP_SUBORD INTERSECT TABLE SP_MGR)或用带ALL得SQL语句:(SELECT * FROM SP_SUBORD)INTERSECT ALL(SELECT * FROM SP_MGR)或SELECT *FROM (TABLE SP_SUBORD INTERSECT ALL TABLE SP_MGR)(3 ) EXCEPT(SELECT * FROM SP_MGR

21、)EXCEPT(SELECT * FROM SP_SUBORD)或等价地用下面得 SQL语句:SELECT *FROM (TABLE SP_MGR EXCE PT TABLE SP_ SUBORD)或用带ALL得SQL语句:(SELECT * FROM SP_MGR)EXCEPT ALL(SELECT * FROM SP_SUBORD)例42查询籍贯为四川、课程成绩在80分以上得学生信息及其成绩。(自然连接)(SELECT * FROM STUDENTSWHERE BPLACE= 四川')NATURAL JOIN(SELECT * FROM ENROLLS WHERE GRADE &g

22、t;=80)例3、43列出全部教师得姓名及其任课得课程号、班级。(外连接与外部并外连接允许在结果表中保留非匹配元组, 得作用就是在做连接操作时避免丢失信息。外连接有3类:(1 )左外连接( Left Outer Join 果表中保留左关系得所有元组。(2 )右外连接( Right Outer Join 结果表中保留右关系得所有元组。(3 )全外连接( Full Outer Join 果表中保留左右两关系得所有元组。)SELECT TNAME, CNO, CLASSFROM TEACHERS LEFT OUTER JOIN TEACHING USING (TNO)。连接运算谓词为)。连接运算谓词

23、为)。连接运算谓词为空缺部分填以 NULL 。外连接LEFT OUTER JOINRIGHT OUTER JOINFULL OUTER JOIN,其结,其,其结SQL得数据操纵44把教师李映雪得记录加入到教师表INSERT INTO TEACHERS VALUES(1476 ,'李映雪',45成绩优秀得学生将留下当教师。INSERT INTO TEACHERS (TNOSELECT DISTINCT SNO , SNAME FROM STUDENTS , ENROLLS WHERE STUDENTS 、SNO47把所有学生得年龄增加一岁。TEACHERS 中。(插入)44

24、9;副教授')TNAME)=ENROLLS、SNO AND GRADE >= 90(修改)UP DATE STUDENTSSET AGE = AGE+148学生张春明在数据库课考试中作弊,该课成绩应作零分计。UP DATE ENROLLSSET GRADE = 0WHERE CNO = 'C1' AND'张春明'=(SELECT SNAMEFROM STUDENTSWHERE STUDENTS 、SNO=ENROLLS、SNO)49从教师表中删除年龄已到60岁得退休教师得数据。(删除)DELETE FROM TEACHERSWHERE AGE &g

25、t;= 60SQL得数据控制例50授予LILI有对表STUDENTS得查询权。(表/视图特权得授予 一个SQL特权允许一个被授权者在给定得数据库对象上进行特定得操作。INSERT得数据库对象包括:表 /视图、列、域等。授权得操作包括: DELETE 、 SELECT 、 REFERENCES 、 TRIGGER EXECUTE 等。其中 INSERT、UP DATE 、DELETE TRIGGER有对表做相应操作得权限,故称为表特权。)GRANT SELECT ON STUDENTSTO LILI授权操作UPDATEUNDER 、SELECT 、 REFERENCESUSAGEWITH GRA

26、NT OP TION例51 取消 LILI得存取 STUDENTS 表得特权。REVOKE ALLON STUDENTSFROM LILI CASCADE不断补充中:可用于 char、varchar、text、ntext、datetime1、 模糊查找: 它判断列值就是否与指定得字符串格式相匹配。与smalldatetime等类型查询。可使用以下通配字符:%。F:其百分号% :可匹配任意类型与长度得字符,如果就是中文,请使用两个百分号即 下划线_:匹配单个任意字符,它常用来限制表达式得字符长度。方括号:指定一个字符、字符串或范围,要求所匹配对象为它们中得任一个。 取值也相同,但它要求所匹配对象

27、为指定字符以外得任一个字符。例如:Publishing 结尾,使用 LIKE'%Publishing'A 开头:LIKE 'A%'A 开头外:LIKE'FA%'限制以限制以限制以2、更改表格ALTER TABLE table nameADD COLUMN column_ name DATAT YPE说明:增加一个栏位(没有删除某个栏位得语法。ALTER TABLE table nameADD P RIMARY KEY (column_ name)说明:更改表得得定义把某个栏位设为主键。ALTER TABLE table nameDROP P RI

28、MARY KEY (column_ name)说明:把主键得定义删除。子句将行划分成较小得组, 然后,使用聚组函数返回每 having子句限制返回得结果集。group by子句可以将 Oracle按照group by子句中指定得表达式得值分组3、group by 在select语句中可以使用 group by 一个组得汇总信息,另外,可以使用 查询结果分组,并返回行得汇总信息 查询结果。在 select列表中指定得列要么就是group by子句中在带有group by子句得查询语句中, 指定得列,要么包含聚组函数 select max(sal),job emp group by job;(注意

29、max(sal),job得job并非一定要出现,但有意义)查询语句得select与group by ,having子句就是聚组函数唯一出现得地方,在where子句中不能使用聚组函数。select deptno ,sum(sal) from emp where sal>1200 group by deptno hav ing sum(sal)>8500having条件得组。在一 子句类似,均用于设置order by deptno;当在gropu by子句中使用having子句时,查询结果中只返回满足个 sql语句中可以有 where 子句与 having 子句。having 与 wh

30、ere 限定条件条件得行去掉,即在分where子句得作用就是在对查询结果进行分组前,将不符合where组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定得行。having子句得作用就是筛选满足条件得组,即在分组之后过滤数据,条件中经常包含聚组 函数,使用having条件显示特定得组,也可以使用多个分组标准进行分组。 查询每个部门得每种职位得雇员数select deptno ,job,co un t(*) from emp group by deptno job;4、外连接与内连接Oracle 提供了有时候,即使在连接得表中没有相应得行,用户可能想从一张表中瞧数据, 外连接实现该

31、功能。内连接就是指连接查询只显示完全满足连接条件得记录,即等值连接,外连接得查询结果就是内连接查询结果得扩展。外连接不仅返回满足连接条件得所有记录而且也返回了一个表中那些在另一个表中没有匹配行得记录。外连接得操作符就是“ +。 “ +号放在连接条件中信息不完全得那一边(即没有相应行得那一边)。运算符“ +影响NULL行得建立。建一行或多行NULL来匹配连接得表中信息完全得行。外连接运算符 “ + 只能出现在where子句中表达式得一边。假如在多张表之间有多个连接条件,外连接运算符不能使用or,in逻辑运算符与其它条件组合。假如emp表中deptno=10 得en ame为空值,de pt表中deptno=20 得loc为空值:1、selectename,dept、deptno,locfromemp,deptwhereemp、depno什)=dept、deptno;如果在dept、deptno中有得数值在emp、deptno中没有值,则在做外连接时,结果中ename 会产生一个空值。(emp、deptno=10)2、select ename,dept、deptno,locfromemp,deptwhereemp、depno=dept、deptno什);如果在emp、

温馨提示

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

评论

0/150

提交评论