文档库 最新最全的文档下载
当前位置:文档库 › SQL 总练习3

SQL 总练习3

SQL 总练习3
SQL 总练习3

-- 计数器练习:

-- Processor对象监视处理器时间、闲置的毫秒数

-- SQL Server:Memory Manager对象监视数据库服务器内存使用情况

-- SQL Server: Memory Manager对象监视数据库服务器当前占用的动态内存总量-- SQL Server: SQL Statistics对象监视数据库服务器每秒的编译次数

-- SQL Server: General Statistics对象监视数据库服务器范围内的常规活动-- SQL Server:Locks对象监视有关各种资源类型的SQL Server锁的信息

-- PhysicalDisk对象监视磁盘I/O的性能

-- DMV查询练习:

-- 当前缓存的哪些批处理或过程占用了大部分CPU 资源

select top 50 sql_handle,sum(total_worker_time)

from sys.dm_exec_query_stats

group by sql_handle

order by sum(total_worker_time)desc

-- 查询显示CPU 平均占用率最高的前50 个SQL 语句

SELECT TOP 50

total_worker_time/execution_count AS [Avg CPU Time]

FROM sys.dm_exec_query_stats

ORDER BY [Avg CPU Time] DESC

-- 找出过多编译/重新编译的DMV 查询

select*from sys.dm_exec_query_optimizer_info

where

counter ='optimizations'

or counter ='elapsed time'

-- 查询显示哪个查询占用了最多的CPU 累计使用率

SELECT

highest_cpu_queries.plan_handle,

highest_cpu_queries.total_worker_time,

q.dbid,

q.objectid,

q.number,

q.encrypted,

from

(select top 50

qs.plan_handle,

qs.total_worker_time

from

sys.dm_exec_query_stats qs

order by qs.total_worker_time desc)as highest_cpu_queries

cross apply sys.dm_exec_sql_text(plan_handle)as q

order by highest_cpu_queries.total_worker_time desc

-- 查看CPU、计划程序内存和缓冲池信息。

select

cpu_count,

hyperthread_ratio,

scheduler_count,

physical_memory_in_bytes / 1024 / 1024 as physical_memory_mb,

virtual_memory_in_bytes / 1024 / 1024 as virtual_memory_mb,

bpool_committed * 8 / 1024 as bpool_committed_mb,-- 缓冲区目前认可的页数

bpool_commit_target * 8 / 1024 as bpool_target_mb,-- 保留为记忆体目标的页数

bpool_visible * 8 / 1024 as bpool_visible_mb

from sys.dm_os_sys_info

-- 查找当前挂起的I/O 请求

select*

from sys.dm_io_pending_io_requests as a,

sys.dm_io_virtual_file_stats(null,null) b

where a.io_handle = b.file_handle

-- 编程练习:

create table TeacherSchedule(ID Int,TNAME VARCHAR(25),HIREDATE datetime,JOB VARCHAR(10),

SALARY Numeric(8,2),DEPTNO Int,ClassId Int)

insert into dbo.TeacherSchedule

values(1,'tt1','20090702','teacher',100,1,1)

insert into dbo.TeacherSchedule

values(2,'tt1','20090702','teacher',100,1,2)

insert into dbo.TeacherSchedule

values(3,'tt1','20090702','teacher',100,1,3)

insert into dbo.TeacherSchedule

values(4,'tt1','20090702','teacher',100,1,4)

insert into dbo.TeacherSchedule

values(5,'tt2','20090702','teacher',100,1,1)

insert into dbo.TeacherSchedule

values(6,'tt2','20090702','teacher',100,1,2)

insert into dbo.TeacherSchedule

values(7,'tt2','20090702','teacher',100,1,3)

insert into dbo.TeacherSchedule

values(8,'tt2','20090702','teacher',100,1,4)

create table Class(ClassID Int, CName VARCHAR(25),CTime Float)

insert into dbo.Class values(1,'cc1',8)

insert into dbo.Class values(2,'cc2',2)

insert into dbo.Class values(3,'cc3',4)

insert into dbo.Class values(4,'cc1',8)

select*from dbo.TeacherSchedule

select*from dbo.Class

-- 建立存储过程add_teacher,输入教师编号、姓名、职位、入职日期、补助、所属学院编号,课程编号,为Teacher表插入数据。

CREATE PROCEDURE add_teacher

@id INT,@name VARCHAR(25),@hiredate DATETIME,@job VARCHAR(10),

@Sal Numeric(8,2),@deptno int,@classid int

AS

BEGIN

INSERT INTO TeacherSchedule VALUES

(@id,@name,@hiredate,@job,@sal,@deptno,@classid)

END

-- 建立函数valid_id,根据输入的教师编号,检查该教师所教课程的课时是否低于个的。如果有,则返回;否则返回。

Create FUNCTION [dbo].[valid_id](@tno int)

RETURNS BIT AS

BEGIN

declare @result bit

declare @count int

SELECT @count=count(*)FROM TeacherSchedule t inner join Class c on t.ClassId= c.ClassID where t.id=@tno and c.CTime<5

IF @count>0

Set @result=1

ELSE

Set @result=0

return @result

END

-- 建立函数get_time,根据输入的课程名返回该课程总的课时。

Create FUNCTION [dbo].[get_time] (@cname VARCHAR(25))

RETURNS @result TABLE(CName varchar(25),total float)AS BEGIN

insert into@result SELECT CName,Sum(CTime)FROM Score WHERE CName=@cname

return

END

-- 建立函数get_table,根据输入的所属学院编号返回所有教师信息

CREATE FUNCTION get_table(@id int)

RETURNS TABLE

AS

RETURN

(

select*from TeacherSchedule where DEPTNO = @id

)

-- 编写存储过程disp_teacher,根据输入的所属学院编号,采用游标方式按下列格式输出所有该学院的教师姓名、职位、入职日期。

-- 教师姓名职位入职日期

-- ————————————————————————

-- (此处为数据)

-- ————————————————————————

CREATE PROCEDURE disp_teacher @deptno int

AS

BEGIN

DECLARE @tname varchar(25), @job varchar(10), @hiredate datetime; DECLARE t_cursor CURSOR

FOR SELECT tname, job, hiredate FROM TeacherSchedule where

deptno=@deptno;

OPEN t_cursor;

FETCH NEXT FROM t_cursor INTO @tname, @job, @hiredate;

PRINT' 教师姓名职位入职日期'

PRINT'-----------------------------------------'

WHILE@@FETCH_STATUS= 0

BEGIN

PRINT @tname+' '+@job+' '+cast(@hiredate as varchar)

FETCH NEXT FROM t_cursor INTO @tname, @job, @hiredate;

END

CLOSE t_cursor

DEALLOCATE t_cursor

END

-- Reporting Services 练习:

--1. 在AdventureWorks 中建立以下报表:

--统计报表:显示如下的前10条信息:销售订单号,销售订单祥单号,订单状态,订单数量,产品号,单价,小计金额

select top 10

d.SalesOrderID,d.SalesOrderDetailID,h.OrderDate,h.Status,d.OrderQty,d .ProductID,d.UnitPrice,d.LineTotal

from Sales.SalesOrderHeader h join Sales.SalesOrderDetail d on

h.SalesOrderID = d.SalesOrderID

--统计报表:按照定单号的顺序升序次序排序,统计某一年的定单销售情况、--包括销售订单号,销售订单祥单号,订单状态,订单数量,产品号,单价,小计金额--其中年份为参数。并请通过这个报表查询年的详细信息。

select

d.SalesOrderID,d.SalesOrderDetailID,h.OrderDate,h.Status,d.OrderQty,d .ProductID,d.UnitPrice,d.LineTotal

from Sales.SalesOrderHeader h join Sales.SalesOrderDetail d on

h.SalesOrderID = d.SalesOrderID

where year(h.OrderDate)= @year

order by h.OrderDate

--统计报表:统计各年各订单在2001-2002年的销售金额情况分析,显示前条,按年份折叠select year(h.OrderDate)as orderdate,h.SalesOrderID,sum(LineTotal)as total

from Sales.SalesOrderHeader h join Sales.SalesOrderDetail d on

h.SalesOrderID = d.SalesOrderID

where OrderDate between'20010101'and'20021231'

group by year(h.OrderDate),h.SalesOrderID

--2. 操作要求

-- 考生按要求在指定位置建立考生文件夹

-- 将各题建立Reporting Services及相关操作SQL语句保存到Word。并分别命名为“.1.4-1SQL.doc”、“.1.4-2SQL.doc”、“.1.4-3SQL.doc”

-- 将各题Reporting Service的运行结果以PDF的形式保存到指定文件夹,并分别命名为

“.1.4-1rp.pdf”、“.1.4-2rp.pdf”、“.1.4-3rp.pdf”

SQL常用命令使用方法:

SQL常用命令使用方法: (1) 数据记录筛选: sql="select * from 数据表where 字段名=字段值order by 字段名" sql="select * from 数据表where 字段名like ‘%字段值%‘order by 字段名" sql="select top 10 * from 数据表where 字段名order by 字段名" sql="select * from 数据表where 字段名in (‘值1‘,‘值2‘,‘值3‘)" sql="select * from 数据表where 字段名between 值1 and 值2" (2) 更新数据记录: sql="update 数据表set 字段名=字段值where 条件表达式" sql="update 数据表set 字段1=值1,字段2=值2 ……字段n=值n where 条件表达式" (3) 删除数据记录: sql="delete from 数据表where 条件表达式" sql="delete from 数据表" (将数据表所有记录删除) (4) 添加数据记录: sql="insert into 数据表(字段1,字段2,字段3 …)valuess (值1,值2,值3 …)" sql="insert into 目标数据表select * from 源数据表" (把源数据表的记录添加到目标数据表) (5) 数据记录统计函数: AVG(字段名) 得出一个表格栏平均值 COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计 MAX(字段名) 取得一个表格栏最大的值 MIN(字段名) 取得一个表格栏最小的值 SUM(字段名) 把数据栏的值相加 引用以上函数的方法: sql="select sum(字段名) as 别名from 数据表where 条件表达式" set rs=conn.excute(sql) 用rs("别名") 获取统的计值,其它函数运用同上。 (5) 数据表的建立和删除: CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) ……) 例:CREATE TABLE tab01(name varchar(50),datetime default now()) DROP TABLE 数据表名称(永久性删除一个数据表) 4. 记录集对象的方法: rs.movenext 将记录指针从当前的位置向下移一行 rs.moveprevious 将记录指针从当前的位置向上移一行 rs.movefirst 将记录指针移到数据表第一行 rs.movelast 将记录指针移到数据表最后一行 rs.absoluteposition=N 将记录指针移到数据表第N行 rs.absolutepage=N 将记录指针移到第N页的第一行 rs.pagesize=N 设置每页为N条记录 rs.pagecount 根据pagesize 的设置返回总页数 rs.recordcount 返回记录总数 rs.bof 返回记录指针是否超出数据表首端,true表示是,false为否 rs.eof 返回记录指针是否超出数据表末端,true表示是,false为否 rs.delete 删除当前记录,但记录指针不会向下移动 rs.addnew 添加记录到数据表末端 rs.update 更新数据表记录 判断所填数据是数字型 if not isNumeric(request("字段名称")) then response.write "不是数字" else response.write "数字" end if -------------------------------------------------------------------------------- simpleli 于2002-03-23 15:08:45 加贴在ASP论坛上

SQL 操作练习题

SQL Server(三级)操作练习题 1数据库运行监控 1.1使用SQL语句实现DMV查询,查找当前挂起的I/O 请求,将结果保存在 “c:\gatDoc\SQL3J2.1.1\2.1.1.doc”文档中。(提示:查询数据库master中的系统 视图sys.dm_io_pending_io_requests和系统函数 sys.dm_io_virtual_file_stats) 1.2以SA身份登录数据库,在Master数据库上执行SQL语句:Select * from sysobjects 。利用SQL Server Manangement Studio监控数据库服务器,观察每个 登录用户在数据库执行的命令,请在“c:\gatDoc\SQL3J2.1.1\2.1.1.doc”文档内写 出操作步骤,并在该文档内将下列操作界面截屏后保存:阅读进程信息,sa执行 的命令。(提示:启动活动监视器) 1.3打开SQL Server Profiler,建立跟踪,对数据库活动进行监视,同时打开性能监视 器,利用SQL Server: Memory对象监视数据库的一般活动,运行3分钟后,观察 重合时段内SQL Serve的活动和上述性能计数器的值,请在“2.1.1.doc”文档内 写出操作步骤,并在该文档内将下列三个操作界面截屏后依次保存: 1)在SQL Server Profiler中新建跟踪mytrace。 2)在性能监视器中新建SQL Server: Memory计数器。 3)在SQL Server Profiler中查看指定性能计数器的情况。 2数据库备份计划 2.1利用维护计划功能,设置每天1:00自动执行增量备份(差异备份)数据库model 到文件夹C:\Backup,并将操作步骤写在c:\gatDoc\SQL3J2.2.1\2.2.1.doc文档里面, 将下面两个操作界面截屏后依次保存在同一个文档里: 1)设置备份数据库任务的界面 2)维护计划设置完成的界面 2.2利用SQL Server Agent功能(作业功能),创建作业job1,设置每天4:00完成 以下步骤:先删除备份文件c:\gatDoc\SQL3J2.2.1\model.bak,然后对数据库model 进行完全备份,保存为c:\gatDoc\SQL3J2.2.1\model.bak,请在2.2.1.doc文档里写 出操作步骤,并将下面三个操作界面截屏后依次保存:

sql实训任务书

SQL Server课程实训任务书 一、前言: 信息技术是知识经济最重要的支撑技术之一,其核心内容是数据库技术、网络技术和程序设计技术。SQL Server数据库技术产品具有超大容量的数据库存储、高效率的数据查询算法、方便易用的向导和工具、友好亲切的用户接口,大大推动了数据管理、电子商务的迅猛发展。作为当代大学生掌握SQL Server数据库知识无论是以后工作还是做研究都是非常重要的。 二、题目: 某单位欲开发一职工工资信息管理系统。其中部分内容包括:职工数据库ZGSJK,该库中有若干表:职工简表ZGJB,基本工资表JBZGB,奖惩工资表JCGZB,用户表users等。具体内容是: 1、创建200MB的职工数据库ZGSJK,该数据库的主数据文件的逻辑名是ZGSJK4_data,主数据文件是位于D:\MSSQL\data下的ZGSJK4_data.mdf,大小是3MB,最大是5MB,以15%的速度增长,该数据库的日志文件的逻辑名是ZGSJK4_log,日志文件是位于D:\MSSQL\data下的ZGSJK4_log.ldf,大小是50MB,最大是200MB,以10MB的速度增加。 2、增添次要数据文件:ZGSJK_data2,该文件大小是8MB,最大值是10MB,以2MB的速度增长。 3、创建表:职工简表ZGJB,基本工资表JBZGB,奖惩工资表JCGZB。 职工基本信息表ZGJB

奖惩工资表JCGZB 职工扣款明细表KKMX 4、 在ZGJB 中增加级别字段JB ,类 型是 Char ,长度是8,允许为空;在JCGZB 中删除职务字段ZW 。 5、为JBGZB 表插入数据,数据来自ZGJB 表中的BH ,XM 列的所有数据行。更新JBGZB 、JCGZB 表中所有职工的YF 、XJ 和SF ,计算公式为YF=IBGZ+ZWGZ+BT1+BT2,XJ=JL1+JL2-KC1-KC2,SF=XJ+YF 。删除JBZGB 表中JB 为“初级”职工的名单。 6、检索ZGJB 表中的全部信息;检索JBGZB 表中“副处级”职务的职工信息; 7、为相应的表设置约束,保证数据的完整性 8、在职工基本信息表,基本工资表创建视图 9、在职工基本信息表,基本工资表创建存储过程和触发器

SQL常用命令汇总

SQL常用命令汇总 SQL是结果化查询语言(Structured Query Language)的缩写,其功能包括数据查询、数据定义、数据操纵和数据控制四个部分。SQL简洁、功能齐全,已成为目前应用最广的关系数据库语言。 一、SQL的发展及标准化 1.SQL的发展 SQL是当前最为成功、应用最为广泛的关系数据库语言,其发展主要经历了以下几个阶段; (1)1974年,由Chamberlin和Boyce提出,当时称为SEQUEL(Structured English Query Language); (2)1976年,IBM公司对SEQUEL进行了修改,并将其用于本公司的SYSTEM R关系数据库系统中; (3)1981年,推出了商用关系数据库SQL/DS,并将其名字改为SQL,由于SQL功能强大,简洁易用,因此得到了广泛的应用; (4)今天,SQL广泛应用于各种大型数据库,如Sybase,INFORMIX,SQL Server,Oracle,DB2,INGRES等,也用于各种小型数据库,如FoxPro,Access等。 2.SQL标准化 随着关系数据库系统和日益广泛,SQL的标准化工作也在紧张地进行着,二十多年来已制订了多个SQL标准:SQL-86,SQL-89,SQLL2和SQL-99。 二、SQL的基本概念 1.基本表——一个关系对应一个表。基本表是独立存在的表,不是由其他的表导出的 表。 2.视图——是一个或几个基本表导出的表,是一个虚拟的表。它本身不独立存在于数 据中,数据库中只存放视图对应的数据,这些数据仍存放在导出视图的基本表中。 当基本表中的数据发生变化时,从视图中查询出来的数据也随之改变。 三、SQL的主要特点 SQL有如下几个特点。 (1)SQL是类似于英语的自然语言,简洁易用。 (2)SQL是一种非过程语言。 (3)SQL是一种面向集合的语言。 (4)SQL既是自含式语言,又是嵌入式语言;可独立使用,也可以嵌入到宿主语言中。 (5)SQL是数据库查询(Query)、数据定义(Definition)、数据操纵(Manipulation)和数据控制(Control)四种功能。 创建数据表 语法格式:CREA TE TABLE<表名>(<列定义>[{,<列定义>|<表约束>}]) 例:create table s(xingm c(8),xueh c(8),chengj c(3)) 结果:

SQL练习

SQL练习 基本select语句: 1查询emp表的所有数据 2.查询emp表中ename,job,sal几列,其中sal列在结果集中以别名salary查询SQL>select ename,job,sal salary from emp; 3.查询emp表中deptno,ename,年工资,并将年工资命名别名total salary SQL>select deptno,ename,sal*12"total salary"from emp; 4.查看emp表的结构 5.查询emp表中雇员号,雇员的名字,工作岗位,入职日期,并将查询保存为脚本,脚本名字c.sql 6.运行c.sql 7.查询员工表中部门编号,重复的部门编号只查询一次 SQL>select distinct deptno from emp; 8.在结果集中雇员名和工作岗位相连用"空格逗号空格"分隔,并将列头查询为Employee and Title ???? 限制和排列数据 1.查询收入大于2850的雇员名称和工资 SQL>select ename,sal from emp where sal>2850; 2.查询雇员编号7566的雇员名字和所在部门号 SQL>select 2ename,deptno from emp where empno=7566; 3.查询BLAKE的工资 略 4.查询收入在2000和5000之间的人 SQL>select ename from emp where sal between2000and5000; 5.查询收入为1000,2000,3000,5000的人 SQL>select ename from emp where sal in(1000,2000,3000,5000);

sql server实训总结4篇

sql server实训总结4篇 sql server实训总结4篇 sql server实训总结篇一: 为期一周的实训已经结束,从这一周中,有了很多的感悟。从学到和掌握到的东西来说,在书本上学到的东西非常不牢固,然而实训真的让我受益匪浅! 实训第一天到教室时,看到老师给我们讲试训的内容与要求,然后告诉我们一些要完成的任务与作业,然后根据试训的内容与要求授课,让我们从实践中去体会所学的知识。说实话,对于SQL Server 数据库,我所学到的知识很不牢固,当时在课堂上听课所记住的也并不多,所以在试训开始时,真的不知道该干些什么?有一种何去何从的感觉!但随着老师的教课和讲解,以及和同学的讨论,再结合自己所知道的知识和老师所发放下的课程内容,根据这些实际的情况,我对自己将要做的事也有了兴趣和信心。所以在接下来的时间中,我们在老师的帮助下开始了数据库相关的实训。 在这次的google订餐系统的设计过程中,我们根据该google订餐系统的功能,将其分解三大部分来完成,第一部分就是建立数据库和表,并给其添加约束;第二是角色的管理,分为管理员,订餐用户和餐馆;第三就是用编程语言建立管理菜单。所以试训的内容是从数据库和数据表的创建和修改开始的,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操作过程中,有查看表属性,有查看表信息,修改表中数据,删除表中的数据以及修改表与删除表的操作。

我们以SQL Server数据库为基础,建立一个google订餐系统的数据库管理体系,并将数据库与程序连接,用编程语言建立数据库管理菜单。老师给我们讲了库和表的创建方法,以及约束的内心及其语法结构,让我们知道了不同约束的功能和使用的环境,还给我们说了标识列的使用和作用。讲了数据库的操作,增删改查。使我们掌握了insert into,deleted from,update set,以及selet*from语句的的相关知识和运用。其中还学到了分页查询以及多表查询。 从这次试训中让我们更明白了一些知识,表是数据库最重要的一个数据对象,表的创建好坏直接关系到数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际运用中使用多表,对表的规划和理解就会越深刻。通过这次试训,让我深刻的了解到自己的不足,要想对进行数据库更深的学习,自己得要多看有关的课外书籍,并多做练习,不懂得要多问同学和请教老师,以解决自己遇到的难题,知道更多的知识。实训不仅是让我们在实践中对理论知识的验证,也让我们知道我们多学的知识在社会上的运用,把所学知识和企业商业接轨。 这次实训,不仅让我们学到了许多有关数据库的知识,老师也给我们讲了很多社会现状和就业情况,让我们不同的角度了解这个专业的就业趋势。让我们在今后的学习中更有动力的充实自己,曾加自己的知识面和锻炼自己各方面能力。 sql server实训总结 篇二:

易语言sql命令格式

打开2007数据库 外部数据库1.打开(“ODBC;DSN=MS Access Database;DBQ=”+取运行目录() +“\数据库.accdb;Driver={Microsoft Access Driver (*.mdb, *.accdb)};;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;PWD=”, , 真) 易语言对ACCESS数据库 学习使用数据库,难免要使用SQL语句。外部数据库使用SQL语句可以快速地完成对数据库的种种操作,如:查询、修改、插入记录、删除记录等。至于更多的,比如:创建表、删除表、加密数据等等,等我们能够比较熟练地掌握数据库的操作再研究。 一、基本命令格式 1、查询记录 基本格式:select 字段名from 表名where 条件 例如:要查询“员工表"中“张三"的信息,可以这么写:“select * from 员工表where 姓名='张三'"。这里,“员工表"是要查询的表的名称,“姓名"是字段名称。 如果要查询的是张三的电话呢?就得这么写:“select 电话from 员工表where 姓名='张三'"。“电话"也是该表中的字段。 如果要查询整个表的信息,就不需要加“where"。比如,要查询“员工表"中所有员工的全部信息,就可以这么写:“select * from 员工表"。 2、删除记录 基本格式:delete from 表名where 条件 例如:要删除“学生表"中“成绩"小于50的学生名字,可以这么写:“delete from 学生表where 成绩<50" 如果不加条件,就会删除该表中所有记录,该表就变成一个没有记录的空表,以后还可以向表中添加记录。本命令与删除表“drop table"不同,“drop table"删除的是被操作的表,删除后,整个表都不存在,也就不可以再添加记录了。 3、添加记录 基本格式:insert into 表名(字段1,字段2,字段3) values (字段1的值,字段2的值,字段3的值) 本命令是往指定的表中添加记录。要注意,“表名"后面括号中是被操作的字段名称,“values"后面括号中是对应的字段值,不要弄错了位置的先后顺序。还有,本命令不可以跟“where",因为你要添加的记录在表中根本没有,所以也就不可以有什么条件了。 4、修改记录 基本格式:update 表名set 欲修改的字段名1=该字段的新值,欲修改的字段名2=该字段的新值where 条件 该命令是修改表中已经存在的记录数据。如果不加“where"条件,就会把所有指定的字段都改成新值。 比如:要修改“员工表"中“张三"的工资为1500,应该这么写:“update 员工表set 工资=1500 where 姓名='张三'"。 二、易语言命令操作数据库 在易语言中,对外部数据库,比如ACCESS的操作,有如下方法: 一个是用“外部数据库",另一个是用“数据库连接"和“记录集"。前一种是我这段时间正在学习的,操作起来比较方便。后一种我还没有用过,不敢多讲。不过,我觉得记录集就象一张表格,只是这表格是看不见的,是动态的。在这里,我只说一下“外部数据库"。 1、查询操作 基本命令:外部数据库控件名称.查询(SQL命令语句)

sql练习题+答案

(一)新建以下几个表 student(学生表): 其中约束如下: (1)学号不能存在相同的 (2)名字为非空 (3)性别的值只能是’男’或’女’ (4)系包括这几个:信息系,计算机科学系,数学系,管理系,中文系,外语系,法学系 (5)出生日期为日期格式 (6)年龄为数值型,且在0~100之间

cs(成绩表): 其中约束如下: (1)sno和cno分别参照student和course表中的sno,cno的字段(2)cj(成绩)只能在0~100之间,可以不输入值 course(课程表)

其约束如下: (1)课程号(cno)不能有重复的 (2)课程名(cname)非空 (三)针对学生课程数据库查询 (1)查询全体学生的学号与姓名。 (2)查询全体学生的姓名、学号、所在系,并用别名显示出结果。 (3)查询全体学生的详细记录。 (4)查全体学生的姓名及其出生年份。 (5)查询学校中有哪些系。

(6)查询选修了课程的学生学号。 (7)查询所有年龄在20岁以下的学生姓名及其年龄。 (8)查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。 (9)查询年龄不在20~23岁之间的学生姓名、系别和年龄。 (10)查询信息系、数学系和计算机科学系生的姓名和性别。 (11)查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。 (12)查询所有姓刘学生的姓名、学号和性别。

(13)查询学号为2009011的学生的详细情况。(具体的学号值根据表中数据确定) (14)查询姓“欧阳”且全名为三个汉字的学生姓名 (15)查询名字中第2个字为“晨”字的学生的姓名和学号 (16)查询所有不姓刘的学生姓名。 (17)查询sql课程的课程号和学分。 (18)查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。 (19)查询缺少成绩的学生的学号和相应的课程号。

SQL实习总结5篇

SQL实习总结5篇 为期一周的实训已经结束,从这一周中,有了很多的感悟。从学到和掌握到的东西来说,在书本上学到的东西非常不牢固,然而实训真的让我受益匪浅。 实训第一天到教室时,看到老师给我们讲试训的内容与要求,然后告诉我们一些要完成的任务与作业,然后根据试训的内容与要求授课,让我们从实践中去体会所学的知识。说实话,对于SQL Server 数据库,我所学到的知识很不牢固,当时在课堂上听课所记住的也并不多,所以在试训开始时,真的不知道该干些什么?有一种“何去何从”的感觉。但随着老师的教课和讲解,以及和同学的讨论,再结合自己所知道的知识和老师所发放下的课程内容,根据这些实际的情况,我对自己将要做的事也有了兴趣和信心。所以在接下来的时间中,我们在老师的帮助下开始了数据库相关的实训。 在这次的google订餐系统的设计过程中,我们根据该google订餐系统的功能,将其分解三大部分来完成,第一部分就是建立数据库和表,并给其添加约束;第二是角色的管理,分为管理员,订餐用户和餐馆;第三就是用编程语言建立管理菜单。所以 试训的内容是从数据库和数据表的创建和修改开始的,表是建立关系数据库的基本结构,用来存储数据具有已定义的属性,在表的操

作过程中,有查看表属性,有查看表信息,修改表中数据,删除表中的数据以及修改表与删除表的操作。我们以SQL Server数据库为基础,建立一个google订餐系统的数据库管理体系,并将数据库与程序连接,用编程语言建立数据库管理菜单。老师给我们讲了库和表的创建方法,以及约束的内心及其语法结构,让我们知道了不同约束的功能和使用的环境,还给我们说了标识列的使用和作用。讲了数据库的操作,增删改查。使我们掌握了insert into,deleted from,update set,以及select*from语句的的相关知识和运用。其中还学到了分页查询以及多表查询。 从这次试训中让我们更明白了一些知识,表是数据库最重要的一个数据对象,表的创建好坏直接关系到数据库的成败,表的内容是越具体越好,但是也不能太繁琐,以后在实际运用中使用多表,对表的规划和理解就会越深刻。通过这次试训,让我深刻的了解到自己的不足,要想对进行数据库更深的学习,自己得要多看有关的课外书籍,并多做练习,不懂得要多问同学和请教老师,以解决自己遇到的难题,知道更多的知识。实训不仅是让我们在实践中对理论知识的验证,也让我们知道我们多学的知识在社会上的运用,把所学知识和企业商业接轨。 这次实训,不仅让我们学到了许多有关数据库的知识,老师也给我们讲了很多社会现状和就业情况,让我们不同的角度了解这个专业

SQL命令大全-中英文对照

[code=SQL][/code] --语句功能 --数据操作 SELECT --从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 --数据定义 CREATE TABLE --创建一个数据库表 DROP TABLE --从数据库中删除表 ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器 DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域 ALTER DOMAIN --改变域定义 DROP DOMAIN --从数据库中删除一个域 --数据控制 GRANT --授予用户访问权限 DENY --拒绝用户访问 REVOKE --解除用户访问权限 --事务控制 COMMIT --结束当前事务 ROLLBACK --中止当前事务 SET TRANSACTION --定义当前事务数据访问特征--程序化SQL DECLARE --为查询设定游标 EXPLAN --为查询描述数据访问计划 OPEN --检索查询结果打开一个游标 FETCH --检索一行查询结果 CLOSE --关闭游标 PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句

sql练习题

一、选择题 1. 数据库的英文缩写是( ) A.DBS B.DBMS C.DBO D.DB 2.数据库系统的英文缩写是( ) A.DBS B.DBMS C.DBO D.DB 3.数据库管理系统的英文缩写是( ) A.DBS B.DBMS C.DBO D.DB 4.目前,商品化的数据库管理系统以( )为主. A.网状模型 B.层次模型 C.关系模型 D.其他模型 5.在SQL SERVER 2000的某工具中,可以创建查询和其他SQL 脚本,并针对SQL SERVER 2000数据库执行它他,这个工具是( ) A.服务管理器 B.查询分析器 C.企业管理器 D.服务器网络实用工具 6、下面语句中,哪种语句用来创建视图()? A、CREATE TABLE B、ALTE VIEW C、DROP VIEW D、CREATE VIEW 7、下面语句中,哪种语句用来修改视图()。 A、CREATE TABLE B、ALTE VIEW C、DROP VIEW D、CREATE VIEW 8、下面语句中,哪种语句用来删除视图()。 A、CREATE TABLE B、ALTE VIEW C、DROP VIEW D、CREATE VIEW 9、sp_help属于哪一种存储过程()? A、系统存储过程 B、用户定义存储过程 C、扩展存储过程 D、其他 10、下列哪些语句用于创建存储过程()? A、CREATE PROCEDURE B、CREATE TABLE C、DROP PROCEDURE D、其他 11、下列哪些语句用于删除存储过程()? A、CREATE PROCEDURE B、CREATE TABLE C、DROP PROCEDURE D、其他 12、下列哪些语句用于创建触发器()? A、CREATE PROCEDURE B、CREATE TRIGGER C、ALTER TRIGER D、DROP TRIGGER 13、下列哪些语句用于删除触发器()? A、CREATE PROCEDURE B、CREATE TRIGGER C、ALTER TRIGER D、DROP TRIGGER 14、每个数据库有且只能有一个()。 A、次数据文件 B、主数据文件 C、日志文件 D、其他

SQL数据库实训示例

附录: SQL数据库实训示例--------客房管理系统设计 ●本系统要求实现以下主要功能: 1.数据录入功能 在本系统中提供客人信息登记功能。可以录入客人的姓名、性别、年龄、身份证号码、家庭住址、工作单位、来自地的地名、入住时间、预计入住天数、客房类别、客房号、离店时间以及缴纳押金金额等信息。在客人退房时,系统根据输入的离店时间及客房单价自动计算客人住宿费金额。 2.数据查询功能 系统需要提供以下查询功能: (1)查某类客房的入住情况及空房情况,显示所有该类客房空房数目和客房号。 (2)根据客人姓名、来自地的地名、工作单位或家庭住址等信息查询客人信息;根据客房号查询入住客人的信息。 (3)查询某个客人住宿费用情况,显示客人缴纳押金金额、实际入住天数、客房价格、实际住宿费、住宿费差额及余额等信息。 (4)查询所有入住时间达到或超过预计入住天数的客人。 3.数据统计功能 (1)统计一段时间内各类客房的入住情况。 (2)统计全年各月份的客房收入。 (3)统计一段时间内各类客房的入住率。 ●系统的实现 1.数据库概念设计 数据库的概念设计就是画出E-R图。 分析前面的系统功能要求,需要一个表来存储和管理客人信息,使系统能够接受客人入住时输入的各项数据,以实现数据录入、查询或统计客人信息等功能。客人是本系统的第一个实体。 为了能实现查询和统计客房入住情况等功能,必须有一个表来存储和管理所有客房的信息。客房是本系统的第二个实体。 客房价格是以客房的类型来制定的。需要建立一个表来记录各种客房类型的信息。它主要为各种查询和统计功能提供客房价格数据。客房类型是第3个实体。 据此可以绘出客房管理系统数据库的E-R图如下:

SQL语句基础教程汇总

无论您是一位SQL 的新手,或是一位只是需要对SQL 复习一下的资料仓储业界老将,您就来对地方了。这个SQL 教材网站列出常用的SQL 指令,包含以下几个部分: ? SQL 指令: SQL 如何被用来储存、读取、以及处理数据库之中的资料。 ?表格处理: SQL 如何被用来处理数据库中的表格。 ?进阶SQL: 介绍SQL 进阶概念,以及如何用SQL 来执行一些较复杂的运算。 ? SQL 语法: 这一页列出所有在这个教材中被提到的SQL 语法。 对于每一个指令,我们将会先列出及解释这个指令的语法,然后用一个例子来让读者了解这个指令是如何被运用的。当您读完了这个网站的所有教材后,您将对SQL 的语法会有一个大致上的了解。另外,您将能够正确地运用SQL 来由数据库中获取信息。笔者本身的经验是,虽然要对SQL 有很透彻的了解并不是一朝一夕可以完成的,可是要对SQL 有个基本的了解并不难。希望在看完这个网站后,您也会有同样的想法。 SQL指令 SELECT 是用来做什么的呢?一个最常用的方式是将资料从数据库中的表格内选出。从这一句回答中,我们马上可以看到两个关键字:从(FROM) 数据库中的表格内选出(SELECT)。(表格是一个数据库内的结构,它的目的是储存资料。在表格处理这一部分中,我们会提到如何使用SQL 来设定表格。) 我们由这里可以看到最基本的SQL 架构: SELECT "栏位名" FROM "表格名" 我们用以下的例子来看看实际上是怎么用的。假设我们有以下这个表格: store_name Sales Date Los Angeles $1500 Jan-05-1999 San Diego $250 Jan-07-1999 Los Angeles $300 Jan-08-1999 Boston $700 Jan-08-1999

《数据库及SQL Server》项目实训题

《数据库及SQL Server》项目实训题 一、学生成绩管理系统数据库 要求: 1、设计并创建数据库( ),保存与学生及成绩有关的信息,包括:学生基本信息,课程基本信息,学生成绩信息等,设置各表的完整性约束条件(如主键、外键等)。录入以上信息。 2、创建存储过程( ),根据输入学号统计并显示该生成绩信息,包括总分、平均分、不及格门数等。 3、创建存储过程( ),根据输入课程名称统计并显示该课程的考试信息,包括考试人数、最高分、最低分、平均成绩等。 4、创建函数( ),根据学号与课程名得出该生该门课的名次。 二、图书管理系统数据库 要求: 1、设计并创建数据库( ),保存与图书管理有关信息,包括:图书信息,读者信息,借阅信息等,设置各表的完整性约束条件(如主键、外键等)。录入以上信息。 2、创建存储过程( ),根据输入读者号查询统计该读者的借阅信息,包括总借本数、未还本数、未还书的图书信息与借阅日期等。 3、创建存储过程( ),根据输入书号查询该图书的借阅信息,包括借阅者信息与借还日期,并统计该书的借阅人次数、总借阅天数等。 4、创建触发器( ),当借书(添加借阅记录)时,查询该书就是否借出未还,如已借出则不能添加借阅记录,如未借出则正常添加。(提示:可创建替代触发器) 三、职工工资系统数据库 已知某公司工资计算方法为: 实发工资=级别工资+(本月加班天数-缺勤天数)/本月全勤天数×级别工资 如:张明的级别为部长,部长工资就是5000元,2014年11月全勤天数为20天,张明加班2天,缺勤1天,则张明2014年11月的工资就是:5000+(2-1)/20*5000=5250元 要求: 1、设计并创建数据库( ),用于保存与职工工资有关的信息,设置各表的完整性约束条件 (如主键、外键等)。录入职工基本信息、级别工资信息、每月的职工加班天数与缺勤天数。 2、创建视图( ),包括以下信息:年月、职工工号、姓名、级别、加班天数、缺勤天数、实 发工资。试设计各种条件查询该视图。 3、创建函数( ),根据年月与职工工号计算出该职工该月的工资。 4、创建存储过程( ),根据输入的年月计算出该月所有职工的工资,保存并显示。(参考提示:先得到该月全勤天数) 四、超市售货系统数据库 要求: 1、一连锁超市拥有若干分部,设计并创建数据库( ),保存与超市售货有关信息,包括:各分部超市的基本信息,商品信息,每天的销售信息等,设置各表的完整性约束条件(如主键、外键等)。录入以上信息。 2、创建函数( ),根据年月、超市编号、商品号计算出该商品在该超市当月的销售总金额。 3、创建存储过程( ),根据输入年月统计当月销售量排在前五位的商品及销售数量。 4、创建存储过程( ),根据输入年月统计当月销售金额排在前5%的超市信息及销售总金额。(提示:可创建临时表存放中间数据,用完删除)

数据库(SQL)操作命令大全

下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键:Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ?%value1%? ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count * as totalcount from table1 求和:select sum(field1) as sumvalue from table1

SQL练习题

例题 1、写出一条Sql语句:取出表A中第31到第40记录(Mysql) select * from A limit 30, 10 MS-SQLServer 解1:select top 10 * from A where id not in (select top 30 id from A) 解2:select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A) 解3:select * from (select *, Row_Number() OVER (ORDER BY id asc) rowid FROM A) as A where rowid between 31 and 40 Oracle select * from (select A.*, row_number() over (order by id asc) rank FROM A) where rank >=31 AND rank<=40; 2、用一条SQL语句查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三语文81 张三数学75 李四语文76 李四数学90 王五语文81

王五数学100 王五英语90 A: select distinct name from table where name not in (select distinct name from tabl e where fenshu<=80) select name from table group by name having min(fenshu)>80 3、学生表如下: 自动编号学号姓名课程编号课程名称分数 12005001张三0001数学69 22005002李四0001数学89 32005001张三0001数学69 删除除了自动编号不同,其他都相同的学生冗余信息 A: delete tablename where自动编号not in(select min(自动编号) from tablename group by学号,姓名,课程编号,课程名称,分数) 4、请用SQL语句实现: 从TestDB 数据表中查询出所有月份的发生额都比101 科目相应月份的发生额高的科目。请注意:TestDB 中有很多科目,都有1 -12 月份的发生额。 AccID :科目代码,Occmonth :发生额月份,DebitOccur :发生额。

SQL语言命令

SQL语言由命令、子句、运算和集合函数等构成。在SQL中,数据定义语言DDL(用来建立及定义数据表、字段以及索引等数据库结构)包含的命令有CREATE、DROP、ALTER;数据操纵语言DML(用来提供数据的查询、排序以及筛选数据等功能)包含的命令有SELECT、INSERT、UPDATE、DELETE。 一、SQL语句 (1)Select 查询语句 语法:SELECT [ALL|DISTINCT] <目标列表达式> [AS 列名] [,<目标列表达式> [AS 列名] ...] FROM <表名> [,<表名>…] [WHERE <条件表达式> [AND|OR <条件表达式>...] [GROUP BY 列名[HA VING <条件表达式>]] [ORDER BY 列名[ASC | DESC]] 解释:[ALL|DISTINCT] ALL:全部;DISTINCT:不包括重复行 <目标列表达式> 对字段可使用A VG、COUNT、SUM、MIN、MAX、运算符等 <条件表达式> 查询条件谓词 比较=、>,<,>=,<=,!=,<>, 确定范围BETWEEN AND、NOT BETWEEN AND 确定集合IN、NOT IN 字符匹配LIKE(“%”匹配任何长度,“_”匹配一个字符)、NOT LIKE 空值IS NULL、IS NOT NULL 子查询ANY、ALL、EXISTS 集合查询UNION(并)、INTERSECT(交)、MINUS(差) 多重条件AND、OR、NOT 对查询结果分组 [HA VING <条件表达式>] 分组筛选条件 [ORDER BY 列名[ASC | DESC]] 对查询结果排序;ASC:升序DESC:降序 例1:select student.sno as 学号, https://www.wendangku.net/doc/9010538798.html, as 姓名, course as 课程名, score as 成绩from score,student where student.sid=score.sid and score.sid=:sid 例2:select student.sno as 学号, https://www.wendangku.net/doc/9010538798.html, as 姓名,A VG(score) as 平均分from score,student where student.sid=score.sid and student.class=:class and (term=5 or term=6) group by student.sno, https://www.wendangku.net/doc/9010538798.html, having count(*)>0 order by 平均分DESC 例3:select * from score where sid like '9634' 例4:select * from student where class in (select class from student where name='陈小小') (2)INSERT插入语句 语法:INSERT INTO <表名> [(<字段名1> [,<字段名2>, ...])] V ALUES (<常量1> [,<常量2>, ...]) 语法:INSERT INTO <表名> [(<字段名1> [,<字段名2>, ...])] 子查询 例子:INSERT INTO 借书表(rid,bookidx,bdate)V ALUES (edit1.text,edit2.text,date) 例子:INSERT INTO score1(sno,name) SELECT sno,name FROM stud ent WHERE class=?9634? (3)UPDATE-SQL

相关文档