MSSQL之二 Sql Server中管理库与表

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 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
目录
相关文章
|
17天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
52 10
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改
|
27天前
|
SQL
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
启动mysq异常The server quit without updating PID file [FAILED]sql/data/***.pi根本解决方案
18 0
|
17天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
88 6
|
4天前
|
SQL 数据管理 关系型数据库
如何在 Windows 上安装 SQL Server,保姆级教程来了!
在Windows上安装SQL Server的详细步骤包括:从官方下载安装程序(如Developer版),选择自定义安装,指定安装位置(非C盘),接受许可条款,选中Microsoft更新,忽略警告,取消“适用于SQL Server的Azure”选项,仅勾选必要功能(不包括Analysis Services)并更改实例目录至非C盘,选择默认实例和Windows身份验证模式,添加当前用户,最后点击安装并等待完成。安装成功后关闭窗口。后续文章将介绍SSMS的安装。
7 0
|
5天前
|
SQL XML 数据库
sql导入数据库命令
在SQL Server中,数据库导入可通过多种方式实现:1) 使用SSMS的“导入数据”向导从各种源(如Excel、CSV)导入;2) BULK INSERT语句适用于导入文本文件;3) bcp命令行工具进行批量数据交换;4) OPENROWSET函数直接从外部数据源(如Excel)插入数据。在操作前,请记得备份数据库,并可能需对数据进行预处理以符合SQL Server要求。注意不同方法可能依版本和配置而异。
|
10天前
|
SQL 安全 Go
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
在Python Web开发中,确保应用安全至关重要,主要防范SQL注入、XSS和CSRF攻击。措施包括:使用参数化查询或ORM防止SQL注入;过滤与转义用户输入抵御XSS;添加CSRF令牌抵挡CSRF;启用HTTPS保障数据传输安全;实现强身份验证和授权系统;智能处理错误信息;定期更新及审计以修复漏洞;严格输入验证;并培训开发者提升安全意识。持续关注和改进是保证安全的关键。
17 0
|
12天前
|
SQL 安全 网络安全
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
27 0
|
17天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
21天前
|
SQL 数据安全/隐私保护
SQL Server 2016安装教程
SQL Server 2016安装教程
21 1