管理岗位业务SQL练习

合集下载

sql 五十题

sql 五十题

sql 五十题以下是一些SQL练习题,共50题:1. 什么是SQL?2. 什么是关系型数据库?3. 什么是主键?4. 什么是外键?5. 什么是索引?6. 什么是查询?7. 什么是插入操作?8. 什么是更新操作?9. 什么是删除操作?10. 什么是聚合函数?11. 什么是分组操作?12. 什么是排序操作?13. 什么是联接操作?14. 什么是子查询?15. 什么是视图?16. 什么是存储过程?17. 什么是触发器?18. 如何使用WHERE子句进行过滤?19. 如何使用ORDER BY子句进行排序?20. 如何使用GROUP BY子句进行分组?21. 如何使用HAVING子句进行分组过滤?22. 如何使用JOIN操作联接表?23. 如何使用聚合函数SUM、AVG、MIN、MAX?24. 如何使用聚合函数COUNT、COUNT()和COUNT(列名)的区别?25. 如何使用子查询嵌套查询?26. 如何创建视图并查询视图数据?27. 如何创建存储过程并调用存储过程?28. 如何创建触发器并触发触发器?29. 如何使用INSERT INTO语句插入数据?30. 如何使用UPDATE语句更新数据?31. 如何使用DELETE语句删除数据?32. 如何使用TRUNCATE TABLE语句清空表数据?33. 如何使用UNION操作符合并多个查询结果?34. 如何使用UNION ALL操作符合并多个查询结果(包括重复行)?35. 如何使用IN操作符筛选符合条件的多个值?36. 如何使用LIKE操作符进行模糊查询?37. 如何使用NOT操作符进行否定筛选?38. 如何使用BETWEEN操作符筛选范围值?39. 如何使用EXISTS操作符检查子查询结果是否存在?40. 如何使用NOT EXISTS操作符检查子查询结果是否存在(否定筛选)?41. 如何使用CASE语句进行条件判断和值转换?42. 如何使用DISTINCT关键字去除查询结果的重复行?43. 如何使用LIMIT关键字限制查询结果的行数?44. 如何使用JOIN操作连接多个表并筛选数据?45. 如何使用INNER JOIN、LEFT JOIN、RIGHT JOIN和FULL JOIN的区别和用法?46. 如何使用视图提高查询效率和维护数据安全性?47. 如何使用存储过程存储复杂的业务逻辑和重复使用的查询语句?48. 如何使用触发器自动执行特定事件或数据修改操作?49. 如何优化SQL查询性能,提高数据库的响应速度?50. 如何安全地管理和维护数据库,确保数据的完整性和可靠性?。

《SQL管理与开发》试题

《SQL管理与开发》试题

《SQL数据库管理与开发教程与实训》试卷一、单项选择题:(每小题1分,共10分)1.触发器可以创建在( )中。

A. 表B.过程C.数据库D.函数2.删除表的语句是( )。

A.DROPB.ALTERC.UPDATED.DELETE3. 以下触发器是当对[表1]进行( )操作时触发。

Create Trigger abc on 表1For insert , update , deleteAs ……A.只是修改B.只是插入C.只是删除D.修改、插入、删除4.规则对象在使用上与( )约束类似。

A.CHECKB.PRIMARY KEYC.FOREIGN KEYD.UNIQU5.主索引可确保字段中输入值的( )性。

A.多样B.重复C.唯一D.若干6.关于视图下列哪一个说法是错误的( )。

A.视图是一种虚拟表B.视图中也保存有数据C.视图也可由视图派生出来D.视图是保存在SELECT查询7.执行带参数的过程,正确的方法为( )。

A.过程名参数B.过程名(参数)C.过程名=参数D.A,B,C三种都可以8.查询毕业学校名称与“清华”有关的记录应该用( )。

A. SELECT * FROM 学习经历 WHERE 毕业学校LIKE ’*清华*’B. SELECT * FROM 学习经历 WHERE 毕业学校=’%清华%’C. SELECT * FROM 学习经历 WHERE 毕业学校LIKE ’?清华?’D. SELECT * FROM 学习经历 WHERE 毕业学校LIKE ’%清华%’9. Select 职工号 FROM 职工 WHERE 工资>1250 命令的功能是( )。

A.查询工资大于1250的纪录B.查询1250号记录后的记录C.检索所有的职工号D.从[职工]关系中检索工资大于1250的职工号10.关于关系图下列哪一个是正确的( )。

A.关系图是在同一个表中不同字段之间建立关联B.关系图是表与表之间建立关联,与字段无关C.关系图是在不同表中的字段之间建立关联D.关系图是在不同数据库之间建立关联二、判断题:(每小题1分,共10分)1.ODBC是由Microsoft定义的一种数据库访问标准。

sql练习题及答案

sql练习题及答案

sql练习题及答案SQL练习题及答案在学习SQL(Structured Query Language)时,练习题是非常重要的一部分。

通过练习题,我们可以巩固和应用所学的SQL知识,提高自己的实践能力。

本文将介绍几个常见的SQL练习题,并提供相应的答案,希望对大家的学习有所帮助。

1. 查询员工表中所有员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表;```2. 查询员工表中薪水大于5000的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 > 5000;```3. 查询员工表中职位为经理的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 职位 = '经理';```4. 查询员工表中薪水在4000到6000之间的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 BETWEEN 4000 AND 6000;```5. 查询员工表中薪水最高的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 薪水 = (SELECT MAX(薪水) FROM 员工表);```6. 查询员工表中没有分配部门的员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表WHERE 部门 IS NULL;```7. 查询员工表中按照薪水从高到低排列的前5名员工的姓名和薪水。

答案:```sqlSELECT 姓名, 薪水FROM 员工表ORDER BY 薪水 DESCLIMIT 5;```8. 查询员工表中每个部门的员工数量。

答案:```sqlSELECT 部门, COUNT(*) AS 员工数量FROM 员工表GROUP BY 部门;```9. 查询员工表中薪水排名在第3到第5位的员工的姓名和薪水。

sql笔试题及答案

sql笔试题及答案

sql笔试题及答案1. 题目1:查询员工表中工资大于5000的员工信息,并按照工资降序排列。

答案:SELECT * FROM 员工表 WHERE 工资 > 5000 ORDER BY 工资DESC;解析:使用SELECT语句查询员工表中满足工资大于5000的记录,并使用ORDER BY子句按照工资字段降序排列。

2. 题目2:统计订单表中每个客户的订单总数,并按照订单总数升序排列。

答案:SELECT 客户, COUNT(订单编号) AS 订单总数 FROM 订单表GROUP BY 客户 ORDER BY 订单总数 ASC;解析:使用SELECT语句查询订单表中每个客户的订单总数,并使用GROUP BY子句按照客户字段进行分组,COUNT函数用于统计订单编号,AS关键字用于为统计结果起别名,ORDER BY子句按照订单总数字段升序排列。

3. 题目3:查询学生表中不重复的学生姓名和对应的年龄。

答案:SELECT DISTINCT 学生姓名, 年龄 FROM 学生表;解析:使用SELECT DISTINCT语句查询学生表中不重复的学生姓名和对应的年龄。

4. 题目4:查询订单表中订单金额最大的订单信息。

答案:SELECT * FROM 订单表 WHERE 订单金额 = (SELECT MAX(订单金额) FROM 订单表);解析:使用SELECT语句查询订单表中订单金额等于最大订单金额的订单信息,使用子查询和MAX函数找出最大订单金额。

5. 题目5:查询销售表中每个月份的总销售金额。

答案:SELECT DATE_FORMAT(销售日期, '%Y-%m') AS 月份, SUM(销售金额) AS 总销售金额 FROM 销售表 GROUP BY DATE_FORMAT(销售日期, '%Y-%m');解析:使用SELECT语句查询销售表中每个月份的总销售金额,使用DATE_FORMAT函数将销售日期格式化成年月的形式,并使用SUM函数统计销售金额,使用GROUP BY子句按照月份进行分组。

SQL语句练习题(包含有多表查询)-答案

SQL语句练习题(包含有多表查询)-答案

SQL语句练习题1、请从表EMP中查找工种是职员CLERK或经理MANAGER的雇员姓名、工资。

select ename,sal from emp where job='CLERK' or job='MANAGER';2、请在EMP表中查找部门号在10-30之间的雇员的姓名、部门号、工资、工作。

select ename,deptno,sal,job from emp where deptno between 10 and 30;3、请从表EMP中查找姓名以J开头所有雇员的姓名、工资、职位。

select ename,sal,job from emp where ename like 'J%';4、请从表EMP中查找工资低于2000的雇员的姓名、工作、工资,并按工资降序排列。

select ename,job,sal from emp where sal<=2000 order by sal desc;5、请从表中查询工作是CLERK的所有人的姓名、工资、部门号、部门名称以及部门地址的信息。

select ename,sal,emp.deptno,dname,loc from emp,dept where emp.deptno=dept.deptno and job=’CLERK’;6、查询表EMP中所有的工资大于等于2000的雇员姓名和他的经理的名字。

select a.ename,b.ename from emp a,emp b where a.mgr=b.empno(+) and a.sal>=2000;7、查询所有雇员的姓名、SAL与COMM之和。

select ename,sal+nvl(comm,0) “sal-and-comm” from emp;8、查询所有81年7月1日以前来的员工姓名、工资、所属部门的名字select ename,sal,dname from emp,dept where emp.deptno=dept.deptno and hiredate<=to_date(‘1981-07-01’,’yyyy-mm-dd’);9、查询列出来公司就职时间超过24年的员工名单select ename from emp where hiredate<=add_months(sysdate,-288);10、查询于81年来公司所有员工的总收入(SAL和COMM)select sum(sal+nvl(comm,0)) from emp where to_char(hiredate,’yyyy’)=’1981’;11、查询显示每个雇员加入公司的准确时间,按××××年××月××日时分秒显示。

sql测试题选择和填空

sql测试题选择和填空

sql测试题选择和填空好的,下面是一些关于SQL的选择题和填空题。

请注意,由于限制了字数,每个问题的回答可能会比较简洁,但我会尽量提供全面的答案。

让我们开始吧!选择题:1. 下面哪个关键字用于在SQL中创建表?A. SELECT.B. INSERT.C. CREATE.D. UPDATE.答案,C. CREATE.2. 下面哪个关键字用于在SQL中更新表中的数据?A. SELECT.B. INSERT.C. CREATE.D. UPDATE.答案,D. UPDATE.3. 下面哪个关键字用于在SQL中删除表?A. SELECT.B. INSERT.C. CREATE.D. DROP.答案,D. DROP.4. 下面哪个关键字用于在SQL中向表中插入新的数据?A. SELECT.B. INSERT.C. CREATE.D. UPDATE.答案,B. INSERT.5. 下面哪个关键字用于在SQL中查询表中的数据?A. SELECT.B. INSERT.C. CREATE.D. UPDATE.答案,A. SELECT.填空题:1. 在SQL中,用于选择特定列的关键字是 __SELECT__。

2. 在SQL中,用于过滤数据的关键字是 __WHERE__。

3. 在SQL中,用于根据条件对结果进行排序的关键字是__ORDER BY__。

4. 在SQL中,用于将多个表连接在一起的关键字是 __JOIN__。

5. 在SQL中,用于计算某个列的总和的关键字是 __SUM__。

这些题目只是一小部分SQL的基础知识,希望能帮到你!如果你还有其他问题,请继续提问。

SQL语句练习操作

SQL语句练习操作

实验一 SQL语言的使用一相关知识SQL语言由4部分组成:数据定义语言DDL、数据操纵语言DML、数据控制语言DCL 和其他,其功能如下:(1)数据定义语言DDL:主要用于定义数据库的逻辑结构,包括定义数据库、基本表、视图和索引等,扩展的DDL还包括存储过程、函数、对象、触发器等的定义。

(2)数据操纵语言DML:主要用于对数据库中的数据进行检索和更新两大类操作,其中更新操作包括插入、删除和更新数据。

(3)数据控制语言DCL:主要用于对数据库中的对象进行授权、用户维护(包括创建、修改和删除)、完整性规则定义和事务定义等。

(4)其他:主要是嵌入式SQL语言和动态SQL语言的定义,规定了SQL语言在宿主语言中使用的规则。

扩展的SQL还包括数据库数据的重新组织、备份和回复等。

二数据操纵语言练习2.1 订单管理数据库订单管理数据库由5张表组成,分别为员工表、客户表、商品表、订单主表和订单明细表。

员工表中记录当前销售公司所有的员工详细信息,客户表中记录与当前销售公司有业务往来的客户单位信息,商品表中记录当前销售公司可销售的商品,客户每次的购买活动形成一条订单记录,并指定一名销售公司员工对其进行负责,一个订单可能同时购买多种商品,所以订单主表中只记录以订单为单位的相关信息,而订单明细中再记录具体商品的销售情况。

2.2 实验内容2.2.1 查询操作2.2.1.1 单表查询(1)查询全部职工的基本信息(2)查询所有职工的部门、职工号、姓名和薪水(3)查询全体职工的姓名、年龄、所属部门,并用汉语显示表头信息(4)查询1973年出生且为职员的员工信息(5)查询业务科或财务科的职工姓名、性别和所在部门,仅显示前面5位职工(6)查询薪水为2000或4000的职工编号、姓名、所在部门和薪水(7)查询薪水在3000~4000的职工姓名和薪水(8)查询薪水不在3000~4000的职工姓名和薪水(9)查询所有姓张的职工姓名、所属部门和性别(10)查询所有姓张且全名为三个汉字的职工姓名(11)查询既不在业务科也不在财务科的职工姓名、性别和所在部门(12)查询1991年被雇佣的职工号、姓名、性别、电话号码、出生日期以及年龄(13)查询6月出生的员工编码、姓名、出生日期,并按出生日期的降序输出(14)查询职工工资最高的前10%的职工编号、职工姓名和工资(15)查询每个业务员的订单数量(16)统计在业务科工作且在1973年或1967年出生的员工人数和平均工资(17)统计每种商品的销售数量和金额,并按销售金额的升序排序输出(18)查询订单中至少包含3种(含3种)以上商品的订单编号及订购次数,且订购的商品数量在3件(含3件)以上。

sql 50题

sql 50题

sql 50题1. 查询所有员工的姓名和薪水。

```sqlSELECT name, salary FROM employees;```2. 查找薪水超过50000 的员工。

```sqlSELECT * FROM employees WHERE salary > 50000;```3. 按薪水升序排序员工。

```sqlSELECT * FROM employees ORDER BY salary ASC;```4. 统计每个部门的员工数量。

```sqlSELECT department, COUNT(*) FROM employees GROUP BY department;```5. 查找最高薪水的员工。

```sqlSELECT * FROM employees WHERE salary = (SELECT MAX(salary) FROM employees);```6. 计算每个部门的平均薪水。

```sqlSELECT department, AVG(salary) FROM employees GROUP BY department;```7. 查找在'IT' 部门工作的员工。

```sqlSELECT * FROM employees WHERE department = 'IT';```8. 按照姓名的字母顺序对员工进行排序。

```sqlSELECT * FROM employees ORDER BY name ASC;```9. 查找在'IT' 部门工作且薪水在50000 到70000 之间的员工。

```sqlSELECT * FROM employees WHERE department = 'IT' AND salary BETWEEN 50000 AND 70000;```10. 计算所有员工的总薪水。

```sqlSELECT SUM(salary) FROM employees;```11. 查找没有分配部门的员工。

(完整版)常见SQL笔试题

(完整版)常见SQL笔试题

SQL笔试题1.统计查问 SQL练习数据库中表构造以下,字段分别任rg (日期), shengfu (输赢),观察 group by语句的使用:2005-05-09胜2005-05-09胜2005-05-09负2005-05-09负2005-05-10胜2005-05-10负2005-05-10负假如要生成以下结果 , 该怎样写 sql语句?输赢2005-05-09 2 22005-05-10 1 2答案:1)select rq, sum(case when shengfu=' 胜' then 1 else 0 end)' 胜',sum(case when shengfu=' 负 'then 1 else 0 end)' 负' from #tmp group by rq2) select N.rq,N. 胜 ,M. 负from (select rq, 胜=count(*) from #tmp where shengfu=' 胜 'group by rq)N inner join(select rq, 负 =count(*) from #tmp where shengfu='负'group by rq)M on胜负from(select col001,count(col001) a1 from temp1 where col002='胜' group by col001) a,(select col001,count(col001) b1 from temp1 where col002='负' group by col001) b2.条件判断 SQL 练习表中有 A B C三列,用SQL语句实现:当 A 列大于 B 列时选择 A 列不然选择B列,当B 列大于 C 列时选择 B 列不然选择 C 列答案:select (case when a>b then a else b end ),(case when b>c then b esle c end)from table_name3.日期统计 SQL 练习请拿出tb_send表中日期(SendTime字段)为当日的所有记录?(SendTime 字段为datetime 型,包括日期与时间 )答案:select * from tb where datediff(dd,SendTime,getdate())=04.统计查问 SQL 练习有一张表,里面有 3 个字段:语文,数学,英语。

sql语句练习题库

sql语句练习题库

sql语句练习题库一、基础题1. 创建一个名为"students"的表,包含以下字段: - 学生编号(student_id),整数类型,主键- 姓名(name),字符串类型,最大长度为50 - 年龄(age),整数类型2. 向"students"表中插入以下记录:- 学生编号:1,姓名:张三,年龄:18- 学生编号:2,姓名:李四,年龄:20- 学生编号:3,姓名:王五,年龄:193. 查询"students"表中所有记录的姓名和年龄。

4. 查询年龄大于等于20岁的学生记录的姓名。

5. 修改学生编号为2的记录的姓名为"赵六"。

6. 删除学生编号为3的记录。

二、进阶题1. 创建一个名为"courses"的表,包含以下字段: - 课程编号(course_id),整数类型,主键- 课程名称(course_name),字符串类型,最大长度为50- 授课教师(teacher),字符串类型,最大长度为502. 向"courses"表中插入以下记录:- 课程编号:1,课程名称:数学,授课教师:张老师- 课程编号:2,课程名称:英语,授课教师:李老师- 课程编号:3,课程名称:物理,授课教师:王老师3. 查询"students"表和"courses"表中学生姓名和课程名称的组合。

4. 查询"students"表中没有选修课程的学生记录的姓名。

5. 查询每门课程的选修人数。

6. 查询选修课程人数最多的课程信息。

三、高级题1. 创建一个名为"scores"的表,包含以下字段:- 学生编号(student_id),整数类型,外键,关联"students"表 - 课程编号(course_id),整数类型,外键,关联"courses"表 - 分数(score),整数类型,取值范围为0-1002. 向"scores"表中插入以下记录:- 学生编号:1,课程编号:1,分数:88- 学生编号:1,课程编号:2,分数:92- 学生编号:2,课程编号:1,分数:75- 学生编号:2,课程编号:3,分数:85- 学生编号:3,课程编号:2,分数:90- 学生编号:3,课程编号:3,分数:783. 查询每个学生的平均分数。

sql的练习题

sql的练习题

sql的练习题SQL(Structured Query Language)是一种用于管理和操作关系型数据库的编程语言。

在数据分析和数据库管理领域,熟练掌握SQL语言对于解决问题和提高工作效率至关重要。

本文将介绍一些SQL的练习题,帮助读者巩固和提升SQL技能。

练习一:查询雇员信息假设有一个名为"Employees"的表,包含以下列:员工ID (EmployeeID)、员工姓名(EmployeeName)、员工所在部门(Department)、员工职位(Position)和入职日期(HireDate)。

写出一条SQL查询语句,获取所有员工的信息。

```sqlSELECT * FROM Employees;```练习二:查询特定条件的雇员信息在练习一的基础上,假设需要查询入职日期在2020年之后的所有员工信息。

```sqlSELECT * FROM Employees WHERE HireDate > '2020-01-01';```练习三:按部门查询员工数量在练习一的基础上,需要查询每个部门的员工数量,并按照数量降序排列。

```sqlSELECT Department, COUNT(*) AS EmployeeCountFROM EmployeesGROUP BY DepartmentORDER BY EmployeeCount DESC;```练习四:查询员工平均入职时间在练习一的基础上,需要计算所有员工的平均入职时间。

```sqlSELECT AVG(DATEDIFF(NOW(), HireDate)) AS AverageHireDays FROM Employees;```练习五:多表查询假设有两个表,"Orders"表和"Customers"表。

"Orders"表包含订单信息,包括订单ID(OrderID)、订单日期(OrderDate)和客户ID (CustomerID)。

SQL题库(有答案)

SQL题库(有答案)

一、选择题:1、根据关系数据基于的数据模型——关系模型的特征判断下列正确的一项:(_B__)A、只存在一对多的实体关系,以图形方式来表示。

B、以二维表格结构来保存数据,在关系表中不允许有重复行存在。

C、能体现一对多、多对多的关系,但不能体现一对一的关系。

D、关系模型数据库是数据库发展的最初阶段。

2、在“连接”组中有两种连接认证方式,其中在(_B__)方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码。

A、Windows身份验证B、SQL Server 身份验证C、以超级用户身份登录时D、其他方式登录时3、SQL Server 2000 在安装之前,应注意的事项:(_C__)A、SQL Server 2000的任何版本在安装时都不用考虑操作系统的制约。

B、SQL Server 2000的安装对硬件的要求不作任何限制。

C、SQL Server 2000 在安装之前,必须在操作系统级启用TCP/IP。

D、在Windows NT Server 4.0上安装SQL Server 2000时,最低的要求是必须安装Service Pack 4(SP4)以上。

4、关系数据库中,主键是(1_A__),主键的建立有(2_C__)种方法,当运用Transact-SQL语句创建主键时,可以是(3_B__)。

⑴A、为标识表中唯一的实体B、创建唯一的索引,允许空值C、只允许以表中第一字段建立D、允许有多个主键的⑵A、一B、二C、三D、四⑶A、create table table1(column1 char(13) not null primary,column2 int not) on primary;B、alter table table1 with notcheck addconstraint [PK_table1] primary key nonclustered( column1) on primary;C、alter table table1 column1 primary key ;5、表在数据库中是一个非常重要的数据对象,它是用来(1_C__)各种数据内容的,数据库创建后就可以创建表了,创建表可以用(2_D__)等方法来创建。

《SQL数据库管理与开发》试题(P卷)

《SQL数据库管理与开发》试题(P卷)

《SQL数据库管理与开发教程与实训》试题(P卷)一、名词解释(每小题每题4分,共20分)1、视图2、索引3、存储过程4、游标5、备份二、判断题(每空1分,共10分)1、安装Microsoft SQL Server 2000 企业版对操作系统的最低要求可以是MicrosoftWindows 2000 Professional。

2、每一个服务器必须属于一个服务器组。

一个服务器组可以包含0个、一个或多个服务器。

3、验证模式是在安装SQL Server过程中选择的。

系统安装之后,可以重新修改SQL Server系统的验证模式。

4、固定数据库角色:db_datarader 的成员不能修改本数据库内表中的数据。

5、当用户定义的数据类型正在被某个表的定义引用时,这些数据类型不能被删除。

6、在使用子查询时,必须使用括号把子查询括起来,以便区分外查询和子查询。

7、索引越多越好。

8、视图本身不保存数据,因为视图是一个虚拟的表。

9、创建触发器的时候可以不是表的所有者或数据库的所有者。

10、select 16%4, 的执行结果是: 4 吗?三、填空题(每空1分,共20分)1、SQL Server登录身份验证模式类型有_________ 和_________ 两种。

2、数据库对象就是存储和管理数据库的结构形式,这些数据库对象包括数据库图表、表、函数、视图、_________ 、_________ 、缺省、规则等。

3、表是由行和列组成的,行有时也称为_________,列有时也称为_________或域。

4、数据库操作语句就是指insert、_________、_________和select语句。

5、创建索引的方法可以分为_________和_________。

6、在Microsoft SQL Server系统中,支持3种类型的备份介质:_________、磁带和_________。

7、触发器有3种类型,即insert类型、_________和_________。

sql语句笔试题

sql语句笔试题

sql语句笔试题摘要:1.SQL 语句概述2.SQL 语句的分类3.SQL 语句的基本语法4.SQL 语句在笔试题中的应用5.SQL 语句笔试题的解题技巧正文:【1.SQL 语句概述】SQL 语句(Structured Query Language)是一种用于管理关系型数据库的编程语言。

它可以用于查询、插入、更新和删除数据库中的数据,还可以用于创建和修改数据库表结构。

SQL 语句具有丰富的功能和高度的灵活性,是数据库管理员和开发人员必备的技能。

【2.SQL 语句的分类】SQL 语句主要分为以下几类:1.数据查询语句:如SELECT 语句,用于查询数据库中的数据。

2.数据插入语句:如INSERT 语句,用于向数据库中插入新的数据。

3.数据更新语句:如UPDATE 语句,用于更新数据库中的数据。

4.数据删除语句:如DELETE 语句,用于删除数据库中的数据。

5.数据定义语句:如CREATE、ALTER 和DROP 语句,用于定义、修改和删除数据库表结构。

【3.SQL 语句的基本语法】SQL 语句的基本语法包括:1.SELECT 语句:用于查询数据库中的数据。

其基本语法为:SELECT column_name(s) FROM table_name WHERE condition;2.INSERT 语句:用于向数据库中插入新的数据。

其基本语法为:INSERT INTO table_name(column1, column2,...) VALUES (value1, value2,...);3.UPDATE 语句:用于更新数据库中的数据。

其基本语法为:UPDATE table_name SET column_name = new_value WHERE condition;4.DELETE 语句:用于删除数据库中的数据。

其基本语法为:DELETE FROM table_name WHERE condition;5.CREATE 语句:用于创建数据库表。

简单的SQL语句练习大全

简单的SQL语句练习大全

简单的SQL语句练习大全一:本题用到下面三个关系表:CARD借书卡。

CNO 卡号,NAME姓名,CLASS 班级BOOKS图书。

BNO 书号,BNAME 书名,AUTHOR 作者,PRICE 单价,QUANTITY库存册数BORROW借书记录。

CNO 借书卡号,BNO 书号,RDA TE 还书日期备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。

要求实现如下15个处理:1.写出建立BORROW表的SQL语句,要求定义主码完整性约束和引用完整性约束。

//表名borrow2.找出借书超过5本的读者,输出借书卡号及所借图书册数。

3.查询借阅了"水浒"一书的读者,输出姓名及班级。

4.查询过期未还图书,输出借阅者(卡号)、书号及还书日期。

5.查询书名包括"网络"关键词的图书,输出书号、书名、作者。

6.查询现有图书中价格最高的图书,输出书名及作者。

7.查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出。

8.将"C01"班同学所借图书的还期都延长一周。

9.从BOOKS表中删除当前无人借阅的图书记录。

10.如果经常按书名查询图书信息,请建立合适的索引。

11.在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SA VE表中(注ORROW_SA VE表结构同BORROW表)。

12.建立一个视图,显示"力01"班学生的借书信息(只要求显示姓名和书名)。

13.查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出。

14.假定在建BOOKS表时没有定义主码,写出为BOOKS表追加定义主码的语句。

第11章 SQL练习答案

第11章 SQL练习答案

第11章 SQL练习答案1.实训题根据人力资源管理系统数据库中数据信息,完成下列操作。

(1)查询100号部门的所有员工信息。

Selsect * from employees where department_id = 100 (2)查询所有职位编号为“SA_MAN”的员工的员工号、员工名和部门号。

Select employee_id,first_name,last_name,department_id from employees where job_id= ‘SA_MAN’(3)查询每个员工的员工号、工资、奖金以及工资与奖金的和。

Select employee_id,salary,commission_pct, salary*(1+nvl(commission_pct,0) from employees(4)查询40号部门中职位编号为“AD_ASST”和20号部门中职位编号为“SA_REP”的员工的信息。

Select * from employees where department_id=40 and job_id=’AD_ASST’ OR department_id=20 and job_id=’ SA_REP’;(5)查询所有职位名称不是“Stock Manager”和“Purchasing Manager”,且工资大于或等于2000的员工的详细信息。

Select * from employees where job_id notin(’ Stock Manager’,’ Purchasing Manager’) and salary>=2000(6)查询有奖金的员工的不同职位编号和名称。

Select distinct job_id, job_title from jobs where job_id in (selectjob_id from employees where job_id is not null)(7)查询没有奖金或奖金低于100元的员工信息。

SQL语句练习1附答案

SQL语句练习1附答案

SQL语句练习1附答案EMP 员工表DEPT 部门表SALGRADE 工资BONUS 奖金1.查询部门30中的员工信息;SELECT * FROM DEPT WHERE DEPTNO = 30;2.查询佣金高于薪金的员工信息;SELECT * FROM EMP WHERE COMM>SAL;3.查询佣金高于薪金60%的员工;SELECT * FROM EMP WHERE COMM>SAL*0.6;4.找出部门10中所有经理(工作为MANAGER)和部门20中的所有工作为CLERK的员工信息;SELECT * FROM EMP WHERE(DEPTNO = 10 AND JOB =’MANAGER’) OR(DEPTNO = 20 AND JOB =’CLERK’);5.找出部门10中所有经理(工作为MANAGER)和部门20中的所有工作为CLERK的员工,和那些既不是经理也不是办事员但薪金大于2000的所有员工信息;SELECT * FROM EMP WHERE(DEPTNO = 10 AND JOB =’MANAGER’) OR (DEPTNO = 20 AND JOB =’CLERK’) OR (JOB!=’MANAGER’ AND JOB!=’CLERK’ AND SAL>2000);6.查询收取佣金的员工的不同工作;SELECT DISTINCT JOB FROM EMP WHERE COMM>0;7.显示正好为6个字符的员工姓名;SELECT ENAME FROM EMP WHERE LENGTH(ENAME) = 6;8.显示不带有R字母的员工姓名;SELECT ENAME FROM EMP WHERE ENAME NOT LIKE’%R%’;9.显示所有员工姓名的前三个字符;SELECT SUBSTR(ENAME,1,3) FROM EMP;10.查询员工姓名,根据其服务年限,将最老的员工排在最前面;SELECT ENAME FROM EMP ORDER BY HIREDATE DESC;11.查询不收取佣金或收取的佣金低于100的员工;SELECT * FROM EMP WHERE (COMM<100) OR (COMM IS NULL);12.按照员工的部门号升序排列,同部门的再按员工工资降序排列;SELECT * FROM EMP ORDER BY DEPTNO,SAL DESC;13.查工资不超过2000的员工所有信息;SELECT * FROM EMP WHERE SAL < 2000;14.列出每个部门的员工数量,平均工资和平均服务期限;SELECTDEPTNO,COUNT(*),AVG(SAL),AVG(TRUNC((SYSDATE-HIREDATE)/365)) AS YEAR FROM EMP GROUP BY DEPTNO;15.查询工资高于1500并且在30号部门工作的员工;SELECT * FROM EMP WHERE SAL > 1500 AND DEPTNO = 30;16.统计各部门工资的平均值;SELECT DEPTNO ,AVG(SAL) FROM EMP GROUP BY DEPTNO;17.查出哪些员工的工资比平均工资低;SELECT ENAME FROM EMP WHERE SAL <(SELECT AVG(SAL) FROM EMP);18.查询平均工资大于1900元的部门的工资总额,职员人数和平均工资;SELECT SUM(SAL),DEPTNO,AVG(SAL) FROM EMP GROUP BY DEPTNO HAVING AVG(SAL)>1900;19.查询部门20中工资大于该部门平均工资的职员的信息;SELECT * FROM EMP WHERE (SAL > (SELECT AVG(SAL) FROM EMP WHERE DEPTNO = 20)) AND (DEPTNO = 20);20.查询最先受雇的职员信息;SELECT * FROM EMP WHERE HIREDATE = (SELECT MIN(HIREDATE) FROM EMP);21.查询谁是最高领导,将名字按大写形式显示;SELECT UPPER(ENAME) FROM EMP WHERE MGR IS NULL;22.查询姓名第三个字母是A 的员工信息;SELECT * FROM EMP WHERE ENAME LIKE ‘__A%’;23.查询员工名字中含有A和N的员工工资;SELECT SAL FROM EMP WHERE (ENAME LIKE ‘%A%’) AND (ENAME LIKE ‘%N%’);24.找出所有有佣金的员工,列出姓名、工资、佣金,显示结果按工资从小到大,佣金从大到小;SELECT ENAME,SAL+COMM,COMM FROM EMP WHERE COMM IN (SELECT COMM FROM EMP) ORDER BY SAL+COMM DESC,COMM DESC;25. 列出部门编号为20的所有工作;SELECT JOB FROM EMP WHERE DEPTNO = 20 GROUP BY JOB ;26. 各个部门平均、最大、最小工资、人数,按照部门号升序排列;SELECT DEPTNO ,AVG(SAL) ,MAX(SAL),MIN(SAL),COUNT(*) FROM EMP GROUP BY DEPTNO ORDER BY DEPTNO;27. 各个部门中工资大于5000的员工人数,按部门号降序排列;SELECT COUNT(*) FROM EMP WHERE SAL > 5000 ORDER BY DEPTNO DESC;28.查询工资最高的工作;SELECT JOB FROM EMP WHERE SAL = (SELECT MAX(SAL) FROM EMP);29.查询能领取奖金的员工信息;SELECT * FROM EMP WHERE COMM >0;30.查询能领取奖金的工资大于1500的人;SELECT * FROM EMP WHERE (COMM >0) AND (SAL > 1500);31.查询能领取奖金或者工资大于1500的人;SELECT * FROM EMP WHERE (COMM >0) OR (SAL > 1500);32.查询入职时间在1981年1月1日和1981年12月31日之间的员工信息;SELECT * FROM EMP WHERE HIREDATE BETWEEN TO_DATE(‘1981-1-1’,’YYYY-MM-DD’) AND TO_DATE(‘1981-12-31’,’YYYY-MM-DD’);33.查询部门编号为20的员工信息且按员工姓名降序排列;SELECT * FROM EMP WHERE DEPTNO = 20 ORDER BY ENAME DESC;34.查询编号不是7369的雇员信息,且按工资升序排列;SELECT * FROM EMP WHERE EMPNO!= 7369 ORDER BY SAL;35.显示雇员姓名及姓名后三个字符;SELECT ENAME,SUBSTR(ENAME,-3,3) FROM EMP;36.显示当前日期;SELECT TO_CHAR(SYSDATE,’YYYY-MM-DD’) FROM DUAL;37.找出各月倒数第三天雇佣的员工信息;SELECT * FROM EMP WHERE HIREDATE=LAST_DAY(HIREDATE)-2;38.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月份排序,若月份相同则将最早年份的员工排在最前面;SELECTENAME,TO_CHAR(HIREDATE,’YYYY’)M,TO_CHAR(HIREDATE,‘MM’)H FROM EMP ORDER BY H,M;39.查询在3月受聘的所有员工;SELECT ENAME,EMPNO FROM EMP WHERE TO_CHAR(HIREDATE, ’MM’) = 03;40.对每个员工显示其加入公司的天数;SELECT ENAME,EMPNO,SYSDATE-HIREDATE AS 加入公司天数FROM EMP;41.列出所有员工的年工资,按年薪升序排列;SELECT EMPNO,ENAME ,SAL*12 AS 年薪FROM EMP ORDER BY SAL;42.列出每位员工的姓名和入职年限;SELECT ENAME,TO_CHAR(FLOOR(TO_NUMBER((SYSDATE-HIREDATE)/365))) AS 入职年限FROM EMP;43.列出每个部门工资最高的员工姓名;SELECT DEPTNO ENAME, MAX(SAL) FROM EMP GROUP BY DEPTNO;44.列出在每个部门工作的员工数量、平均工资和平均服务期限;SELECTDEPTNO,COUNT(*),AVG(SAL),AVG(TRUNC((SYSDATE-HIREDATE)/365)) AS YEAR FROM EMP GROUP BY DEPTNO;。

管理员日常工作中必备的sql列表

管理员日常工作中必备的sql列表

数据库管理员日常工作中必备的sql列表今天执行最多的SQL语句是什么?select sql_id,count(*),round(count(*)/sum(count(*)) over (),2) pctfrom v$active_session_historywhere sample_time>sysdate-1and session_type<>'BACKGROUD'group by sql_idorder by count(*) desc;--监控索引是否使用alter index &index_name monitoring usage;alter index &index_name nomonitoring usage;select * from v$object_usage where index_name = &index_name;--求数据文件的I/O分布select ,phyrds,phywrts,phyblkrd,phyblkwrt,singleblkrds,readtim,writetimfrom v$filestat fs,v$dbfile dfwhere fs.file#=df.file# order by ;--求某个隐藏参数的值col ksppinm format a54col ksppstvl format a54select ksppinm, ksppstvlfrom x$ksppi pi, x$ksppcv cvwhere cv.indx=pi.indx and pi.ksppinm like '\_%' escape '\' and pi.ksppinm like '%meer%';--求系统中较大的latchselect name,sum(gets),sum(misses),sum(sleeps),sum(wait_time)from v$latch_childrengroup by name having sum(gets) > 50 order by 2;--求归档日志的切换频率(生产系统可能时间会很长)select start_recid,start_time,end_recid,end_time,minutes from (select test.*, rownum as rnfrom (select b.recid start_recid,to_char(b.first_time,'yyyy-mm-dd hh24:mi:ss')start_time,a.recid end_recid,to_char(a.first_time,'yyyy-mm-dd hh24:mi:ss')end_time,round(((a.first_time-b.first_time)*24)*60,2) minutesfrom v$log_history a,v$log_history b where a.recid=b.recid+1 and b.first_time > sysdate - 1order by a.first_time desc) test) y where y.rn < 30--求回滚段正在处理的事务select ,b.xacts,c.sid,c.serial#,d.sql_textfrom v$rollname a,v$rollstat b,v$session c,v$sqltext d,v$transaction ewhere n=n and n=e.xidusn and c.taddr=e.addrand c.sql_address=d.address and c.sql_hash_value=d.hash_value order by,c.sid,d.piece;--求出无效的对象select 'alter procedure '||object_name||' compile;'from dba_objectswhere status='INVALID' and wner='&' and object_type in ('PACKAGE','PACKAGE BODY');/select owner,object_name,object_type,status from dba_objects wherestatus='INVALID';--求process/session的状态select p.pid,p.spid,s.program,s.sid,s.serial#from v$process p,v$session s where s.paddr=p.addr;--求当前session的状态select ,ms.valuefrom v$mystat ms,v$statname snwhere ms.statistic#=sn.statistic# and ms.value > 0;--求表的索引信息select ui.table_name,ui.index_namefrom user_indexes ui,user_ind_columns uicwhere ui.table_name=uic.table_name and ui.index_name=uic.index_nameand ui.table_name like '&table_name%' and uic.column_name='&column_name';--显示表的外键信息col search_condition format a54select table_name,constraint_namefrom user_constraintswhere constraint_type ='R' and constraint_name in (select constraint_name from user_cons_columns where column_name='&1');select rpad(child.table_name,25,' ') child_tablename,rpad(cp.column_name,17,' ') referring_column,rpad(parent.table_name,25,' ') parent_tablename,rpad(pc.column_name,15,' ') referred_column,rpad(child.constraint_name,25,' ') constraint_namefrom user_constraints child,user_constraints parent,user_cons_columns cp,user_cons_columns pcwhere child.constraint_type = 'R' and child.r_constraint_name =parent.constraint_name andchild.constraint_name = cp.constraint_name and parent.constraint_name =pc.constraint_name andcp.position = pc.position and child.table_name ='&table_name'order by child.owner,child.table_name,child.constraint_name,cp.position;--显示表的分区及子分区(user_tab_subpartitions)col table_name format a16col partition_name format a16col high_value format a81select table_name,partition_name,HIGH_VALUE from user_tab_partitions where table_name='&table_name'--使用dbms_xplan生成一个执行计划explain plan set statement_id = '&sql_id' for &sql;select * from table(dbms_xplan.display);--求某个事务的重做信息(bytes)select ,m.valuefrom v$mystat m,v$statname swhere m.statistic#=s.statistic# and like '%redo size%';--求cache中缓存超过其5%的对象select o.owner,o.object_type,o.object_name,count(b.objd)from v$bh b,dba_objects owhere b.objd = o.object_idgroup by o.owner,o.object_type,o.object_namehaving count(b.objd) > (select to_number(value)*0.05 from v$parameter where name = 'db_block_buffers');--求谁阻塞了某个session(10g)select sid, username, event, blocking_session,seconds_in_wait, wait_timefrom v$session where state in ('WAITING') and wait_class != 'Idle';--求session的OS进程IDcol program format a54select p.spid "OS Thread", "Name-User", s.programfrom v$process p, v$session s, v$bgprocess bwhere p.addr = s.paddr and p.addr = b.paddrUNION ALLselect p.spid "OS Thread", ername "Name-User", s.programfrom v$process p, v$session s where p.addr = s.paddr and ername is not null;--查会话的阻塞col user_name format a32select /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username user_name, o.owner,o.object_name,s.sid,s.serial#from v$locked_object l,dba_objects o,v$session swhere l.object_id=o.object_id and l.session_id=s.sid order by o.object_id,xidusn desc ;col username format a15col lock_level format a8col owner format a18col object_name format a32select /*+ rule */ ername, decode(l.type,'tm','table lock', 'tx','row lock', null) lock_level, o.owner,o.object_name,s.sid,s.serial#from v$session s,v$lock l,dba_objects owhere l.sid = s.sid and l.id1 = o.object_id(+) and ername is not null ;--求等待的事件及会话信息/求会话的等待及会话信息select se.sid,ername,se.event,se.total_waits,se.time_waited,se.average_waitfrom v$session s,v$session_event sewhere ername is not null and se.sid=s.sid and s.status='ACTIVE' and se.event not like '%SQL*Net%' order by ername;select s.sid,ername,sw.event,sw.wait_time,sw.state,sw.seconds_in_waitfrom v$session s,v$session_wait swwhere ername is not null and sw.sid=s.sid and sw.event not like '%SQL*Net%' order by ername;--求会话等待的file_id/block_idcol event format a24col p1text format a12col p2text format a12col p3text format a12select sid,event,p1text, p1, p2text, p2, p3text, p3from v$session_waitwhere event not like '%SQL%' and event not like '%rdbms%' and event not like '%mon%' order by event;select name,wait_time from v$latch l where exists (select 1 from (selectsid,event,p1text, p1, p2text, p2, p3text, p3from v$session_waitwhere event not like '%SQL%' and event not like '%rdbms%' and event not like '%mon%') x where x.p1= tch#);--求会话等待的对象col owner format a18col segment_name format a32col segment_type format a32select owner,segment_name,segment_typefrom dba_extentswhere file_id = &file_id and &block_id between block_id and block_id + blocks - 1;--求buffer cache中的块信息select o.OBJECT_TYPE, substr(o.OBJECT_NAME,1,10) objname , b.objd , b.status, count(b.objd)from v$bh b, dba_objects owhere b.objd = o.data_object_id and o.owner = '&1' group by o.object_type,o.object_name,b.objd, b.status ;--求日志文件的空间使用select le.leseq current_log_sequence#, 100*cp.cpodr_bno/le.lesiz percentage_fullfrom x$kcccp cp,x$kccle lewhere le.leseq =cp.cpodr_seq;--求等待中的对象select /*+rule */ s.sid, ername, w.event, o.owner, o.segment_name,o.segment_type,o.partition_name, w.seconds_in_wait seconds, w.statefrom v$session_wait w, v$session s, dba_extents owhere w.event in (select name from v$event_name where parameter1 = 'file#'and parameter2 = 'block#' and name not like 'control%')and o.owner <> 'sys' and w.sid = s.sid and w.p1 = o.file_id and w.p2 >= o.block_id and w.p2 < o.block_id + o.blocks--求当前事务的重做尺寸select valuefrom v$mystat, v$statnamewhere v$mystat.statistic# = v$statname.statistic# and v$ = 'redo size';--唤醒smon去清除临时段column pid new_value Smonset termout offselect p.pid from sys.v_$bgprocess b,sys.v_$process p where = 'SMON' and p.addr = b.paddr/set termout onoradebug wakeup &Smonundefine Smon--求回退率select b.value/(a.value + b.value),a.value,b.value from v$sysstat a,v$sysstat bwhere a.statistic#=4 and b.statistic#=5;--求DISK READ较多的SQLselect st.sql_text from v$sql s,v$sqltext stwhere s.address=st.address and s.hash_value=st.hash_value and s.disk_reads > 300;--求DISK SORT严重的SQLselect ername, sql.sql_text, sort1.blocksfrom v$session sess, v$sqlarea sql, v$sort_usage sort1where sess.serial# = sort1.session_numand sort1.sqladdr = sql.addressand sort1.sqlhash = sql.hash_value and sort1.blocks > 200;--求对象的创建代码column column_name format a36column sql_text format a99select dbms_metadata.get_ddl('TABLE','&1') from dual;select dbms_metadata.get_ddl('INDEX','&1') from dual;--求表的索引set linesize 131select a.index_name,a.column_name,b.status, b.index_typefrom user_ind_columns a,user_indexes bwhere a.index_name=b.index_name and a.table_name='&1';求索引中行数较多的select index_name,blevel,num_rows,CLUSTERING_FACTOR,status fromuser_indexes where num_rows > 10000 and blevel > 0select table_name,index_name,blevel,num_rows,CLUSTERING_FACTOR,status from user_indexes where status <> 'VALID'--求当前会话的SID,SERIAL#select sid, serial# from v$session where audsid =SYS_CONTEXT('USERENV','SESSIONID');--求表空间的未用空间col mbytes format 9999.9999select tablespace_name,sum(bytes)/1024/1024 mbytes from dba_free_space group by tablespace_name;--求表中定义的触发器select table_name,index_type,index_name,uniqueness from user_indexes where table_name='&1';select trigger_name from user_triggers where table_name='&1';--求未定义索引的表select table_name from user_tables where table_name not in (select table_name from user_ind_columns);--执行常用的过程exec print_sql('select count(*) from tab');exec show_space2('table_name');--求free memoryselect * from v$sgastat where name='free memory';select ,sum(b.value) from v$statname a,v$sesstat b where a.statistic# =b.statistic# group by ;查看一下谁在使用那个可以得回滚段,或者查看一下某个可以得用户在使用回滚段,找出领回滚段不断增长的事务,再看看如何处理它,是否可以将它commit,再不行就看能否kill它,查看当前正在使用的回滚段的用户信息和回滚段信息:set linesize 121SELECT "ROLLBACK SEGMENT NAME ",l.sid "ORACLE PID",p.spid "SYSTEM PID ",ername "ORACLE USERNAME"FROM v$lock l, v$process p, v$rollname r, v$session sWHERE l.sid = p.pid(+) AND s.sid=l.sid AND TRUNC(l.id1(+)/65536) = n AND l.type(+) = 'TX' AND l.lmode(+) = 6 ORDER BY ;--查看用户的回滚段的信息select ername, from v$session s, v$transaction t, v$rollstat r, v$rollname rnwhere s.saddr = t.ses_addr and t.xidusn = n and n = n--生成执行计划explain plan set statement_id='a1' for &1;--查看执行计划select lpad(' ',2*(level-1))||operation operation,options,OBJECT_NAME,position from plan_tablestart with id=0 and statement_id='a1' connect by prior id=parent_id andstatement_id='a1'--查看内存中存的使用selectdecode(greatest(class,10),10,decode(class,1,'Data',2,'Sort',4,'Header',to_char(class)),'Ro llback') "Class",sum(decode(bitand(flag,1),1,0,1)) "Not Dirty",sum(decode(bitand(flag,1),1,1,0)) "Dirty",sum(dirty_queue) "On Dirty",count(*) "Total"from x$bh group bydecode(greatest(class,10),10,decode(class,1,'Data',2,'Sort',4,'Header',to_char(class)),'Ro llback');--查看表空间状态select tablespace_name,extent_management,segment_space_management from dba_tablespaces;select table_name,freelists,freelist_groups from user_tables;--查看系统请求情况SELECT DECODE (name, 'summed dirty write queue length', value)/DECODE (name, 'write requests', value) "Write Request Length"FROM v$sysstat WHERE name IN ( 'summed dirty queue length', 'write requests') and value>0;--计算data buffer命中率select a.value + b.value "logical_reads", c.value "phys_reads",round(100 * ((a.value+b.value)-c.value) / (a.value+b.value)) "BUFFER HIT RATIO"from v$sysstat a, v$sysstat b, v$sysstat cwhere a.statistic# = 40 and b.statistic# = 41 and c.statistic# = 42;SELECT name, (1-(physical_reads/(db_block_gets+consistent_gets)))*100H_RATIO FROM v$buffer_pool_statistics;--查看内存使用情况select least(max(b.value)/(1024*1024),sum(a.bytes)/(1024*1024))shared_pool_used,max(b.value)/(1024*1024)shared_pool_size,greatest(max(b.value)/(1024*1024),sum(a.bytes)/(1024*1024))-(sum(a. bytes)/(1024*1024))shared_pool_avail,((sum(a.bytes)/(1024*1024))/(max(b.value)/(1024*1024)))*100avail_pool_pctfrom v$sgastat a, v$parameter b where (a.pool='shared pool' and not in ('free memory')) and ='shared_pool_size';--查看用户使用内存情况select username, sum(sharable_mem), sum(persistent_mem), sum(runtime_mem)from sys.v_$sqlarea a, dba_users bwhere a.parsing_user_id = er_id group by username;--查看对象的缓存情况selectOWNER,NAMESPACE,TYPE,NAME,SHARABLE_MEM,LOADS,EXECUTIONS,LOCKS, PINS,KEPTfrom v$db_object_cache where type not in ('NOTLOADED','NON-EXISTENT','VIEW','TABLE','SEQUENCE')and executions>0 and loads>1 and kept='NO' order byowner,namespace,type,executions desc;select type,count(*) from v$db_object_cache group by type;--查看库缓存命中率select namespace,gets, gethitratio*100 gethitratio,pins,pinhitratio*100pinhitratio,RELOADS,INVALIDATIONS from v$librarycache--查看某些用户的hashselect ername, count(b.hash_value)total_hash,count(b.hash_value)-count(unique(b.hash_value)) same_hash, (count(unique(b.hash_value))/count(b.hash_value))*100 u_hash_ratiofrom dba_users a, v$sqlarea b where er_id=b.parsing_user_id group byername;--查看字典命中率select (sum(getmisses)/sum(gets)) ratio from v$rowcache;--查看undo段的使用情况SELECT d.segment_name,extents,optsize,shrinks,aveshrink,aveactive,d.status FROM v$rollname n,v$rollstat s,dba_rollback_segs dWHERE d.segment_id=n(+) and d.segment_id=n(+);--无效的对象select owner,object_type,object_name from dba_objects where status='INVALID';select constraint_name,table_name from dba_constraints where status='INVALID';--求出某个进程,并对它进行跟踪select s.sid,s.serial# from v$session s,v$process p where s.paddr=p.addr andp.spid=&1;exec dbms_system.SET_SQL_TRACE_IN_SESSION(&1,&2,true);exec dbms_system.SET_SQL_TRACE_IN_SESSION(&1,&2,false);--求出锁定的对象select do.object_name,session_id,process,locked_modefrom v$locked_object lo, dba_objects do where lo.object_id=do.object_id;--求当前session的跟踪文件SELECT p1.value || '/' || p2.value || '_ora_' || p.spid || '.ora' filenameFROM v$process p, v$session s, v$parameter p1, v$parameter p2WHERE = 'user_dump_dest' AND = 'instance_name'AND p.addr = s.paddr AND s.audsid = USERENV('SESSIONID') AND p.background is null AND instr(p.program,'CJQ') = 0;--求对象所在的文件及块号select segment_name,header_file,header_blockfrom dba_segments where segment_name like '&1';--求对象发生事务时回退段及块号select a.segment_name,a.header_file,a.header_blockfrom dba_segments a,dba_rollback_segs bwhere a.segment_name=b.segment_name and b.segment_id='&1'--9i的在线重定义表/*如果在线重定义的表没有主键需要创建主键*/exec dbms_redefinition.can_redef_table('cybercafe','announcement');create table anno2 as select * from announcementexec dbms_redefinition.start_redef_table('cybercafe','announcement','anno2');exec dbms_redefinition.sync_interim_table('cybercafe','announcement','anno2');exec dbms_redefinition.finish_redef_table('cybercafe','announcement','anno2');drop table anno2exec dbms_redefinition.abort_redef_table('cybercafe','announcement','anno2');--常用的logmnr脚本(cybercafe)exec sys.dbms_logmnr_d.build(dictionary_filename =>'esal',dictionary_location=>'/home/oracle/logmnr');execsys.dbms_logmnr.add_logfile(logfilename=>'/home/oracle/oradata/esal/archive/1_24050. dbf', ptions=>sys.dbms_logmnr.new);execsys.dbms_logmnr.add_logfile(logfilename=>'/home/oracle/oradata/esal/archive/1_22912. dbf', ptions=>sys.dbms_logmnr.addfile);execsys.dbms_logmnr.add_logfile(logfilename=>'/home/oracle/oradata/esal/archive/1_22913. dbf', ptions=>sys.dbms_logmnr.addfile);execsys.dbms_logmnr.add_logfile(logfilename=>'/home/oracle/oradata/esal/archive/1_22914. dbf', ptions=>sys.dbms_logmnr.addfile);exec sys.dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logmnr/esal.ora');create table logmnr2 as select * from v$logmnr_contents;--与权限相关的字典ALL_COL_PRIVS表示列上的授权,用户和PUBLIC是被授予者ALL_COL_PRIVS_MADE表示列上的授权,用户是属主和被授予者ALL_COL_RECD表示列上的授权,用户和PUBLIC是被授予者ALL_TAB_PRIVS表示对象上的授权,用户是PUBLIC或被授予者或用户是属主ALL_TAB_PRIVS_MADE表示对象上的权限,用户是属主或授予者ALL_TAB_PRIVS_RECD表示对象上的权限,用户是PUBLIC或被授予者DBA_COL_PRIVS数据库列上的所有授权DBA_ROLE_PRIVS显示已授予用户或其他角色的角色DBA_SYS_PRIVS已授予用户或角色的系统权限DBA_TAB_PRIVS数据库对象上的所有权限ROLE_ROLE_PRIVS显示已授予用户的角色ROLE_SYS_PRIVS显示通过角色授予用户的系统权限ROLE_TAB_PRIVS显示通过角色授予用户的对象权限SESSION_PRIVS显示用户现在可利用的所有系统权限USER_COL_PRIVS显示列上的权限,用户是属主、授予者或被授予者USER_COL_PRIVS_MADE显示列上已授予的权限,用户是属主或授予者USER_COL_PRIVS_RECD显示列上已授予的权限,用户是属主或被授予者USER_ROLE_PRIVS显示已授予给用户的所有角色USER_SYS_PRIVS显示已授予给用户的所有系统权限USER_TAB_PRIVS显示已授予给用户的所有对象权限USER_TAB_PRIVS_MADE显示已授予给其他用户的对象权限,用户是属主USER_TAB_PRIVS_RECD显示已授予给其他用户的对象权限,用户是被授予者--如何用dbms_stats分析表及模式?execdbms_stats.gather_schema_stats(ownname=>'&USER_NAME',estimate_percent=>dbm s_stats.auto_sample_size,method_opt => 'for all columns size auto',degree=>DBMS_STATS.DEFAULT_DEGREE);execdbms_stats.gather_schema_stats(ownname=>'&USER_NAME',estimate_percent=>dbm s_stats.auto_sample_size,cascade=>true);/*FOR ALL [INDEXED | HIDDEN] COLUMNS [size_clause]FOR COLUMNS [size clause] column|attribute [size_clause] [,column|attribute [size_clause]...],where size_clause is defined as size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}integer--Number of histogram buckets. Must be in the range [1,254].REPEAT--Collects histograms only on the columns that already have histograms.AUTO--Oracle determines the columns to collect histograms based on data distribution and the workload of the columns.SKEWONLY--Oracle determines the columns to collect histograms based on the data distribution of the columns*/。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
--1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名
SELECT SN,SD FROM S WHERE [S#] IN(SELECT [S#] FROM C,SC WHERE C.[C#]=SC.[C#]AND CN='税收基础')
--2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位
--7.学生所有的成绩表单
SELECT S.S# as 学号,S.SN as 姓名,S.SD AS 职业 , SS.[语文],SS.[英语] ,SS.[数学],SS.[政治],SS.[物理],SS.[化学] FROM S ,
(SELECT SC1.S#,[语文]=SC1.G ,[英语]=SC2.G ,[数学]=SC3.G,[政治]=SC4.G,[物理]=SC5.G,[化学]=SC6.G
--4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
SELECT SN,SD FROM S WHERE [S#] IN(SELECT [S#] FROM SC RIGHT JOIN C ON SC.[C#]=C.[C#] GROUP BY [S#] HAVING COUNT(*)=COUNT([S#]))
SELECT S.SN,S.SD FROM S,SC WHERE S.[S#]=SC.[S#] AND SC.[C#]='C2'
--3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位
SELECT SN,SD FROM S WHERE [S#] NOT IN(SELECT [S#] FROM SC WHERE [C#]='C5')
----------------------- Page 1-----------------------
问题描述: 为管理岗位业务培训信息,建立3个表: S(S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄 C(C#,CN) C#,CN 分别代表课程编号、课程名称 SC(S#,C#,G) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩 要求实现如下5个处理: 1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名 2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位 3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位 4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位 5. 查询选修了课程的学员人数 6. 查询选修课程超过5门的学员学号和所属单位
--5. 查询选修了课程的学员人数
SELECT 学员人数=COUNT(DISTINCT [S#]) FROM SC
--6. 查询选修课程超过5门的学员姓名和所属单位
SELECT SN,SD FROM S WHERE [S#] IN(SELECT [S#] FROM SC GROUP BY [S#] HAVING COUNT(DISTINCT
为管理岗位业务培训信息,建立3个表:
S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄
C (C#,CN ) C#,CN 分别代表课程编号、课程名称
SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩
相关文档
最新文档