第三章:SQL Server2019数据库 之 开启 SQL 语言之旅

第三章:SQL Server2019数据库 之 开启 SQL 语言之旅
强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

学前必备知识

  1. 第一章:SQL Server 数据库环境搭建与使用
  2. 第二章:SQL Server2019 数据库的基本使用之图形化界面操作

学习重点

  1. 了解 SQL 语言相关的概念。
  2. 能够使用 SQL 语句对数据库、数据表进行管理。

一、SQL 语言概述

1. 数据库基本概念

要想清楚数据库的概念,首先必须了解与数据库技术密切相关的 4 个基本概念,即数据、数据库、数据库管理系统和数据库系统。

  • 数据(Data):描述事物的符号记录。
  • 数据库(Database,简称 DB):可以简单地理解为存放数据的仓库,所有的数据在计算机存储设备上按照一定的格式进行保存。
  • 数据库管理系统(DataBase Management System,简称 DBMS):科学地组织和存储数据,高效地获取和维护数据。
  • 数据库系统(Database System,简称 DBS):在计算机系统中引入数据库后的系统。

1. 数据

数据是描述事物的符号记录,是数据库中存储的基本对象。除了基本的数字之外,像电影的名称、价格、主演等都可以称为数据。但是,数据的表现形式不能完全表达其内容,需要经过解释。例如,30 代表一个数字,可以表示某个人的年龄,也可以表示某个人的编号,或者是一个班级的人数,所以数据的解释是指对数据含义的说明,数据的含义称为数据的定义,数据与其定义是不可分的。

例如,在日常生活中,可以这样描述一部电影的信息:你好,李焕英是在春节期间上映的一部奇幻喜剧电影,导演是贾玲,定价是 19.9 元,上映时间是 2021 年 2 月 12 日。该信息在计算机中就可以使用下面的方式来描述:(你好,李焕英,贾玲,19.9,2021-2-12) 也就是将信息按照(电影名称,导演,价格,上映日期) 的方式组织在一起,组成一条记录。该记录就是描述电影的数据,按照此种结构记录的数据,可以方便用户进行管理。而在数据库中,所有的数据都被保存在数据表中,数据表通过行来表示一条完整的记录,通过列来表示每一条记录的组成,如图所示。
在这里插入图片描述
通过上图可以发现,在数据库中,所有的数据都是通过数据表进行保存的,表中的一行表示一条完整的数据记录,通过不同的字段表示出每列记录的作用。上图所示的数据表保存的只是一些基本的数据,可以发现表中的信息有如下几种数据类型:

  • 整型数据:goods_id、cat_id。
  • 字符串数据:goods_name。
  • 小数数据:shop_price、cost_price。
  • 日期数据:crawl_date(只截图了一部分)。

而数据表中可以保存的数据类型除了以上几种以外,还可以保存视频、音频等数据,这些数据在数据库中可以使用多种运算符进行操作,如四则运算、交、差、并、补等操作。

2. 数据库

当人们收集完成大量的信息后,就需要应用数据库将这些信息保存,以供进一步加工处理(例如,统计销售量、总额等),这样可以避免手工处理数据所带来的困难与失误。而且严格来讲,数据库是长期存储在计算机内的有组织、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享,所以数据库具有永久存储、有组织和可共享的 3 个基本特点。

3. 数据库管理系统

数据库管理系统是介于用户与操作系统之间的一款数据管理软件。比较常见的数据库管理系统有 SQL Server、Oracle、MySQL、Access、SQLite 等,本系列博文主要介绍 SQL Server 数据库。数据库管理系统和操作系统一样是计算机的基础软件,也是一个大型复杂的软件系统,主要功能包括以下几个方面:

  1. 数据操作功能。DBMS 提供了数据操作语言(Data Manipulation Language,DML),用户可以使用 DML 操作数据,实现对数据库的基本操作,如增加、修改、删除和查询数据等。
  2. 数据库的事务管理和运行管理。数据库在建立、运行和维护时由数据库管理系统统一管理和控制,以保证数据的安全性、完整性及多用户对数据的并发使用,确保发生故障后系统快速恢复。
  3. 数据定义功能。DBMS 提供数据定义语言(Data Definition Language,DDL),用户可以通过 DDL 方便地定义数据库中的各个操作对象,如数据表、视图、序列等。
  4. 数据组织、存储和管理。DBMS 要分类组织、存储和管理各种数据,包括数据字典、用户数据、数据的存储路径等。要确定以何种文件结构和存储方式在存储级上组织这些数据,如何实现数据之间的联系。数据组织和存储的基本目标是提高存储空间利用率和方便存取,提供多种存储方法(如索引)来提高存取效率。
  5. 数据库的建立和维护功能。数据库初始数据的输入、转换功能,数据库的转换、恢复功能,数据库的重组织功能和性能监视、分析功能等。
  6. 其他功能。DBMS 与网络中其他软件系统的通信功能,不同的 DBMS 或文件系统的数据转换功能,异构数据库之间的互访和互操作功能等。

4. 数据库系统

数据库系统一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员(负责数据库的建立、使用、维护)构成。一般在不引起混淆的情况下,常常把数据库系统简称为数据库。

2. SQL 概述

SQL (全称为 Structured Query Language,译为结构化查询语言) 是数据库的标准语言。SQL 语言是用于数据库查询的结构化语言,最早由 Boyce 和 Chambedin 在 1974 年提出,称为 SEQUEL 语言。1976 年,IBM 公司的 San Jose 研究所在研制关系数据库管理系统 System R 时将其修改为 SEQUEL 2,即目前的 SQL 语言。1976 年,SQL 开始在商品化关系数据库管理系统中应用。1986 年,美国国家标准局 ISO 将其采纳为国际标准。之后每隔几年就会发布新的 SQL 版本,各历史版本如图所示。
在这里插入图片描述
SQL 语言的功能包括数据查询、数据操纵、数据定义和数据控制四个部分。SQL 语言简洁、方便、实用,为完成其核心功能只用了 6 个动词:SELECT、CREATE、INSERT、UPDATE、DELETE和 GRANT(REVOKE)。作为数据库的标准语言,它已被众多商用数据库管理系统产品所采用,成为应用最广的数据库语言。目前,有许多数据库管理系统支持 SQL 语言,如 SQL Server、Access、Oracle、MySQL、DB2 等。

不过,不同的数据库管理系统在其实践过程中都对 SQL 规范做了某些编改和扩充。所以,实际上不同数据库管理系统之间的 SQL 语言不能完全相互通用。例如,甲骨文公司的 Oracle 数据库所使用的 SQL 语言是 Procedural Language/SQL(简称 PL/SQL),而微软公司的 SQL Server 数据库系统支持的是 Transact-SQL(简称T-SQL)。

3. SQL 语言的组成

SQL 语言是具有强大查询功能的数据库语言。除此以外,SQL 语言还可以控制 DBMS 为其用户提供的所有功能,功能如下:

  • 数据定义语言(Data Definition Language,简称 DDL):SQL 语言允许用户定义存储数据的结构和组织,以及存储数据项之间的关系。
  • 数据检索语言:SQL 允许用户或应用程序从数据库中检索存储的数据并使用。
  • 数据操纵语言(Data Manipulation Language,简称 DML):SQL 语言允许用户或应用程序通过添加新数据、删除旧数据和修改以前存储的数据对数据库进行更新。
  • 数据控制语言(Data Control Language,简称 DCL):可以使用 SQL 语言来限制用户检索、添加和修改数据的能力,保护存储的数据不被未授权的用户所访问。
  • 数据共享:可以使用 SQL 来协调多个并发用户共享数据,确保他们不会相互干扰。
  • 数据完整性:SQL 语言在数据库中定义完整性约束条件,使它不会因不一致的更新或系统失败而遭到破坏。

因此,SQL 语言是一种综合性语言,用来控制数据库并与数据库管理系统进行交互。SQL 语言是数据库子语言,包含大约 40 条专用于数据库管理任务的语句。各类的 SQL 语句分别如下表所示。数据操作类 SQL 语句如下表所示。

语 句 功 能
SELECT 从数据表中检索数据行和列
INSERT 把新的数据记录添加到数据库中
DELETE 从数据库中删除数据记录
UPDATE 修改现有的数据库中的数据

数据定义类 SQL 语句如下表所示:

语 句 功 能
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 从数据库中删除一个域

数据控制类 SQL 语句如下表所示:

语句 功能
GRANT 授予用户权限
RENY 拒绝用户访问
REVOKE 删除用户访问权限

事务控制类 SQL 语句如下表所示:

语句 功能
COMMIT 结束当前事务,并提交
ROLLBACK 回滚事务
SET TRANSACTION 定义当前事务数据访问特征

程序化 SQL 语句如下表所示:

语句 功能
DECLARE 定义查询游标
EXPLAN 描述查询数据访问计划
OPEN 检索查询结果打开一个游标
FETCH 检索一条查询结果记录
CLOSE 关闭游标
PREPARE 为动态执行准备 SQL 语句
EXECUTE 动态执行 SQL 语句
DESCRIBE 描述准备好的查询

4. SQL 语句结构

每条 SQL 语句均由一个谓词 (Verb) 开始,该谓词描述这条语句要产生的动作,例如 SELECT 或 UPDATE 关键字。谓词后紧接着一条或多条子句(Clause),子句中给出了被谓词作用的数据或提供谓词动作的详细信息。

每个查询语句都要有 SELECT 关键字和 FROM 关键字。下面以查询语句为例,讲解 SELECT 语句的结构。语法如下:

SELECT 子句
[INTO 子句]
FROM 
[WHERE 子句]
[GROUP BY 子句]
[HAVING 子句]
[ORDER BY 子句]

示例01:使用 SELECT 关键字查询 goods 商品信息表 并且使用 ORDER BY 关键字按照 goods_id(商品编号) 降序排列来显示该表中的商品信息。

/* 使用SELECT关键字查询goods商品信息表,并且使用ORDER BY 关键字按照商品编号降序 排列该表中的相关信息 */
SELECT * FROM goods ORDER BY goods_id DESC;

输出如下图所示:
在这里插入图片描述
通过上面的学习,用户对数据库的基本概念应该有一个简要的了解,了解 SQL 语言的概念、语言组成和语句构成,重点理解 SQL 语句的构成。掌握最基本的 SQL 语句形式:SELECT…FROM。

二、数据库管理

用户在使用 CREATE DATABASE 命令创建数据库时,除了指定数据库名称外,可以不用设定任何参数,所有参数均取默认值。所以新创建的数据库是由 Model 模板数据库复制过来的,其文件大小与 Model 中的设置完全相同。所创建的数据文件和日志均存放在 SQL Server 数据库安装路径下。例如:使用 CREATE DATABASE 命令创建一个名称为 STU 的数据库。SQL 代码如下:

CREATE DATABASE STU;

注意:在创建数据库时,所要创建的数据库名称必须是系统中不存在的,如果存在相同名称的数据库,在创建数据库时系统将会报错。如下图所示:
在这里插入图片描述
另外,数据库的名称也可以是中文名称。例如:使用 CREATE DATABASE 命令创建一个名称为 学生管理 的数据库。SQL 代码如下:

CREATE DATABASE 学生管理;

自定义选项创建数据库是比较常用的创建数据库的方法。创建的数据文件(后缀名为 .mdf) 存储于指定的磁盘目录下,如 C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA,而日志则存放在相同目录下的日志(后缀名为 .ldb) 中。

使用 CREATE DATABASE 命令创建名为 amo_data 的数据库其中,主数据文件名称是 amo_data.mdf,初始大小是 10MB,最大存储空间是 100MB,增长大小是 5MB。而日志文件名称是 amo_data.ldf,初始大小是 8MB,最大的存储空间是 50MB,增长大小是 8MB。输入:

CREATE DATABASE amo_data
ON -- 指明数据库文件和文件组的明确定义
(
name=amodat,
--filename: 指定文件在操作系统中存储的路径和文件名称。
filename='C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA\amo_data.mdf',
size=10,  --指定数据库的初始容量
maxsize=100, --指定文件最大容量
filegrowth=5) -- 指定每次文件增容时增加的容量大小。
log on
(name='amolog',
filename='C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA\amo_data.ldf',
size=8MB,
maxsize=50MB,
filegrowth=8MB);

输出:
在这里插入图片描述
为了便于管理用户创建的数据库,可以在创建数据库的同时指定文件和文件组。使用 CREATE DATABASE 命令创建一个名称为 amo 的数据库,在创建 amo 数据库时还建立两个文件组:primary 文件组和 amogroup 文件组。在 primary 文件组的文件列表中的第一个文件被默认为主文件,即 amo.mdf。用户还可以根据需要向各个文件组中添加多个文件,同时指定文件和文件组。输入:

CREATE DATABASE amo
ON -- 指明数据库文件和文件组的明确定义
  primary(
	name=amodat,
	--filename: 指定文件在操作系统中存储的路径和文件名称。
	filename='C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA\amo.mdf',
	size=5,  --指定数据库的初始容量
	maxsize=80, --指定文件最大容量
	filegrowth=5), -- 指定每次文件增容时增加的容量大小。
  filegroup amogroup
  (
    name=amox,
	filename='C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA\amo.ndf',
	size=10,
	maxsize=80,
	filegrowth=5
  )
  log on
  (name='amolog',
  filename='C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA\lovingamo.ldf',
  size=6MB,
  maxsize=30MB,
  filegrowth=6MB);

输出:
在这里插入图片描述
amo 数据库的文件组:
在这里插入图片描述
说明:.mdf 文件是数据库的主数据文件,一个数据库中只能有一个主数据文件;.ndf 为次数据文件,一个数据库中可以有多个次数据文件;.ldf 为数据库日志文件。

数据库创建完成后,常常需要根据用户环境进行调整,如对数据库的某些参数进行更改,这就需要使用修改数据库的命令。T-SQL 中修改数据库的命令为 ALTER DATABASE。

  1. 使用 ALTER DATABASE 命令向一个数据库中添加文件。

    ALTER DATABASE amo_data -- 使用AlTER DATABASE 命令修改数据库
      ADD FILE( --添加文件happy
        name=happy,
    	filename='C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA\happy.ndf',
    	size=2MB,
    	maxsize=30MB,
    	filegrowth=3MB
      );
    
  2. 使用 ALTER DATABASE 命令可以向数据库中添加文件组。命令:ALTER DATABASE amo_data ADD filegroup happy;

  3. 使用 ALTER DATABASE 命令可删除数据库中的文件或文件组。命令:ALTER DATABASE amo_data REMOVE file happy; 注意:使用 ALTER DATABASE…REMOVE 命令删除数据库中的文件组时,必须首先删除文件组中的所有文件,因为只有当文件组为空时才能被删除。

  4. 可以使用 ALTER DATABASE 命令修改数据库中数据文件的大小。

    -- 1.向数据库 amo_data 添加名为 joy 的文件,大小为 30M
    ALTER DATABASE amo_data -- 使用AlTER DATABASE 命令修改数据库
      ADD FILE( --添加文件joy
        name=joy,
    	filename='C:\Program Files\Microsoft SQL Server\MSSQL15.AMOXIANG\MSSQL\DATA\joy.ndf',
    	size=30MB
      );
    -- 2. 将数据库 amo_data 中的数据文件 joy 的大小修改为40MB
    ALTER DATABASE amo_data MODIFY file (name=joy,size=40MB);
    

    注意:为了防止文件中的信息被损坏,文件大小只能增加,不能减小。

  5. 使用 DBCC SHRINKDATABASE 命令缩小 amo_data 数据库的大小,使数据库 amo_data 中的文件有 10MB 的可用空间。命令:DBCC SHRINKDATABASE(amo_data, 10, NOTRUNCATE);

  6. 使用 DBCC SHRINKFILE 命令将 amo_data 数据库中的 amodat 文件缩小到 1MB。命令:DBCC SHRINKFILE(amodat, 1, NOTRUNCATE); 注意:在执行备份或恢复操作时,不能执行缩小数据库的操作。同样在执行缩小数据库的操作时,不能执行数据库的备份和恢复操作。

  7. 系统存储过程 sp_renamedb 可以修改数据库的名字。使用系统存储过程 sp_renamedb 将数据库名称 amo 更名为 amo_xiang,命令:Exec sp_renamedb ‘amo’,‘amo_xiang’;

DROP DATABASE 命令可以删除一个或多个数据库。当某一个数据库被删除后,这个数据库的所有对象和数据都将被删除,所有日志文件和数据文件也都将删除,所占用的空间将会释放给操作系统。注意:使用 DROP DATABASE 命令删除数据库时,系统中必须存在所要删除的数据库,否则系统将会出现错误。另外,如果删除正在使用的数据库,系统将会出现错误。如下图所示:
在这里插入图片描述

  1. 使用 DROP DATABASE 命令删除数据库名为 amo_data 的数据库。命令:DROP DATABASE amo_data;
  2. 使用 DROP DATABASE 命令将学生管理和 amo_xiang 这两个数据库批量删除。命令:DROP DATABASE amo_xiang, 学生管理;

三、数据表管理

关系数据库中最重要的是表,它以行和列所组成的二维表格形式来存储、显示和组织数据库中的所有数据信息。本小节从创建数据表、查看数据表、修改数据表和删除数据表四个方面来详细介绍如何对数据表进行管理。

1. 创建数据表

使用 CREATE TABLE 命令来创建数据表,语法格式如下:
在这里插入图片描述
说明:对于不同的 DBMS,CREATE TABLE 的语法可能有所不同。

1.1 创建数据表时指定列

表必须有一个或多个列,指定一个列必须指定列名和相应的数据类型。一个表中的每个字段必须有一个唯一的名字,但是这些名字可以与其他表中的字段名相同。在 amo_data 数据库中,使用 CREATE TABLE 命令创建一个名称为 teacher 的数据表,并且给数据表指定列,列的名称分别为教师编号、教师姓名、教师年龄和所教课程。输入:

USE amo_data  -- 使用amo_data数据库
CREATE TABLE teacher( -- 创建teacher信息表
	教师编号 int,
	教师姓名 varchar(10),
	教师年龄 int,
	所教课程 varchar(30),
);  

注意:创建数据表时如果指定的列的数据类型是字符型时,应指定大小,因为默认大小是 1 个字节。

1.2 创建数据表时指定主键约束

每一个列可以有一个或多个约束,其约束一般如下:

  1. PRIMARY KEY:约束所有的列值必须是唯一的,且列不能包含 NULL 值,即主键。主键能够唯一地标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键和记录之间的关系如同身份证和人之间的关系,它们之间是一一对应的。
  2. UNIQUE:约束列中的所有值必须是不同的值;但 NULL 值是允许的。唯一约束可以确保一列或者几列不出现重复值。
  3. NOT NULL:约束列中不允许有 NULL 值。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。
  4. CHECK:约束列所输入的数据。例如:约束年龄列值不允许小于零。

在 amo_data 数据库中,使用 CREATE TABLE 命令创建一个名称 shopping 的数据表,其中使用 PRIMARY KEY 约束将商品编号字段设置为主键列。输入:

USE amo_data;  --切换数据库
CREATE TABLE shopping(
	商品编号 int primary key, --使用primary key将商品编号字段设置为主键列
	商品类别 varchar(10),
	商品数量 int,
	商品备注 text
);

1.3 创建数据表时指定列值不为 NULL 值

在创建数据表时,可以为特定的列值指定不为 NULL 值,这样在向表中插入数据的时候,此列必须不能为 NULL 值,否则会出现错误警告。

在 amo_data 数据库中,使用 CREATE TABLE 命令创建一个名称是 student 的数据表。其中指定学号和性别列设置不为 NULL;姓名列指定为 UNIQUE 约束;年龄列指定为 CHECK 约束(将年龄限制在10~20之间)。输入:

USE amo_data;  --切换数据库
CREATE TABLE student( --创建学生信息表student
	学号 varchar(8) not null,  --指定学号列不能为空
	姓名 varchar(10) unique, --定义了具有唯一值(unique)的姓名列
	--创建一个检验约束(check)检验年龄列的值是否在10-20之间
	年龄 int check(年龄>=10 and 年龄<=20),
	性别 char(2) not null -- 指定性别列不能为空
);

图形化界面查看表结构如下图所示:
在这里插入图片描述
1.4 创建数据表时为列指定一个默认值

在创建数据表时,可以为列指定一个默认值。向表中输入数据时,如果不指定该列的值,则该列使用默认值。

在 amo_data 数据库中,创建一个名称为 member 的数据表,为会员性别列指定了默认值,将默认值设置为男。输入:

USE amo_data;  --切换数据库
CREATE TABLE member( --创建会员信息表member
	会员编号 int,
	会员名称 varchar(20),
	/*为会员性别列指定了默认值,将默认值设置为男*/
	会员性别 char(2) default '男',
	会员年龄 int,
	备注 text
);

2. 查看数据表

创建表格以后,服务器在系统表 sysobjects 中记录表格名称、对象 ID、表格类型、表格创建时间和拥有者 ID 等信息。同时在表 syscolumns 中记录列名、列 ID、列的数据类型以及列长度与列相关的信息。

2.1 查看数据表的信息

可以通过系统存储过程 sp_help 来查看系统表中与表和表中数据列有关的信息。语法如下:

sp_help table_name -- table_name为数据表的名称

通过系统存储过程 sp_help 来查看学生信息表 student 中的信息。输入:

--通过系统存储过程sp_help来查看student表中的信息
Exec sp_help student;  

输出如下图所示:
在这里插入图片描述
2.2 查看数据表的行数和存储空间

使用系统存储过程 sp_spaceused 可以查看数据的行数以及表格所用的存储空间的信息。语法格式如下:

sp_spaceused TABLE_NAME  -- TABLE_NAME 为数据表的名称

通过使用系统存储过程 sp_spaceused 来查看会员信息表 member 中的行数及表格所用的存储空间。输入:

Exec sp_spaceused member;

输出如下图所示:
在这里插入图片描述

3. 修改数据表

3.1 ALTER TABLE 命令的基本语法

当一个表使用了一段时间后,用户会发现原来的表需要添加列、约束等问题。使用 ALTER TABLE 命令就可以从多个方面修改数据表。ALTER TABLE命令从以下几个方面修改表。

  1. 添加列。
  2. 删除列。
  3. 添加主键。
  4. 更改主键。
  5. 添加约束。
  6. 删除约束。
  7. 修改列的默认值。

3.2 向数据表中添加列

用户通常使用 ALTER TABLE 命令把一个列添加到一个现有的表中,新列被添加到表结构的末尾。对已创建的学生信息表 student 使用 ALTER TABLE 命令把 专业 列添加到学生信息表中。输入:

ALTER TABLE student ADD 专业 varchar(10);

3.3 修改列的数据类型和大小

在一个现有的表的列中,可以改变列的数据类型,还可以改变列的大小。示在学生信息表 student 中,将学号字段的 varchar(8) 数据类型修改为 varchar(10),即由原来的8个字节改到10个字节。输入:

ALTER TABLE student ALTER COLUMN 学号 varchar(10) NOT NULL;

3.4 向表中添加主键

使用 ALTER TABLE…ADD 命令可以向数据表中添加主键。用 PRIMARY KEY 关键字定义的列实现所有该列的值必须唯一,并且不能为 NULL 值。在学生信息表 student 中,将学号字段添加为主键。输入:

ALTER TABLE student add PRIMARY KEY(学号);

注意:给现有的表添加主键时,现在的表原来不能有主键,因为一个表只能有一个主键,同时被定义为主键的列值不能为 NULL。

3.5 删除表中的约束

使用 ALTER TABLE…DROP 命令能够删除列约束,包括主键约束、检验约束等。在购物信息表 shopping 中,删除商品编号上的约束。查找 shopping 表中的约束名称。输入:

SELECT * FROM sysobjects 
WHERE parent_obj IN(
SELECT id FROM sysobjects
WHERE name='shopping');

输出结果如下图所示:
在这里插入图片描述
得到约束名为:PK__shopping__996B24E2DCD7DB22。然后通过 ALTER TABLE …DROP 命令删除约束。输入:

ALTER TABLE shopping
DROP CONSTRAINT PK__shopping__996B24E2DCD7DB22;

再通过系统表 sysobjects 查找约束,则发现结果中没有约束信息,说明约束已被删除。

3.6 数据表重命名

使用 ALTER TABLE 命令不能修改数据表的名称。如果要修改数据表名称,可以使用系统存储过程 sp_rename。使用 EXEC sp_rename 关键字将 student 数据表名称改成 stu。

EXEC sp_rename 'student','stu';

3.7 从已有的表中删除列

ALTER TABLE…DROP COLUMN 命令可以从已有的表中删除一个或多个不再需要的列。使用 ALTER TABLE…DROP COLUMN 命令从现有的学生信息表 stu 中,删除专业列。输入:

ALTER TABLE stu DROP COLUMN 专业;

4. 删除数据表

可以使用 DROP TABLE 命令删除一个数据表,删除表 member:

DROP TABLE member;

使用 DROP TABLE 命令删除数据表时,member 数据表必须存在,如果不存在,将会报错。如下图所示:
在这里插入图片描述
使用 DROP TABLE 命令同时删除 stu、teacher 和 shopping 这3个数据表。输入:

DROP TABLE stu,teacher,shopping;

总结:本节主要介绍了如何进行数据表管理,主要分为创建数据表、查看数据表、修改数据表和删除数据表4个方面。其中的重点为创建数据表和修改数据表,创建数据表主要用到的是 CREATE TABLE 命令,修改数据表主要用到的是 ALTER TABLE 命令,而删除数据表用到的是 DROP TABLE 命令。

本文来源Amo Xiang,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/7760

发表评论