`

常用SQL语句

    博客分类:
  • SQL
阅读更多


 文章转自:http://www.blogjava.net/jorwen/archive/2006/07/19/58878.html

 

表操作

 

1  对于表的教学管理数据库中的表 STUDENTS ,可以定义如下:

   CREATE  TABLE  STUDENTS

   (SNO      NUMERIC (6, 0) NOT NULL

   SNAME    CHAR (8) NOT NULL

   AGE      NUMERIC(3,0)

   SEX      CHAR(2)

   BPLACE  CHAR(20)

   PRIMARY KEY(SNO))

2  对于表的教学管理数据库中的表 ENROLLS ,可以定义如下:

        CREATE  TABLE  ENROLLS

        (SNO      NUMERIC(6,0)  NOT NULL

        CNO     CHAR(4)  NOT NULL

        GRADE   INT

        PRIMARY 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 表,建立一个只包含学号、姓名、年龄的女学生表。

        CREATE TABLE GIRL

        AS SELECT SNO, SNAME, AGE

        FROM STUDENTS

        WHERE SEX=' ';


 

4  删除教师表 TEACHER

        DROP  TABLE  TEACHER

5  在教师表中增加住址列。

       ALTER TABLE TEACHERS

       ADD (ADDR CHAR(50))

6  STUDENTS 表中的 BPLACE 列删除,并且把引用 BPLACE 列的所有视图和约束也一起删除。

        ALTER TABLE STUDENTS

        DROP BPLACE CASCADE

7  补充定义 ENROLLS 表的主关键字。

       ALTER TABLE ENROLLS

       ADD PRIMARY KEY (SNO,CNO)

 

视图操作(虚表)

 

9  建立一个只包括教师号、姓名和年龄的视图 FACULTY ( 在视图定义中不能包含 ORDER BY 子句 )

        CREATE VIEW FACULTY

        AS SELECT TNO, TNAME, AGE

        FROM TEACHERS

10  从学生表、课程表和选课表中产生一个视图 GRADE_TABLE 它包括学生姓名、课程名和成绩。

        CREATE VIEW GRADE_TABLE

        AS SELECT  SNAME,CNAME,GRADE

        FROM  STUDENTS,COURSES,ENROLLS

        WHERE  STUDENTS.SNO ENROLLS.SNO AND

        COURSES.CNO=ENROLLS.CNO

11  删除视图 GRADE_TABLE

        DROP VIEW GRADE_TABLE RESTRICT

 

索引操作

 

12  在学生表中按学号建立索引。

        CREATE  UNIQUE  INDEX  ST

        ON STUDENTS (SNO,ASC)

13  删除按学号所建立的索引。

        DROP INDEX ST

 

数据库模式操作

 

14  创建一个简易教学数据库的数据库模式   TEACHING_DB ,属主为 ZHANG

        CREATE SCHEMA TEACHING_DB  AUTHRIZATION  ZHANG

15  删除简易教学数据库模式 TEACHING_DB 。(( 1 )选用 CASCADE ,即当删除数据库模式时,则本数据库模式和其下属的基本表、视图、索引等全部被删除。( 2 )选用 RESTRICT ,即本数据库模式下属的基本表、视图、索引等事先已清除,才能删除本数据库模式,否则拒绝删除。)

        DROP SCHEMA TEACHING_DB CASCADE

单表操作

 

16  找出 3 个学分的课程号和课程名。

         SELECT CNO, CNAME

         FROM   COURSES

         WHERE   CREDIT 3

17  查询年龄大于 22 岁的学生情况。

         SELECT  *

         FROM   STUDENTS

         WHERE  AGE 22

18   找出籍贯为河北的男生的姓名和年龄。

         SELECT SNAME, AGE

         FROM   STUDENTS

         WHERE   BPLACE ' 河北 '  AND  SEX ' '

19  找出年龄在 20 23 岁之间的学生的学号、姓名和年龄,并按年龄升序排序。 (ASC (升序)或 DESC (降序)声明排序的方式,缺省为升序。 )

         SELECT SNO, SNAME, AGE

         FROM   STUDENTS

         WHERE  AGE BETWEEN 20 AND 23

         ORDER  BY  AGE

20  找出年龄小于 23 岁、籍贯是湖南或湖北的学生的姓名和性别。(条件比较运算符=、< 和逻辑运算符 AND (与),此外还可以使用的运算符有:>(大于)、>=(大于等于)、<=(小于等于)、<>(不等于)、 NOT (非)、 OR (或)等。

谓词 LIKE 只能与字符串联用,常常是 <列名>   LIKE  pattern” 的格式。特殊字符 “_” “%” 作为通配符。

谓词 IN 表示指定的属性应与后面的集合(括号中的值集或某个查询子句的结果)中的某个值相匹配,实际上是一系列的 OR (或)的缩写。谓词 NOT IN 表示指定的属性不与后面的集合中的某个值相匹配。

谓词 BETWEEN 包含于 之中 的意思。)

        SELECT SNAME, SEX

        FROM   STUDENTS

        WHERE  AGE 23  AND  BPLACE  LIKE' 湖% '

       

        SELECT SNAME, SEX

        FROM   STUDENTS

        WHERE  AGE 23  AND  BPLACE  IN  ' 湖南 ' ' 湖北 '

22  找出学生表中籍贯是空值的学生的姓名和性别。(在 SQL 中不能使用条件:<列名>= NULL 。在 SQL 中只有一个特殊的查询条件允许查询 NULL 值:)

       SELECT SNAME, SEX

       FROM   STUDENTS

       WHERE  BPLACE IS NULL


 

多表操作

 

23  找出成绩为 95 分的学生的姓名。(子查询)

        SELECT SNAME

        FROM   STUDENTS

        WHERE   SNO

              (SELECT SNO

               FROM   ENROLLS

               WHERE  GRADE 95)

24  找出成绩在 90 分以上的学生的姓名。

        SELECT  SNAME

        FROM   STUDENTS

        WHERE  SNO IN

                (SELECT SNO

                FROM ENROLLS

                WHERE GRADE 90)

       

        SELECT  SNAME

        FROM   STUDENTS

        WHERE  SNO ANY

                (SELECT SNO

                FROM ENROLLS

                WHERE GRADE 90)

25  查询全部学生的学生名和所学课程号及成绩。(连接查询)

        SELECT  SNAME, CNO, GRADE

        FROM   STUDENTS, ENROLLS

        WHERE  STUDENTS.SNO ENROLLS.SNO

26  找出籍贯为山西或河北,成绩为 90 分以上的学生的姓名、籍贯和成绩。(当构造多表连接查询命令时,必须遵循两条规则。第一,连接条件数正好比表数少 1 (若有三个表,就有两个连接条件 ) ;第二,若一个表中的主关键字是由多个列组成,则对此主关键字中的每一个列都要有一个连接条件(也有少数例外情况))

        SELECT  SNAME, BPLACE, GRADE

        FROM   STUDENTS, ENROLLS

        WHERE  BPLACE IN (‘ 山西 河北 ’)  AND  GRADE >= 90  AND   STUDENTS.SNO=ENROLLS.SNO

28  查出课程成绩在 80 分以上的女学生的姓名、课程名和成绩。( FROM 子句中的子查询)

        SELECT  SNAME,CNAME, GRADE

        FROM   (SELECT SNAME, CNAME , GRADE

                        FROM  STUDENTS, ENROLLS,COURSES

                        WHERE  SEX ' ')

        AS TEMP (SNAME, CNAME,GRADE)

        WHERE  GRADE 80

 

 

 

 

表达式与函数的使用

 

29  查询各课程的学时数。(算术表达式由算术运算符+、-、 * 、/与列名或数值常量所组成。)

        SELECT  CNAME,COURSE_TIME CREDIT*16

        FROM   COURSES

30  找出教师的最小年龄。(内部函数: SQL 标准中只使用 COUNT SUM AVG MAX MIN 函数,称之为聚集函数( Set Function )。 COUNT 函数的结果是该列统计值的总数目, SUM 函数求该列统计值之和, AVG 函数求该列统计值之平均值, MAX 函数求该列最大值, MIN 函数求该列最小值。)

        SELECT  MIN(AGE)

        FROM   TEACHERS

31  统计年龄小于等于 22 岁的学生人数。(统计)

        SELECT  COUNT(*)

        FROM   STUDENTS

        WHERE  AGE < 22

32  找出学生的平均成绩和所学课程门数。

        SELECT  SNO, AVG(GRADE), COURSES COUNT(*)

        FROM   ENROLLS

        GROUP  BY SNO

 

 

34  找出年龄超过平均年龄的学生姓名。

SELECT SNAME

FROM STUDENTS

WHERE AGE

      (SELECT  AVG(AGE)

        FROM   STUDENTS)


 

35  找出各课程的平均成绩,按课程号分组,且只选择学生超过 3 人的课程的成绩。( GROUP BY HAVING

        GROUP BY 子句把一个表按某一指定列(或一些列)上的值相等的原则分组,然后再对每组数据进行规定的操作。

        GROUP BY 子句总是跟在 WHERE 子句后面,当 WHERE 子句缺省时,它跟在 FROM 子句后面。

        HAVING 子句常用于在计算出聚集之后对行的查询进行控制。)

         SELECT CNO, AVG(GRADE), STUDENTS COUNT(*)

         FROM ENROLLS

         GROUP BY CNO

         HAVING COUNT(*) >= 3

 

相关子查询

 

37  查询没有选任何课程的学生的学号和姓名。(当一个子查询涉及到一个来自外部查询的列时,称为相关子查询( Correlated Subquery) 。相关子查询要用到存在测试谓词 EXISTS NOT EXISTS ,以及 ALL ANY SOME )等。)

        SELECT SNO, SNAME

        FROM   STUDENTS

        WHERE  NOT EXISTS

              (SELECT *

              FROM ENROLLS

              WHERE ENROLLS.SNO=STUDENTS.SNO)

38   查询哪些课程只有男生选读。

        SELECT DISTINCT CNAME

        FROM   COURSES C

        WHERE ' ' ALL

               (SELECT SEX

                FROM  ENROLLS STUDENTS

                WHERE ENROLLS.SNO=STUDENTS.SNO AND

                      ENROLLS.CNO=C.CNO)

39  要求给出一张学生、籍贯列表,该表中的学生的籍贯省份,也是其他一些学生的籍贯省份。

        SELECT  SNAME, BPLACE

        FROM   STUDENTS A

        WHERE  EXISTS

               (SELECT *

                 FROM STUDENTS B

                 WHERE A.BPLACE=B.BPLACE AND

                       A.SNO < > B.SNO)


 

 

40  找出选修了全部课程的学生的姓名。

        本查询可以改为:查询这样一些学生,没有一门课程是他不选修的。

        SELECT  SNAME

        FROM   STUDENTS

        WHERE  NOT EXISTS

               (SELECT *

                FROM COURSES

                WHERE  NOT EXISTS

                        (SELECT *

                         FROM ENROLLS

                         WHERE ENROLLS.SNO STUDENTS.SNO

                             AND ENROLLS.CNO COURSES.CNO))

关系代数运算

 

41  设有某商场工作人员的两张表:营业员表 SP_SUBORD 和营销经理表 SP_MGR ,其关系数据模式如下:

        SP_SUBORD (SALPERS_ID, SALPERS_NAME, MANAGER_ID, OFFICE)

        SP_MGR (SALPERS_ID, SALPERS_NAME, MANAGER_ID, OFFICE)

  • 大小: 56.9 KB
分享到:
评论

相关推荐

    ORACLE常用SQL语句大全.pdf

    Oracle 常用 SQL 语句大全 本文档总结了 Oracle 中常用的 SQL 语句,包括数据库的创建、删除、备份、表的创建、删除、修改、索引的创建、视图的创建等基本操作,以及一些高级查询运算符的使用。 一、数据库操作 ...

    50个常用SQL语句.zip

    50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用SQL语句.zip50个常用...

    oracle常用SQL语句(汇总版).docx

    Oracle 常用 SQL 语句汇总 Oracle 是一个功能强大且复杂的关系数据库管理系统,它提供了多种 SQL 语句来管理和操作数据库。在本文中,我们将详细介绍 Oracle 中常用的 SQL 语句,包括数据控制语句(DML)、数据定义...

    Mysql常用SQL语句

    MySQL常用SQL语句 MySQL是一种关系型数据库管理系统,使用SQL(Structured Query Language)语言来管理和操作数据库。下面是MySQL中一些常用的SQL语句: 创建、删除和基本查询 * 显示数据库:`show databases;` *...

    EXCEL 常用SQL语句解释+VBA 完全手册

    学习"EXCEL 常用SQL语句解释+VBA 完全手册"的内容,不仅可以提升你在Excel中的数据处理能力,还能够使你在面对复杂数据挑战时游刃有余。无论你是数据分析师、项目经理还是企业决策者,掌握这些技能都将大大提高你的...

    oracle常用sql语句大全 注释完整 放心使用

    本资料集包含了Oracle数据库中常用SQL语句的大全,注释完整,非常适合初学者和有经验的开发者参考使用。 1. **数据查询(SELECT语句)**: - `SELECT * FROM table_name;`:查询表table_name中的所有列。 - `...

    常用 SQL 语句大全+50个常用sql语句总结

    根据给定的文件信息,以下是对“常用 SQL 语句大全+50个常用sql语句总结”的详细解析,涵盖数据操作、数据定义、数据控制、事务控制以及程序化 SQL 等方面的重要知识点。 ### 数据操作 1. **SELECT**:用于从...

    Oracle数据库常用sql语句的分类和常用函数.docx

    根据提供的文档信息,本文将详细解析Oracle数据库中的关键SQL语句分类、常用SQL语句以及Oracle函数的应用场景。此外,还将简要介绍Oracle数据库的一些基本管理命令,如启动与关闭服务、用户管理等。 ### 一、Oracle...

    OA系统常用SQL语句

    在OA系统中,SQL语句是核心的数据操作工具,特别是在SQL Server数据库环境下。下面,我们将详细讨论OA系统中常见的SQL语句及其应用。 1. **人事管控**:在OA系统中,人事数据的管理和更新至关重要。例如,"01人事...

    ACCESS数据库常用SQL语句[参考].pdf

    ACCESS 数据库常用 SQL 语句 SELECT 语句是 Microsoft Jet 数据库引擎中最基本的 SQL 语句,用于从数据库中检索数据。SELECT 语句的基本语法为: SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] ...

    常用SQL语句大全

    常用SQL语句大全 语 句 功 能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 --数据定义 CREATE ...

    fire bird常用sql语句

    fire bird常用sql语句 一、分页写法小例: 二、显示表名和表结构 三、使用ISQL连接数据库 四、更新字段注释 五、显示字段注释 六、更新表注释 七、查询所有的表和视图(包括系统表和系统视图) 八、查询所有的用户表...

    常用sql语句汇总

    这篇文档“常用sql语句汇总”将涵盖多个与SQL相关的主题,包括处理死锁、BCP数据导入导出、动态生成日期维度以及如何断开并更改数据库名称等关键知识点。 首先,我们来探讨死锁。死锁是数据库系统中常见的问题,...

    50个常用sql语句 很好

    50个常用sql语句 50个常用sql语句 50个常用sql语句 50个常用sql语句

    奇迹MU常用SQL语句(非常实用)

    标题“奇迹MU常用SQL语句(非常实用)”和描述中的关键信息暗示了这是一个与《奇迹MU》游戏服务器管理和维护相关的资源包,其中包含了多种SQL语句和与游戏相关的数据库配置文件。《奇迹MU》是一款经典的多人在线角色...

    常用SQL语句大全(简单实用)

    根据提供的文件信息,本文将对其中提及的SQL知识点进行详细解释与说明,旨在为不同层次的学习者提供一个全面且易于理解的SQL语句指南。 ### 1. SELECT 语句 `SELECT` 语句是SQL中最常用的命令之一,主要用于从...

    SQL_SERVER常用sql语句集锦

    ### SQL Server 常用SQL语句集锦详解 #### 一、数据库操作 1. **创建数据库** `CREATE DATABASE database-name;` 此语句用于创建一个新的数据库,`database-name`应替换为希望创建的数据库名称。 2. **删除...

    常用SQL 语句(SQL2000).rar

    这个压缩包"常用SQL语句(SQL2000).rar"很可能是包含了与SQL Server 2000相关的常见查询和操作示例,帮助用户理解和掌握SQL的基础知识。 SQL Server 2000是微软公司推出的一款商业级数据库管理系统,它提供了强大的...

    基础常用SQL语句.pdf

    基础常用SQL语句 本文档总结了基础常用的SQL语句,涵盖了MYSQL基础语句、数据库创建、数据表创建、数据插入、查询、更新、删除、子句、连接、NULL值处理、正则表达式、ALTER命令、服务器元数据、MYSQL及SQL注入、...

Global site tag (gtag.js) - Google Analytics