MSSQL之二 Sql Server中管理库与表

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
日志服务 SLS,月写入数据量 50GB 1个月
简介: MSSQL之二 Sql Server中管理库与表

作为数据库开发人员,你负责创建和管理数据库和表。当创建表的时候,维护数据的完整性对你是很重要的。为确保表中的数据是准确的,一致的和可靠的,SQL Server提供了各种你可以应用到表上以增强数据完整性的检查。

SQL Server包含各种系统数据库。本章介绍不同类型的系统数据库并且解释如何管理用户定义的数据库和管理用户自定义表。

 

重点

Ø      管理数库

Ø      管理表

Ø      SQL Server 2008中的数据类型

 

 

预习功课

Ø        创建数据库

Ø        修改数据库

Ø        删除数据库

Ø        创建表

Ø        修改表

Ø        删除表

 

识别SQL Server 2008中识别系统数据库

 

SQL Server 2008有4个系统数据库,它们分别为Master、Model、Msdb、Tempdb。


(1)Master数据库是SQL Server系统最重要的数据库,它记录了SQL Server系统的所有系统信息。这些系统信息包括所有的登录信息、系统设置信息、SQL Server的初始化信息和其他系统数据库及用户数据库的相关信息。因此,如果master 数据库不可用,则 SQL Server 无法启动。在 SQL Server 2008 中,系统对象不再存储在 master 数据库中,而是存储在Resource 数据库中。


(2)model 数据库为在 SQL Server 实例上创建的所有数据库的提供模板。因为每次启动 SQLServer 时都会创建 tempdb,所以 model 数据库必须始终存在于 SQL Server 系统中。当发出 CREATE DATABASE(创建数据库)语句时,将通过复制 model 数据库中的内容来创建数据库的第一部分,然后用空页填充新数据库的剩余部分。 如果修改 model 数据库,之后创建的所有数据库都将继承这些修改。例如,可以设置权限或数据库选项或者添加对象,例如,表、函数或存储过程。


(3)Msdb数据库是代理服务数据库,为其报警、任务调度和记录操作员的操作提供存储空间。


(4)Tempdb是一个临时数据库,它为所有的临时表、临时存储过程及其他临时操作提供存储空间。Tempdb数据库由整个系统的所有数据库使用,不管用户使用哪个数据库,他们所建立的所有临时表和存储过程都存储在tempdb上。SQL Server每次启动时,tempdb数据库被重新建立。当用户与SQL Server断开连接时,其临时表和存储过程自动被删除。

 

数据库中的存储结构

数据库的存储结构分为逻辑存储结构和物理存储结构两种。

1、数据库的逻辑存储结构指的是数据库是由哪些性质的信息所组成,SQL Server的数据库不仅仅只是数据的存储,所有与数据处理操作相关的信息都存储在数据库中。实际上,SQL Server的数据库是由诸如表、视图、索引等各种不同的数据库对象所组成,它们分别用来存储特定信息并支持特定功能,构成数据库的逻辑存储结构。


2、数据库的物理存储结构则是讨论数据库文件是如何在磁盘上存储的。数据库在磁盘上是以文件为单位存储的,由数据库文件和事务日志文件组成,一个数据库至少应该包含一个数据文件和一个事务日志文件,可以有多个第二数据文件。实际上这句话可以这样理解:“数据库中有且仅有一个主数据文件,至少有一个事物日志文件(也就是说可以有多个但必须有),可以有多个第二数据文件(可以没有)”那么什么是“主数据库文件”“第二数据文件”“事物日志文件呢”

 

数据库中文件与文件组

 

数据文件又可以分成主数据文件和次数据文件两种形式。

1. 主数据库文件(Primary Database File)


主数据文件是数据库的起点,每一个数据库都有且仅有一个主数据文件。主数据文件名称的默认后缀是mdf。次数据文件是可选的,它们可以存储不在主数据文件中的全部数据和对象。


2. 第二数据库文件(Secondary Database File)


第二数据库文件又称之为次数据库文件,数据库既可能没有次数据文件,也可能有多个次数据文件。次数据文件名称的默认后缀是ndf。



3. 事务日志文件


事务就是一个单元的工作,该单元的工作要么全部完成,要么全部不完成。Microsoft SQL Server系统具有事务功能,可以保证数据库操作的一致性和完整性。


Microsoft SQLServer系统使用数据库的事务日志来实现事务的功能。事务日志记录了对数据库的所有修改操作。日志记录了每一个事务的开始、对数据的改变和取消修改等操作的足够信息。随着对数据库的操作,日志是连续增加的。对于一些大型操作,如创建索引,日志只是记录该操作的事实,而不是记录所发生的数据。事务日志还记录了数据页的分配和释放,以及每一个事务的提交和滚回。这样就允许SQL Server系统要么恢复事务,要么取消事务。事务日志以操作系统文件的形式存在,在数据库中被称为日志文件。


每一个数据库都至少有一个日志文件。日志文件名称的后缀默认是ldf


4. 文件组


为了便于分配和管理,SQL Server允许将多个文件归纳为同一组,并赋予这个组一个名称,这就是文件组。


文件组就是文件的逻辑集合。为了方便数据的管理和分配,文件组可以把一些指定的文件组合在一起。例如,在某个数据库中,3个文件(data1.ndf、data2.ndf和data3.ndf)分别创建在3个不同的磁盘驱动器中,然后为它们指定一个文件组fgroup1。以后,所创建的表可以明确指定放在文件组fgroup1上。对该表中数据的查询将分布在这3个磁盘上,因此,可以通过执行并行访问而提高查询性能。


在创建表时,不能指定将表放在某个文件上,只能指定将表放在某个文件组上。因此,如果希望将某个表放在特定的文件上,那么必须通过创建文件组来实现。

 

 

定义数据库

定义数据库就是从无到有地创建数据库和设置数据库选项。

这个部分从三个方面讲述定义数据库,即创建数据库、设置数据库选项和查看数据库信息。


创建数据库就是确定数据库名称、文件名称、数据文件大小、数据库的字符集、是否自动增长以及如何自动增长等信息的过程。


在一个Microsoft SQL Server实例中,最多可以创建32767个数据库。数据库的名称必须满足系统的标识符规则。在命名数据库时,一定要使数据库名称简短和具有一定的含义。

 

 

 

数据库创建之后,根据需要可以使用ALTER DATABASE语句对数据库进行修改。修改操作可以包括更改数据库名称、扩大数据库、收缩数据库、修改数据库文件、管理数据库文件组、修改字符排列规则等。

Ø       修改数据库名字

【例2-4】将LCBCom数据库的名称更改为LGCom

 

 

Ø       扩大数据库

在Microsoft SQLServer系统中,如果数据库的数据量不断膨胀,可以根据需要扩大数据库的尺寸。

有3种扩大数据库的方式。第一种方式是设置数据库为自动增长方式,可以在创建数据库时设置。第二种方式是直接修改数据库的数据文件或日志文件的大小,第三种方式是在数据库中增加新的次要数据文件或日志文件。

【例2-5】通过扩大文件来扩大LGCom数据库

 

 

Ø       修改数据库文件

用户可以根据需要使用ALTER DATABASE语句修改数据库中指定的文件。这些修改操作包括增加数据文件、在指定的文件组中增加指定文件、增加日志文件、删除指定的文件等。

增加数据文件、修改指定的文件等操作已经讲过了,下面通过一些示例讲述有关数据库文件的其他操作。

【例2-6】在指定的文件组中增加文件

 

 

Ø       管理文件组

文件组是数据库数据文件的逻辑组合,它可以对数据文件进行管理和分配,以便提高数据库文件的并发使用效率。

Transact-SQL语言没有提供独立的管理文件组的命令,只能通过ALTER DATABASE语句提供了管理文件组的命令。

 

管理数据库中的表

设计数据库实际上就是设计数据库中的表。在设计数据库中的表时,目标是使用尽可能少的表数量、每个表中包含尽可能少的列数量来达到设计要求。合理的表结构,可以大大提高整个数据库数据查询效率。


Ø       创建表和修改表


本节主要围绕创建和修改表展开讨论。


内容包括创建表、增加和删除列、修改列的属性、设置标识符列、查看表的信息、删除表等。


在Microsoft SQLServer 2008系统中,既可以使用CREATE TABLE语句创建表,也可以使用可视化的SQL Server Management Studio图形工具。下面主要研究如何使用CREATE TABLE语句创建表。CREATE TABLE语句是一种经常使用的创建表的方法,也是一种最灵活、最强大的创建表的方式。


【例2-7】使用CREATE TABLE语句创建students表  

 

【例2-8】使用CREATE TABLE语句创建orders表

 

 

表创建之后,用户可以根据需要使用ALTER TABLE语句修改表的结构。在表中增加新列、删除已有的列是常见的修改表结构的操作。


当用户向表中添加一个新列时,Microsoft SQLServer为表中该列在已有数据的每一行中的相应位置插入一个数据值。


因此,当向表中增加一个新列时,最好为该新列定义一个默认约束,使该列有一个默认值。如果该新列没有默认约束,并且表中已经有了其他数据,那么必须指定该新列允许空值,否则系统将产生一个错误信息。


【例2-10】使用ALTER TABLE语句增加表中的列

 

 

 

使用ALTER TABLE语句除了可以增加新列和删除列之外,还可以对列的属性进行更改。本节主要讲述如何更改列的数据类型。使用ALTER TABLE语句更改列的数据类型的基本语法形式如下所示:


ALTER TABLEtable_name ALTER COLUMN column_name new_type_name


在上面的语法中,table_name参数指定将要更改的表名称,ALTER COLUMN子句用于指定将要更改的列名称和新的数据类型名称,column_name参数指定列名称,new_type_name参数指定新的数据类型名称


【例2-12】使用ALTER TABLE语句更改列的数据类型


 

 

标识符列表示唯一地标识表中的每一行数据的符号。

在Microsoft SQL Server 2008系统中,可以创建两种类型的标识符列,即IDENTITY列和ROWGUIDCOL列。


下面,详细研究这两种标识符列的创建和修改方式。


使用IDENTITY属性的列是IDENTITY列,每一个表中最多只能有一个IDENTITY列。


定义IDENTITY属性时需要指定两个值:种子值和增量值。这样,表中第一行的IDENTITY列的值是种子值,其他行的IDENTITY列的值是在前一行值的基础上增加一个增量值得到的。


【例2-13】使用IDENTITY属性


 

 

 

IDENTITY属性的作用范围是表。也就是说,在一个指定的表中,IDENTITY属性列的值不会有重复值。但是,不同的表之间是有可能存在IDENTITY属性列的值相同的现象。在执行合并多个表的复制操作中,这种现象是必须避免的。Microsoft SQL Server系统提供的用于标识符列的ROWGUIDCOL属性可以解决这种问题。ROWGUIDCOL列是全局唯一标识符列。每一个表中最多可以创建一个ROWGUIDCOL列。


【例2-14】使用ROWGUIDCOL列

 

 

Ø       删除表

删除表就是将表中数据和表的结构从数据库中永久性地去除。表被删除之后,就不能再恢复该表的定义。


删除表可以使用DROPTABLE语句来完成,该语句的语法形式如下:


DROPTABLE table_name


不能使用DROPTABLE语句删除正在被其他表中的外键约束参考的表。当需要删除这种有外键约束参考的表时,必须首先删除外键约束,然后才能删除该表。表的所有者可以删除自己的表。当删除表时,绑定在该表上的规则和默认将失掉绑定。属于该表的约束或触发器则自动地被删除。如果重新创建表时,必须重新绑定相应的规则和默认、重新创建触发器和增加必要的约束。

 

实践问题

1、拥有什么权限的用户能够使用 DROPDATABASE 命令删除数据库

2、用什么样的命令能够修改数据库的名字、大小。

3、用命令创建一个数据表

4、用命令修改一个数据表

5、怎样删除一个表

 

小结

1、SQL SERVER中自带的数据库Master数据库记录所有服务器特定的配置信息,包括认证用户、数据库、系统配置设置和远程服务器


  Tempdb 数据库保存所有临时表和存储过程的临时数据库。


  Model数据库是作为新数据库的模版或原型


  Msdb数据库支持SQL Server代理,SQLServer代理包括计划SQL Server的周期性活动的特征


2、Create Database 语句被用于创建数据库,他也包含确定数据库的名称、数据库的大小和在数据中用于存储数据的文件。


3、Drop Database语句被用于删除数据库。


4、Create Table语句被用于创建表。


5、Alter Tabel 语句用于修改表


6、Drop Table 语句用于删除表


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
1月前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
54 4
|
2月前
|
SQL 关系型数据库 Shell
SQL整库导出语录及其实用技巧与方法
在数据库管理和备份恢复过程中,整库导出是一项至关重要的任务
|
2月前
|
SQL Oracle 关系型数据库
SQL整库导出语录:全面解析与高效执行策略
在数据库管理和维护过程中,整库导出是一项常见的需求,无论是为了备份、迁移还是数据分析,掌握如何高效、准确地导出整个数据库至关重要
|
2月前
|
SQL 存储 关系型数据库
SQL文件导入MySQL数据库的详细指南
数据库中的数据转移是一项常规任务,无论是在数据迁移过程中,还是在数据备份、还原场景中,导入导出SQL文件显得尤为重要。特别是在使用MySQL数据库时,如何将SQL文件导入数据库是一项基本技能。本文将详细介绍如何将SQL文件导入MySQL数据库,并提供一个清晰、完整的步骤指南。这篇文章的内容字数大约在
342 1
|
2月前
|
SQL 存储 数据库
使用SQL_语句创建,使用,删除第一个数据库
使用SQL_语句创建,使用,删除第一个数据库
11 0
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
4月前
|
Linux 数据库 数据安全/隐私保护
|
5月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
134 13
|
5月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
5月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
69 6
下一篇
DataWorks