收藏 分享(赏)

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

上传人:精品资料 文档编号:8013331 上传时间:2019-06-04 格式:DOC 页数:41 大小:470.98KB
下载 相关 举报
SQL Server 2008数据库—创建、建表、查询语句.doc_第1页
第1页 / 共41页
SQL Server 2008数据库—创建、建表、查询语句.doc_第2页
第2页 / 共41页
SQL Server 2008数据库—创建、建表、查询语句.doc_第3页
第3页 / 共41页
SQL Server 2008数据库—创建、建表、查询语句.doc_第4页
第4页 / 共41页
SQL Server 2008数据库—创建、建表、查询语句.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

1、SQL Server 2008 数据库创建、建表、查询语句一、创建数据库 1、利用对象资源管理器创建用户数据库:(1 )选择“开始”“程序”Microsoft SQL Server 2008SQL Server Management Studio 命令,打开 SQL Server Management Studio。(2 )使用“Windows 身份验证”连接到 SQL Server 2008 数据库实例。(3 )展开 SQL Server 实例,右击“数据库” ,然后人弹出的快捷菜单中选择“新建数据库存”命令,打开“新建数据库”对话框。(4 )在“新建数据库”对话框中,可以定义数据库的名称、

2、数据库的所有者、是否使用全文索引、数据文件和日志文件的逻辑名称和路径、文件组、初始大小和增长方式等。输入数据库名称 student。2、利用 T-SQL 语句创建用户数据库:在 SQL Server Management Studio 中,单击标准工具栏的“新建查询”按钮,启动 SQL 编辑器窗口,在光标处输入 T-SQL 语句,单击“执行 ”按钮。SQL 编辑器就提交用户输入的 T-SQL 语句,然后发送到服务器执行,并返回执行结果。创建数据库 student 的 T-SQL 语句如下:Create data base studentOn primary(name=student_data,

3、filename=E:SQL Server2008 SQLFULL_CHSMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAstudent_data.mdf,size=3,maxsize=unlimited,filegrowth=1)Log on(name=student_log,filename=E:SQL Server2008 SQLFULL_CHSMicrosoft SQL ServerMSSQL10.MSSQLSERVERMSSQLDATAstudent_log.ldf,size=1,maxsize=20,filegrowth=10%)二、

4、创建数据表1、利用表设计器创建数据表:(1 )启动 SQL Server Management Studio,连接到SQL Server 2008 数据库实例。(2 )展开 SQL Server 实例,选择“数据库”student“表” ,单击鼠标右键,然后从弹出的快捷菜单中选择“新建表”命令,打开“表设计器” 。(3 )在“表设计器”中,可以定义各列的名称、数据类型、长度、是否允许为空等属性。(4 )当完成新建表的各个列的属性设置后,单击工具栏上的“保存”按钮,弹出“选择名称”对话框,输入新建表名 stu_info,SQL Server 数据库引擎会依据用户的设置完成新表的创建。2、利用 T

5、-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):三、完整性与约束数据库中的数据是现实世界的

6、反映,数据库的设计必须能够满足现实情况的实现,即满足现实商业规则的要求,这也是数据完整性的要求。在数据库的管理系统中,约束是保证数据库中数据完整性的重要方法。1、 完整性:数据完整性是数据库设计方面一个非常重要的问题,数据完整性代表数据的正确性、一致性和可靠性。实施数据完整性的目的在于确保数据的质量。在 SQL Server 中,根据数据完整性措施所作用的数据库对象和范围不同,可以将数据完整性分类为实体完整性、域完整性和参照完整性。实体完整性把数据表中的每行看作一个实体,它要求所有的行都具有唯一的标识;域完整性要求数据表中指定列的数据具有正确的数据类型、格式和有效的数据范围;参照完整性维持被参

7、照表和参照表之间的数据一致性。2、 约束:约束是数据库中的数据完整性实现的具体方法。在SQL Server 中,包括 5 种约束类型:primary key 约束、foreign key 约束、 unique 约束、check 约束和 default约束。四、数据查询1、查询语句:查询就是根据客户端的要求,数据库服务器搜寻出用户所需要的信息资料,并按用户规定的格式进行整理后返回给客户端。查询语句 select 在 SQL Server 中是使用频率最高的语句,可以说 select 语句是 SQL 语言的灵魂。select 语句的语法结构:select select_listinto new_t

8、ableFrom table_sourcewhere search_conditiongroup by group_by_expressionhaving search_conditionOrder by order_expressionasc|desc参数说明如下:Select子句:指定由查询结果返回的列。Into子句:将查询结果存储到新表或视图中。From子句:用于指定数据源,即使用的列所在的表或视图。如果对象不止一个,那么它们之间必用逗号分开。Where子句:指定用于限制返回的行的搜索条件。如果select语句没有where子句,dbms假设目标表中的所有行都满足搜索条件。Group b

9、y子句: 指定用来放置输出行的组 ,并且如果select子句select_list中包含聚合函数,则计算每组的汇总值。Having子句:指定组或聚合函数的搜索条件。Having通常与groupby子句一起使用。Order by子句: 指定结果集的排序方式 。ASC关键字表示升序排列结果,DESC关键字表示降序排列结果。如果没有指定任何一个关键字,那么ASC就是默认的关键字。如果没有orderby子句,DBMS将根据输入表中的数据的存放位置来显示数据。在这一系列的子句中,select子句和from子句是必需的,其他的子句根据需要都是可选的。2、简单查询:2 1、查询列:(1 )查询指定列:数据表

10、中有很多列,通常情况下并不需要查看全部的列,因为不同的用户所关注的内容不同。在指定列的查询中,列的显示顺序由 select 子句指定,与数据在表中的存储顺序无关;同时,在查询多列时,用“,”将各字段隔开。例 7-1、查询所有同学学号、姓名和成绩信息。Select stu_id,name,markfrom stu_info查询结果如下:(2 )查询所有列:使用“*”通配符,查询结果将列出表中所有列的值,而不必指明各列的列名,这在用户不清楚表中各列的列名时非常有用。服务器会按用户创建表格时声明列的顺序来显示所有的列。例 7-2、查询所有同学的所有信息。select*from stu_info查询结

11、果如下:(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(bi

12、rthday)as年龄from stu_info查询结果如下:(5 )除去结果的重复信息:使用 distinct 关键字能够从返回的结果数据集合中删除重复的行,使返回的结果更简洁。例 7-5、查询所有的院系信息。Select distinct sdeptfrom stu_info查询结果如下:(6 )返回查询的部分数据:在 SQL Server 2008 中,提供了 top 关键字让用户指定返回一定数量的数据。Top n 表示返回最前面的 n 行,n 表示返回的行数;top n percent 表示返回前面的 n%行。例 7-6、查询前 5 位同学的学号、姓名和成绩信息。Select top

13、5 stu_id,name,markfrom stu_info查询结果如下:例 7-7、查询 60%同学的学号、姓名和成绩信息。Select top 60 percent stu_id,name,markfrom stu_info查询结果如下:2 2、选择行:Where 子句用于指定查询条件,使得 select 语句的结果表中只包含那些满足查询条件的记录。在使用时,where 子句必须紧跟在 from 子句后面。Where 子句中的条件表达式包括算术表达式和逻辑表达式两种,SQL Server 对 Where 子句中的查询条件的数目没有限制。(1 )使用比较表达式:例 7-8、查询所有的男同学

14、学号、姓名、生日和性别信息。Select stu_id,name,birthday,sexfrom stu_infowhere sex=男查询结果如下:例 7-9、查询所有的总分大于 550 分的同学学号、姓名、生日和性别信息。Select stu_id,name,birthday,sexfrom stu_infowhere mark550查询结果如下:(2 )使用逻辑比较表达式:例 7-10、查询所有总分大于 550 的男同学信息。Select stu_id,name,birthday,sexfrom stu_infowhere mark550 and sex=男查询结果如下:例 7-11、

15、查询所有总分大于 550 分或男同学信息。Select stu_id,name,birthday,sexFrom stu_infoWhere mark550 or sex=男 查询结果如下:为了增强程序可读性,一般采用括号() 来实现需要的执行顺序,而不考虑其默认的优先级顺序。例 7-12、查询所有信息学院和会计学院并且总分大于 550 分的同学信息。select*from stu_infowhere (sdept=信息学院or sdept=会计学院)and mark550查询结果如下:(3 )空值(null)的判断:如果在创建数据表时没有指定 not null 约束,那么数据表中某些列的值就

16、可以为 null。所谓 null 就是空,在数据库中,其长度为 0。例 7-13、查询所有籍贯为空的同学信息。select*from stu_infowhere address is null查询结果如下:(4 )限定数据范围:使用 between 限制查询数据范围时同时包括了边界值,效果完全可以用含有“=”和“”和“=80Group by stu_id查询结果如下:(3 )分组筛选:如果使用 group by 子句分组,则还可用 having 子句对分组后的结果进行过滤筛选。Having 子句通常与group by 子句一起使用,用于指定组或合计的搜索条件,其作用与 where 子句相似,二

17、者的区别如下:作用对象不同:where 子句作用于表和视图中的行,而 having 子句作用于形成的组。 Where 子句限制查找的行,having 子句限制查找的组。执行顺序不同。若查询句中同时有 where 子句和having 子句 ,执行时,先去掉不满足 where 条件的行,然后分组,分组后再去掉不满足 having 条件的组。Where 子句中不能直接使用聚合函数,但 having 子句的条件中可以包含聚合函数。例 7-27、统计学生成绩表中每个同学的最高分、最低分、平均分和总分,并输出平均分大于 87 分的信息。Select stu_id,MAX(grade),MIN(grade)

18、,AVG(grade),SUM(grade)From stu_gradeGroup by stu_idHaving AVG(grade)87查询结果如下:(4 )明细汇总:使用 group by 子句对查询数据进行分组汇总,为每一组产生一个汇总结果,每个组只返回一行,无法看到详细信息。使用 compute 和 compute by 子句既能够看到统计经营部的结果又能够浏览详细数据。例 7-28、使用 compute 子句对所有学生的人数进行明细汇总。select*from stu_infocompute count(stu_id)查询结果如下:在使用 compute 和 compute by

19、时,需要注意以下几点:Computeby子句不能与 select into 子句一起使用。Compute 子句中的列必须在 select 子句的字段列表中出现。Compute by 表示按指定的列进行明细汇总,使用 by关键字时必须同时使用 order by 子句,并且 compute by 中出现的列必须具有与 order by 后出现的列相同的顺序,且不能跳过其中的列。例 7-29、使用 compute by 子句按照院系对所有学生的人数进行明细汇总。select*from stu_infoorder by sdeptcompute count(stu_id)by sdept查询结果如下:

20、3、 连接查询:前面介绍的查询都是针对单一的表,而在数据通库管理系统中,考虑到数据的冗余度低、数据一致性等问题,通常对数据表的设计要满足范式的要求,因此也会造成一个实体的所有信息保存在多个表中。当检索数据时,往往在一个表中不能够得到想要的信息,通过连接操作,可以查询出存放在多个表中同一实体的不同信息,给用户带来很大的灵活性。多表连接实际上就是实现如何使用一个表中的数据来选择另一个表中的行。而连接条件则主要通过以下方法定义两个表在查询中的关联方式:指定每个表中要用于连接的列。典型的连接条件在一个表中的指定外键,在另一个表中指定与其关联的键。指定比较各列的值时要使用的比较运算符(=、等)。表的连接

21、的实现可以通过两种方法:利用 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,markFrom stu_info,stu_gradeWhere stu_info.stu_id=stu_grade.stu_id and course_id=701查询结果如下:例 7-31、查询所有选修课程的同学选修课程的

22、成绩。Select stu_info.stu_id,name,course_name,gradeFrom stu_info,stu_grade,course_infoWhere stu_info.stu_id=stu_grade.stu_id andcourse_info.course_id=stu_grade.course_id查询结果如下:有时表名比较烦琐,使用起来很麻烦,为了程序的简洁明了,在 SQL 中,也可以通过 AS 关键字为表定义别名。例 7-32、查询所有同学所有课程的成绩。Select A.stu_id,name,course_name,markFrom stu_info as A,stu_grade as B,course_info as C

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报