文档库 最新最全的文档下载
当前位置:文档库 › SQL_Server_2008数据库—创建、建表、查询语句

SQL_Server_2008数据库—创建、建表、查询语句

SQL_Server_2008数据库—创建、建表、查询语句
SQL_Server_2008数据库—创建、建表、查询语句

SQL Server 2008数据库—创建、建表、查询语句

一、创建数据库

1、利用对象资源管理器创建用户数据库:

(1)选择“开始”—“程序”—Microsoft SQL Server 2008—SQL Server Management Studio命令,打开SQL Server Management Studio。

(2)使用“Windows身份验证”连接到SQL Server 2008数据库实例。

(3)展开SQL Server 实例,右击“数据库”,然后人弹出的快捷菜单中选择“新建数据库存”命令,打开“新建数据库”对话框。

(4)在“新建数据库”对话框中,可以定义数据库的名称、数据库的所有者、是否使用全文索引、数据文件和日志文件的逻辑名称和路径、文件组、初始大小和增长方式等。输入数据库名称student。

2、利用T-SQL语句创建用户数据库:

在SQL Server Management Studio中,单击标准工具栏的“新建查询”按钮,启动SQL编辑器窗口,在光标处输入T-SQL语句,单击“执行”按钮。SQL编辑器就提交用户输入的T-SQL语句,然后发送到服务器执行,并返回执行结果。

创建数据库student的T-SQL语句如下:

Create data base student

On primary

(

name=student_data,

filename='E:\SQL Server2008 SQLFULL_CHS\student_data.mdf',

size=3,

maxsize=unlimited,

filegrowth=1

)

Log on

(name=student_log,

filename='E:\SQL Server2008 SQLFULL_CHS\student_log.ldf',

size=1,

maxsize=20,

filegrowth=10%

)

二、创建数据表

1、利用表设计器创建数据表:

(2)展开SQL Server实例,选择“数据库”—student—“表”,单击鼠标右键,然后从弹出的快捷菜单中选择“新建表”命令,打开“表设计器”。

(3)在“表设计器”中,可以定义各列的名称、数据类型、长度、是否允许为空等属性。

(4)当完成新建表的各个列的属性设置后,单击工具栏上的“保存”按钮,弹出“选择名称”对话框,输入新建表名stu_info,SQL Server数据库引擎会依据用户的设置完成新表的创建。

2、利用T-SQL语句创建数据表:

Create table stu_info(

stu_id char(10)not null,

name nvarchar(20)not null,

birthday date null,

sex nchar(2)null,

address nvarchar(20)null,

mark int null,

major nvarchar(20)null,

sdept nvarchar(20)null

);

3、样本数据库student表数据:

学生信息表(stu_info):

课程信息表(course_info):

学生成绩表(stu_grade):

三、完整性与约束

数据库中的数据是现实世界的反映,数据库的设计必须能够满足现实情况的实现,即满足现实商业规则的要求,这也是数据完整性的要求。

在数据库的管理系统中,约束是保证数据库中数据完整性的重要方法。

1、完整性:

数据完整性是数据库设计方面一个非常重要的问题,数据完整性代表数据的正确性、一致性和可靠性。实施数据完整性的目的在于确保数据的质量。

在SQL Server中,根据数据完整性措施所作用的数据库对象和范围不同,可以将数据完整性分类为实体完整性、域完整性和参照完整性。

实体完整性把数据表中的每行看作一个实体,它要求所有的行都具有唯一的标识;域完整性要求数据表中指定列的数据具有正确的数据类型、格式和有效的数据范围;参照完整性维持被参照表和参照表之间的数据一致性。

2、约束:

约束是数据库中的数据完整性实现的具体方法。在SQL Server中,包括5种约束类型:primary key约束、foreign key约束、unique约束、check约束和default约束。

四、数据查询

1、查询语句:

查询就是根据客户端的要求,数据库服务器搜寻出用户所需要的信息资料,并按用户规定的格式进行整理后返回给客户端。查询语句select在SQL Server中是使用频率最高的语句,可以说select语句是SQL语言的灵魂。

select语句的语法结构:

select select_list

[into new_table]

From table_source

[where search_condition]

[group by group_by_expression]

[having search_condition]

Order by order_expression[asc|desc]]

参数说明如下:

Select子句:指定由查询结果返回的列。

Into子句:将查询结果存储到新表或视图中。

From子句:用于指定数据源,即使用的列所在的表或视图。如果对象不止一个,那么它们之间必用逗号分开。

Where子句:指定用于限制返回的行的搜索条件。如果select语句没有where子句,dbms假设目标表中的所有行都满足搜索条件。

Group by子句:指定用来放置输出行的组,并且如果select子句select_list中包含聚合函数,则计算每组的汇总值。

Having子句:指定组或聚合函数的搜索条件。Having通常与groupby子句一起使用。

Order by子句:指定结果集的排序方式。ASC关键字表示升序排列结果,DESC关键字表示降序排列结果。如果没有指定任何一个关键字,那么ASC就是默认的关键字。如果没有orderby子句,DBMS 将根据输入表中的数据的存放位置来显示数据。

在这一系列的子句中,select子句和from子句是必需的,其他的子句根据需要都是可选的。

2、简单查询:

2.1、查询列:

(1)查询指定列:

在指定列的查询中,列的显示顺序由select子句指定,与数据在表中的存储顺序无关;同时,在查询多列时,用“,”将各字段隔开。

例7-1、查询所有同学学号、姓名和成绩信息。

Select stu_id,name,mark

from stu_info

查询结果如下:

(2)查询所有列:

使用“*”通配符,查询结果将列出表中所有列的值,而不必指明各列的列名,这在用户不清楚表中各列的列名时非常有用。服务器会按用户创建表格时声明列的顺序来显示所有的列。

例7-2、查询所有同学的所有信息。

select*

from stu_info

查询结果如下:

(3)使用运算列:

YEAR为系统函数,获取指定日期的年份;GEDDATE()为系统函数,获取当前日期和时间。

例7-3、查询所有同学的年龄信息。

Select stu_id,name,YEAR(getdate())-YEAR(birthday)

from stu_info

查询结果如下:

(4)改变列标题显示:

通常在查询结果显示的列标题就是创建表时所使用的列名,但是,这在实际使用中往往会带来一些不便,因此,可以利用’列标题’=列名或as ‘列标题’ 来根据需要修改列标题的显示。

例7-4、查询所有同学的年龄信息。

Select name as'姓名',YEAR(getdate())-YEAR(birthday)as'年龄'

from stu_info

查询结果如下:

(5)除去结果的重复信息:

使用distinct 关键字能够从返回的结果数据集合中删除重复的行,使返回的结果更简洁。

例7-5、查询所有的院系信息。

Select distinct sdept

from stu_info

查询结果如下:

(6)返回查询的部分数据:

在SQL Server 2008中,提供了top 关键字让用户指定返回一定数量的数据。

Top n 表示返回最前面的n 行,n 表示返回的行数;top n percent 表示返回前面的n%行。

例7-6、查询前5位同学的学号、姓名和成绩信息。

Select top 5 stu_id,name,mark

查询结果如下:

例7-7、查询60%同学的学号、姓名和成绩信息。

Select top 60 percent stu_id,name,mark

from stu_info

查询结果如下:

2.2、选择行:

Where 子句用于指定查询条件,使得select 语句的结果表中只包含那些满足查询条件的记录。

在使用时,where 子句必须紧跟在from 子句后面。Where 子句中的条件表达式包括算术表达式和逻辑表达式两种,SQL Server对Where 子句中的查询条件的数目没有限制。

(1)使用比较表达式:

例7-8、查询所有的男同学学号、姓名、生日和性别信息。

Select stu_id,name,birthday,sex

from stu_info

where sex='男'

查询结果如下:

例7-9、查询所有的总分大于550分的同学学号、姓名、生日和性别信息。

Select stu_id,name,birthday,sex

from stu_info

where mark>550

查询结果如下:

(2)使用逻辑比较表达式:

例7-10、查询所有总分大于550的男同学信息。

Select stu_id,name,birthday,sex

from stu_info

where mark>550 and sex='男'

查询结果如下:

例7-11、查询所有总分大于550分或男同学信息。

Select stu_id,name,birthday,sex

From stu_info

Where mark>550 or sex='男'

查询结果如下:

为了增强程序可读性,一般采用括号()来实现需要的执行顺序,而不考虑其默认的优先级顺序。例7-12、查询所有信息学院和会计学院并且总分大于550分的同学信息。

where (sdept='信息学院'or sdept='会计学院')and mark>550

查询结果如下:

(3)空值(null)的判断:

如果在创建数据表时没有指定not null 约束,那么数据表中某些列的值就可以为null。所谓null就是空,在数据库中,其长度为0。

例7-13、查询所有籍贯为空的同学信息。

select*

from stu_info

where address is null

查询结果如下:

(4)限定数据范围:

使用between限制查询数据范围时同时包括了边界值,效果完全可以用含有“>=”和“<=”的逻辑表达式来代替;而使用not between进行查询时没有包括边界值,效果完全可以用含有“>”和“<”的逻辑表达式来代替。

例7-14、查询总分在530—560之间的同学信息。

select*

from stu_info

where mark between 530 and 560

查询结果如下:

(5)限制检索数据的范围:

对于列值不在一个连续的取值区间,而是一些离散的值,利用between关键字就无能为力了,可以利用SQL Server提供的另一个关键字IN。

在大多数情况下,OR 运算符与IN 运算符可以实现相同的功能。

例7-15、查询所有在信息学院或会计学院就读的同学信息。

where sdept in('信息学院','会计学院')

查询结果如下:

(6)模糊查询:

在实际的应用中,用户不会总是能够精确的给出查询条件。因此,经常需要根据一些并不确切的线索来搜索信息。SQL Server提供了like子句来进行这类模糊搜索。

Like子句在大多数情况下会与通配符配合使用。

所有通配符只有在like子句中才有意义,否则通配符会被当作普遍字符处理。

各通配符也可以组合使用,实现复杂的模糊查询。

(通配符“%”表示任意字符的匹配;通配符“_ ”只能匹配任何单个字符;通配符“[]”用于指定范围(如[a-z])或集合(如[abcdef])中的任何单个字符;通配符“[^]”用于匹配没有在方括号中列出的字符。)

在使用like进行模糊查询时,当“%”、“_”和“[]”符号单独出现时,都会被作为通配符进行处理。但是有时可能需要搜索的字符串包含量一个或多个特殊通配符,例如,数据表中可能存储含百分号(%)的折扣值。若要搜索作为字符而不是通配符的百分号,必须提供escape关键字和转义符,例如,“like ‘%B%’ escape ‘B’ ”就是使用了escape关键字定义了转义字符B,将字符串“%B%”中的第二个百分号(%)作为实际值,而不是通配符。

例7-16、查询所有姓“张”的同学信息。

select*

from stu_info

where name like '张%'

查询结果如下:

例7-17、查询所有姓“张”,而且姓名是两个字的同学信息。

select*

from stu_info

where name like '张_'

查询结果如下:

例7-18、查询所有姓“张”或姓“王”的同学信息。

select*

from stu_info

where name like '[张王]%'

查询结果如下:

例7-19、查询所有不姓“张”也不姓“王”的同学信息。

select*

from stu_info

where name like '[^张王]%'

查询结果如下:

2.3、排序查询结果:

在SQL语句中,order by 子句用于排序。Order by子句总是在where子句(如果有的话)后面说明的,可以包含一个或多个列,每个列之间以逗号分隔。可以选择使用asc|desc关键字指定按照升序|降序排序。如果没有特别说明,值是以升序列进行排序的,即默认情况下使用的是asc关键字。

例7-20、查询所有同学课程编号701的课程成绩,并按由大到小的顺序输出。

select*

from stu_grade

where course_id='701'

orderby grade desc

查询结果如下:

使用order by子句也可以根据两列或多列的结果进行排序,并用逗号分隔开不同的排序关键字。其实

排序,而只有当第一列出现相同的信息时,这些相同的信息再按第二列的顺序进行排序,依此类推。例7-21、查询所有同学课程编号701的课程成绩,并按由大到小的顺序输出,如果成绩相同,则按学号由小到大排序。

select*

from stu_grade

where course_id='701'

orderby grade desc,stu_id

查询结果如下:

Order by子句除了可以根据列名进行排序外,还支持根据列的相对位置(即序号)进行排序。

例7-22、查询所有同学课程编号701的课程成绩,并按由大到小的顺序输出,如果成绩相同,则按学号由小到大排列。

Select stu_id,course_id,grade

From stu_grade

Where course_id='701'

orderby 3 desc,1

查询结果如下:

2.4、分组与汇总:

(1)聚合函数:

聚合函数是T—SQL所提供的系统函数,可以返回一列,几列或全部列的汇总数据,用于计数或统计。这类函数(除count外)仅用于数值型列,并且在列上使用聚合函数时,不考虑null值。

例7-23、统计学生信息表中学生人数。

Select COUNT(*) as '学生人数'

From stu_info

查询结果如下:

例7-24、统计学生成绩表中学号为2007070102同学的最高分、最低分、平均分和总分。

Select MAX(grade),MIN(grade),AVG(grade),SUM(grade)

From stu_grade

Where stu_id='2007070102'

查询结果如下:

(2)分组汇总:

使用聚合函数只返回单个汇总,而在实际应用中,更多的是需要进行分组汇总数据。使用group by 子句可以进行分组汇总,为结果集中的每一行产生一个汇总值。Group by子句与聚合函数有密切关系,在某种意义上说,如果没有聚合函数,group by子句也没有多大用处了。

Group by关键字后面跟着的列名称为分组列,分组列中的每个得复值将被汇总为一行。

如果包含where子句,则只对满足where条件的行进行分组汇总。

例7-25、统计学生成绩表中每个同学的最高分、最低分、平均分和总分。

Select stu_id,MAX(grade),MIN(grade),AVG(grade),SUM(grade)

From stu_grade

Group by stu_id

查询结果如下:

例7-26、统计学生成绩表中每个同学的最高分、最低分、平均分和总分,80分以下的成绩不参与统计。

Select stu_id,MAX(grade),MIN(grade),AVG(grade),SUM(grade)

From stu_grade

Where grade>=80

Group by stu_id

查询结果如下:

(3)分组筛选:

如果使用group by子句分组,则还可用having子句对分组后的结果进行过滤筛选。Having子句通常与group by子句一起使用,用于指定组或合计的搜索条件,其作用与where子句相似,二者的区别如下:

作用对象不同:where 子句作用于表和视图中的行,而having子句作用于形成的组。Where子句限制查找的行,having子句限制查找的组。

执行顺序不同。若查询句中同时有where子句和having子句,执行时,先去掉不满足where条件的行,然后分组,分组后再去掉不满足having条件的组。

Where子句中不能直接使用聚合函数,但having子句的条件中可以包含聚合函数。

例7-27、统计学生成绩表中每个同学的最高分、最低分、平均分和总分,并输出平均分大于87分的信息。

Select stu_id,MAX(grade),MIN(grade),AVG(grade),SUM(grade)

From stu_grade

Group by stu_id

Having AVG(grade)>87

查询结果如下:

(4)明细汇总:

使用group by子句对查询数据进行分组汇总,为每一组产生一个汇总结果,每个组只返回一行,无法看到详细信息。使用compute和compute by子句既能够看到统计经营部的结果又能够浏览详细数据。例7-28、使用compute子句对所有学生的人数进行明细汇总。

select*

from stu_info

compute count(stu_id)

查询结果如下:

在使用compute 和compute by时,需要注意以下几点:

Compute[by]子句不能与select into子句一起使用。

Compute 子句中的列必须在select子句的字段列表中出现。

Compute by表示按指定的列进行明细汇总,使用by关键字时必须同时使用order by子句,并且compute by中出现的列必须具有与order by后出现的列相同的顺序,且不能跳过其中的列。

例7-29、使用compute by子句按照院系对所有学生的人数进行明细汇总。

select*

from stu_info

order by sdept

compute count(stu_id)

by sdept

查询结果如下:

3、连接查询:

前面介绍的查询都是针对单一的表,而在数据通库管理系统中,考虑到数据的冗余度低、数据一致性等问题,通常对数据表的设计要满足范式的要求,因此也会造成一个实体的所有信息保存在多个表中。当检索数据时,往往在一个表中不能够得到想要的信息,通过连接操作,可以查询出存放在多个表中同一实体的不同信息,给用户带来很大的灵活性。

多表连接实际上就是实现如何使用一个表中的数据来选择另一个表中的行。而连接条件则主要通过以下方法定义两个表在查询中的关联方式:

指定每个表中要用于连接的列。典型的连接条件在一个表中的指定外键,在另一个表中指定与其关联的键。

指定比较各列的值时要使用的比较运算符(=、<>等)。

表的连接的实现可以通过两种方法:利用select语句的where子句;在from子句中使用join(inner join,cross join ,outer join,left outer join,full outer join等)关键字。

例7-30、查询所有选修课程编号701的同学学号、姓名和成绩。

Select stu_info.stu_id,name,mark

From stu_info,stu_grade

Where stu_info.stu_id=stu_grade.stu_id and course_id='701'

查询结果如下:

例7-31、查询所有选修课程的同学选修课程的成绩。

Select stu_info.stu_id,name,course_name,grade

From stu_info,stu_grade,course_info

Where stu_info.stu_id=stu_grade.stu_id and

course_info.course_id=stu_grade.course_id

有时表名比较烦琐,使用起来很麻烦,为了程序的简洁明了,在SQL中,也可以通过AS关键字为表定义别名。

例7-32、查询所有同学所有课程的成绩。

Select A.stu_id,name,course_name,mark

From stu_info as A,stu_grade as B,course_info as C

Where A.stu_id=B.stu_id and B.course_id=C.course_id

查询结果如下:

在select 语句的from子句中,通过指定不同类型的join关键字可以实现不同的表的连接方式,而在on关键字后指定连接条件。

例7-33、查询所有选修课程的同学学号、姓名和成绩。

Select stu_info.stu_id,name,mark

From stu_info inner join stu_grade

On stu_info.stu_id=stu_grade.stu_id

查询结果如下:

例7-34、从stu_info表中查询入学分数比学号为2007070101同学高的所有同学信息。Select R1.stu_id,https://www.wendangku.net/doc/4317470882.html,,R1.mark

From stu_info as R1 inner join stu_info as R2

On R2.stu_id='2007070101' and R1.mark>R2.mark

查询结果如下:

例7-35、查询所有同学的选修课程信息。

Select stu_info.stu_id,name,mark

From stu_info left outer join stu_grade

On stu_info.stu_id=stu_grade.stu_id

查询结果如下:

例7-36、查询所有同学的选修课程信息。

Select stu_info.stu_id,name,mark

From stu_grade right outer join stu_info

查询结果如下:

4、嵌套查询:

所谓嵌套查询指的是在一个select 查询语句中包含另一个(或多个)select查询语句。其中,外层的select查询语句叫外部查询,内层的select 查询语句叫子查询。

嵌套查询的执行过程:首先执行子查询语句,得到的子查询结果集传递给外层主查询语句,作为外层主查询的查询项或查询条件使用。子查询也可以再嵌套子查询。

4、1单列单值嵌套查询:

例7-37、查询选修“计算机基础”的学生成绩信息。

select*

from stu_grade

where course_id=

(select course_id

From course_info

Where course_name='计算机基础')

查询结果如下:

例7-38、查询比“2007070101”同学年龄大的同学信息。

select*

from stu_info

where birthday<

(select birthday

From stu_info

Where stu_id='2007070101')

查询结果如下

4、2单列多值嵌套查询:

例7-39、查询所有会计学院的同学成绩信息。

select*

from stu_grade

where stu_id in

(select stu_id

From stu_info

Where sdept='会计学院')

查询结果如下

例7-40、查询其他系中比会计学院某一学生分数少的学生学号和姓名。Select stu_id,name

From stu_info

Where mark

(select mark

From stu_info

Where sdept='会计学院')

And sdept<>'会计学院'

查询结果如下

例7-41、查询选修“计算机基础”的学生成绩信息。

select*

from stu_grade

where exists

(select*

Where stu_grade.course_id=course_id and course_name='计算机基础')

查询结果如下

例7-42、查询没有选修“计算机基础”的学生成绩信息。

select*

from stu_grade

where not exists

(select*

From course_info

Where stu_grade.course_id=course_id and course_name='计算机基础')

查询结果如下

5、集合查询:

如果有多个不同的查询结果数据集,但又希望将它们按照一定的关系连接在一起,组成一组数据,这就可以使用集合运算来实现。在SQL Server 2008中,T-SQL提供的集合运算符有union,except和intersect。

例7-43、查询stu_info表中信息学院或入学分数大于550分的学生信息。

Select stu_id,name,mark,sdept

From stu_info

Where sdept='信息学院'

union

select stu_id,name,mark,sdept

from stu_info

where mark>550

查询结果如下

简单数据库查询语句

数据查询语言(SELECT语句) 数据操纵语言(INSERT, UPDATE, DELETE语句) 数据定义语言(如CREATE, DROP等语句) 数据控制语言(如COMMIT, ROLLBACK等语句 超详细的SQL语句语法2008-07-11 14:25简单的Transact-SQL查询只包括选择列表、FROM 子句和WHERE子句 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。SELECT nickname,email FROM testtable WHERE name='张三' (一) 选择列表 选择列表(select_list)指出所查询列 它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行, 默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行, 而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如: SELECT TOP 2 *FROM testtable SELECT TOP 20 PERCENT * FROM testtable 9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,

数据库SQL语句

1、select x.商品代号,分类名,数量,品牌 From 商品表现1 x,商品表2 y Where x.商品代号=y.商品代号 (从商品库中查询出每一种商品的商品代号、分类名、数量和品牌等信息。)2、select distinct 产地 From商品表2 (从商品库中查询出所有商品的不同产地。) 3、select distinct 品牌 From 商品表2 (从商品库中查询出所有商品的不同品牌) 4、select count(distinct产地)as产地数From商品表2 (从商品库中查询出所有商品的不同产地的总数。) 5、select x.商品代号,分类名,产地,品牌 From商品表1 x.,商品表2 y Where x,商品代号=y.商品代号and (品牌=‘熊猫’or品牌=‘春兰’) (从商品库中查询出品牌为熊猫或春兰的所有商品的商品代号、分类名、产地和品牌。) 19、select 商品表1.商品代号,单价,数量,产地 From 商品表1,商品表2 Where 商品表达式1.商品代号=商品表达式2.商品代号 (从商品库中查询出每种商品的商品代号、单价、数量和产地。) 20、select count(*) From 商品表1 Where数量》10 (从商品库中查询出数量大于10的商品种数。) 21、select * From商品表1 Where数量between 10 and20 (从商品库中查询出数量在10和20之间的所有商品。) 22、select分类名,max(单价)as最高单价 From商品表1 Group by 分类名 (从商品库中查询出每类(即类名相同)商品的最高单价)23、select分类名,avg(数量)as平均 数量 From商品表1 Group by分类名 (从商品库中查询出每类(即分类名相 同)商品的平均数量) 24、select分类名,sum(数量)as总 数量 From商品表1 Group by分类名 (从商品库中查询出每类(即分类名相 同)商品的总数量。) 25、select* From商品表1 Where单价>all(select单价 From商品表1 Where分类名’电视机’) (从商品库中查询出比所有电视机的 单价都高的每种商品) 26、select* From商品表1 Where单价>all(select avg(单价) From商品表1) (从商品库中查询出比所有商品单价 的平均值要高的全部商品) 27、select* From商品表1 Where数量=some(select max(数量) From商品表1) (从商品库中查询出数量最多的一种 商品) 28、select distinct分类名 From商品表1. Group by 分类名having count(*)>1 (从商品库中查询出同一类商品多于一 种的所有分类名) 29、select商品表1.*,产地 From商品表1,商品表2 Where商品表1.商品代号=商品表2.商 品代事情and产地in( Select 产地 From商品表1 x ,商品表2 y Where x.商品代号=y.商品代号 Group by产地having count(*)=1) (从商品库中查询出同一产地的商品 只有一种的所有商品) 30、select*,单价*数量as总价值 From商品表1 Order by总价值desc (从商品库中查询出每种商品的总价 值,并按降序排列出来 6、select 学生。学生号,count(*)as选 课门数 From学生,选课 Where学生.学生号=选课.学生号 Group by 学生。学生号 (从教学库中查询出互个学生选课的 门数。) 7、select distinct x.* From 学生产x,选课y,选课z Where y.学生号=z.学生号and y .课程 号<>z.课程号and x.学生号=y.学生号 (从教学库中查询出至少选修了两门 课程的全部学生。) 8、select * From 学生 Where 学生号in (select 学生号 From 选课 Group by 学生号having coount (*)=1) (从教学库中查询出只选修了一门课 程的全部学生。) 9、select x.学生号,y.学生号,y.课程号 From 选课x,选课y Where x.学生号=@sl and y.学生号=@ s2 and x.课程号=y.课程号 (从教学库中查询出学生号为@s1的学 生和学生号为@s2的学生所选修的共 同课程的课程号。) 10、select x.* From 课程x,选课y Where x.课程号=y.课程号and y .学生 号=@s1 and y.课程号not in( select 课程号 from 选课 where 选课.学生号=@s2) (从教学库中查询出学生号为@S1的学 生所选修、而学生号为@s2的学生没有 选修的全部课程。) 11、select * From 课程 Where not exists( select * from 选课 where 课程.课程号=选课.课程号) (从教学库中查询出所有未被学生选 修的课程。) 12、select * From 课程 Where exists(Select * From 选课 Where 课程.课程号=选课.课程号) (从教学库中查询出所有已被学生选 修的课程。)

数据库SQL查询语句大全修订稿

数据库S Q L查询语句 大全 公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\' --- 开始备份 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 definitio n 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 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A:UNION 运算符

sql语句大全1

SQL语句大全 --语句功能 --数据操作 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 语句 DESCRIBE --描述准备好的查询

SQL查询语句大全集锦(超经典)

SQL查询语句大全集锦 MYSQL查询语句大全集锦 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 复制内容到剪贴板 代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: 复制内容到剪贴板 代码:SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: 复制内容到剪贴板 代码:SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题:

复制内容到剪贴板 代码:SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: 复制内容到剪贴板 代码:SELECT TOP 2 * FROM `testtable` 复制内容到剪贴板 代码:SELECT TOP 20 PERCENT * FROM `testtable` (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: 复制内容到剪贴板 代码:SELECT `username`,citytable.cityid FROM `usertable`,`citytable` WHERE usertable.cityid=citytable.cityid在FROM子句中可用以下两种格式为表或视图指定别名: 复制内容到剪贴板 代码:表名 as 别名 表名别名例如上面语句可用表的别名格式表示为: 复制内容到剪贴板

数据库SQL查询语句大全

经典SQL查询语句大全 一、基础 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 tab name(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的语法很精妙,查资料!

SQL数据库查询语句范例

推荐一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和Where子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。Select nickname,email FROM testtable Where n ame=’张三’ (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列例如,下面语句显示testtable表中所有列的数据:Select * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如:Select nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: Select 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 Select语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINC T选项时,对于所有重复的数据行在Select返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如: Select TOP 2 *FROM testtable Select TOP 20 PERCENT * FROM testtable (二) FROM子句 FROM子句指定Select语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和cityta ble表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: Select username,citytable.cityid FROM usertable,citytable Where usertable.cityid=citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名 as 别名表名别名

数据库图书信息管理数据库SQL语句

实验 SQL语言 一、实验目的 1、理解数据库以及数据表的设计; 2、熟悉SQL Server2005中的数据类型; 3、熟悉使用SQL语句创建和删除模式和索引; 4、掌握使用SQL语句创建、修改和删除数据表; 5、掌握使用SQL语句查询表中的数据; 6、掌握使用SQL语句插入、修改和删除数据表中的数据; 7、掌握使用SQL语句创建、删除、查询和更新视图。 二、实验容 (一)创建数据库和模式 1、通过SQL语句创建图书信息管理数据库,命名为“db_Library”,数据文件和日志文件放在D盘下以自己学号和命名的文件夹中,数据文件的逻辑名为db_Library_data,数据文件的操作系统名为db_Library_data.mdf,文件初始大小为10MB,最大可增加至300MB,增幅为10%;日志文件的逻辑名为db_Library_log,日志文件的操作系统名为db_Library_data.ldf,文件初始大小为5MB,最大可增加至200MB,增幅为2MB。 2、通过SQL语句在该数据库中创建模式L-C。 (二)创建和管理数据表 要求为各数据表的字段选择合适的数据类型及名称;为各数据表设置相应的完整性约束条件。 1、通过SQL语句将以下数据表创建在L-C模式下: 课程信息表(tb_course)——课程编号Course number 、课程名Course name 、先修课The first course 、学分credit 2、通过SQL语句将以下数据表创建在该数据库的默认模式dbo下: 图书类别信息表(tb_booktype)——类别编号Type number 、类别名称Category name 图书信息表(tb_book)——图书编号ISBN 、类别编号Type number、书名title 、作者author、BookPublic、定价BookPrice、库存数Inventory number 读者信息表(tb_reader)——读者编号Reader ID 、、性别、学号Student ID 、班级、系部pastern 借阅信息表(tb_borrow)——图书编号、读者编号、借阅日期Borrowing date 、归还日期Return date 3、通过SQL语句对读者信息表进行修改:删除系部字段、添加所在系字段。 4、通过SQL语句对图书信息表进行修改:将定价的数据类型改为REAL。 5、通过SQL语句删除课程信息表。 (三)创建和删除索引 1、使用SQL语句在图书信息表上创建一个非聚簇索引IX_S_QUANTITY,要求按照该表中库存数字段的降序创建。 2、使用SQL语句在读者信息表上创建一个唯一的非聚簇索引IX_S_NAME,要求按照该表中的字段的升序创建。 3、使用SQL语句删除之前创建的两个索引。 (四)数据库及数据表设计

SQL语句之简单查询

实验2 SQL语句之简单查询 一、实验目的 1.掌握SELECT语句的基本方法。 2.掌握从表中查询特定行的方法。 3.掌握从表中选择表中若干列和全部列的方法。 4.掌握从表中查询经过计算的值以及为列指定别名的方法。 5.掌握取消重复行和查找满足条件元组的方法。 6.掌握(NOT) BETWEEN AND,LIKE,IN,NULL,通配符的使用方法。 7.掌握ODER BY、GROUP BY的使用方法。 8.掌握聚集函数的使用方法。 二、实验要求 1.应用SELECT语句对数据库中数据进行指定条件的简单查询。 2.撰写实验报告,并附实验结果界面及相应实验语句。 三、实验步骤 1.查询StudentInfo表中所有的学生的详细信息,SQL代码如下所示: SELECT * FROM StudentInfo 2.查询StudentInfo表中所有学生的学号、姓名、系别、专业等信息,SQL代码如下所示: SELECT sno,sname,depart,major FROM StudentInfo 3.查询全体学生的学号、姓名及年龄信息,SQL代码如下所示: SELECT Sno,Sname,Year(GETDATE())-Year(Birthday) FROM StudentInfo 注:YEAR(日期)函数的作用是返回日期的年份,GETDATE()函数的作用是返回系统日期和时间。 4.查询全体学生的学号、姓名及年龄信息,并且为年龄列定义别名为“Age”。SQL 代码如下所示: SELECT Sno,Sname,Year(GETDATE())-Year(Birthday) Age FROM StudentInfo 5.查询有学生选修的教学计划的教学计划号。SQL代码如下所示: SELECT TeachTaskID FROM SC 6.查询有学生选修的教学计划的教学计划号,并去掉重复行。SQL代码如下所示:SELECT DISTINCT TeachTaskID FROM SC 注意观察以上两条语句执行结果的差别。

数据库经典SQL语句大全

数据库经典SQL语句大全 篇一:经典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:mssql7backupMyNwind_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、说明: 删除新表: 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 注:索引是不可更改的,想更改必须删除重新建。

通用SQL数据库查询语句范例

通用SQL数据库查询语句范例(多表查询) 弱电学院---文章分类: 电脑→数据库∧上一篇∨下一篇◎最新发布列表... 双击自动滚屏发布者:弱电之家发布时间:2008-10-6 17:53: 00 来源:互联网 总阅读:1351次本周阅读:31次今日阅读:4 次 推荐一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和Where子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email 字段。 Select nickname,email FROM testtable Where name=’张三’ (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据:

Select * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。例如: Select nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: Select 昵称=nickname,电子邮件=email FROM testtable

4、删除重复行 Select语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在Select返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TO P n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如: Select TOP 2 *FROM testtable Select TOP 20 PERCENT * FROM testtabl e (二) FROM子句 FROM子句指定Select语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定:

数据库基本SQL语句大全

数据库基本SQL语句大全 数据库基本----SQL语句大全 一、基础 1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1、d at' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 typ e2 [not null],、、) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definit ion 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

数据库sql查询语句上机练习1_习题_结果(单世民)

习题1 请根据给出的数据库表结构来回答相应问题: DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13)); EMP (EMPNO INT,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE, SAL FLOAT, COMM FLOAT, DEPTNO INT); BONUS (ENAME VARCHAR(10), JOB VARCHAR(9), SAL INT, COMM INT); SALGRADE ( GRADE INT, LOSAL INT, HISAL INT); 其中表中包含如下数据: DEPT表: EMP表: SALGRADE表:

BONUS表: 无数据 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原) DDL 1. 写出上述表的建表语句。此外,在DEPT上创 建名为”PK_DEPT”的主键约束,在EMP表上 创建名为”PK_EMP”的主键约束以及指向表 DEPT的外键约束”FK_DEPTNO”。 命令: Create table DEPT (DEPTNO INT NOT NULL,DNAME VARCHAR(14),LOC VARCHAR(13)); Alter table DEPT add constraint PK_DEPT PRIMARY KEY (DEPTNO); create table EMP(EMPNO INT NOT NULL,ENAME VARCHAR(10),JOB VARCHAR(9),MGR INT,HIREDATE DATE, SAL FLOAT,COMM FLOAT,DEPTNO INT); alter table EMP add constraint PK_EMP PRIMARY KEY (EMPNO); alter table EMP add constraint FK_DEPTNO foreign key(DEPTNO) references DEPT(DEPTNO);

数据库查询语句关键字总结

看过牛腩视频后,前17集讲后台代码的编写,尤其讲到查询语句的时候,顿时感觉原来学习过的查询语句中用到的关键字烟消云散了,啥都不记得了,通过看视频,帮着回忆了一部分,在这里总结一下,查询语句中用到的关键字的含义及使用。 一、select语句(单个表) 1.最简单的查询: select * from [where ] select column1,column2....from [where] 这里需要注意的是where子句中条件过滤使用到的关键字,比如用到逻辑运算符like 中的’%‘(匹配一个或多个字符)和’_‘(仅匹配一个)等。这个在新闻发布系统中也有用到。 例如:按标题搜索: view sourceprint? 1.Select top 10n.id,n.title,n.createtime,c.[name] 2.from news n inner join category c on c.caid=c.id 3.where n.title like '%'+ @title+ '%' 当然还有很多,例如between,not ,in等关键字的使用也很重要。 2.DISTINCT关键字 这个关键字,主要用来取出列中唯一的值,比如:记录中的一个字段值(city)如果有重复(廊坊,北京,廊坊,北京),那么利用DISTINCT关键字取出唯一值,即任何重复的值只计数一次,结果为为:(廊坊,北京)。 view sourceprint? 1.select DISTINCT city from [table] 3.使用别名 利用别名可以显示我们想要的名字,方便阅读。select city as 城市from ... 4.group by 和having子句 group by 用来对查询到的结果集进行分组,必须位于select语句中的from子句或where子句之后。 having子句类似于where子句,紧跟在group by子后,作为一个查询条件。

数据库SQL语句实验报告

《数据库原理及应用》实验报告SQL语句部分 :绩成总

实验一熟悉SQL SERVER,数据定义实验 实验一成绩: 一、实验目的 1、利用查询分析器创建数据库 2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作 二、实验步骤及内容 在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。 1.创建学生课程数据库 2.创建学生关系表S : 3.创建课程关系表C : 课程名学分先行课课程号Cno ccreditCname Cpno 4.创建课程关系表SC : 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 7、删除表S的“年龄”属性列。 8、删除S姓名列的唯一值约束。 9、修改SC表成绩属性列为精确数字型。 10、在表S上,按“Sno”属性列的唯一值方式建立索引。 11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。 12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。 三、实验结果: 1.创建学生课程数据库 ; Studend create database2.创建学生关系表S : S create table(, 9Sno CHAR()PRIMARYKEY UNIQUE,)(Sname CHAR20CHAR Ssex (2), smallint Sage ,

char Sdept 20(), ); .创建课程关系表C 3: 课程号课程名先行课学分 ccredit Cpno CnoCname table C create (primary key,) Cno char(4Cname CHAR(40 ),char(), 4Cpno ,Ccredit SMALLINT); 4.创建课程关系表SC : 学号课程号成绩 grade Sno Cno createtable SC(9),Sno char(),char Cno (4, Grade smallint); 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 ;datetimeadd Sbirthday alter table S 7、删除表S的“年龄”属性列。

数据库sql查询语句练习2_习题_结果(单世民)

现在有一教学管理系统,具体的关系模式如下:Student (no, name, sex, birthday, class) Teacher (no, name, sex, birthday, prof, depart) Course (cno, cname, tno) Score (no, cno, degree) 其中表中包含如下数据: Course表: Score表: Student表:

Teacher表: 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL 1.写出上述表的建表语句。 2.给出相应的INSERT语句来完成题中给出数据的插入。 单表查询 3.以class降序输出student的所有记录(student表全部属性) 命令:select*from Student order by class desc;

4.列出教师所在的单位depart(不重复)。 命令:select distinct depart from Teacher; 5.列出student表中所有记录的name、sex和class列 命令:select name,sex,class from Student; 6.输出student中不姓王的同学的姓名。 命令:select name from Student except select name from Student where name like'王%';或

select name from Student where name not like'王%'; 7.输出成绩为85或86或88或在60-80之间的记录(no,cno,degree) 命令:select no,cno,DEGREE from Score where degree=85 or degree=86 or degree=88 or degree between 60 and 80; 8.输出班级为95001或性别为‘女’的同学(student表全部属性) 命令:select*from Student where class=95001 or sex='女';

相关文档
相关文档 最新文档