数据库原理与应用(SQL Server)笔记 第一章 数据定义语言和数据操纵语言

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: 数据库原理与应用(SQL Server)笔记 第一章 数据定义语言和数据操纵语言

前言


本教程使用的是SQL Server 2008 R2,如嫌麻烦在网上找下载地址有需要的小伙伴可以直接私信我,我可以把压缩包以及安装教程直接发给你。(打开界面如下图)

本文章的篇幅很长,其中涉及的语句以及代码较多,建议最好有参考书做参考学习。

1666888283857.jpg


一、基本介绍


首先我们要知道所谓的T-SQL 即 Transact-SQL,是 SQL 在 Microsoft SQL Server 上的增强版,它是用来让应用程序与 SQL Server 沟通的主要语言。T-SQL 提供了标准 SQL 的 DDL 和 DML 功能,加上延伸的函数、系统预存程序以及程式设计结构(例如 IF 和 WHILE)让程式设计更有弹性。


在T-SQL中,语法规定不区分大小写,也就是代码不区分大小写。


另外我们要知道,使用SQL创建数据库和创建表有两种方式,分别是使用SSMS方式创建和使用T-SQL语句创建,这里我们推荐掌握使用T-SQL语句创建这种方式,但也要了解如何使用SSMS方式创建的一些基本操作,毕竟是图形化操作相较简单,使用SSMS方式创建数据库在很多网页以及参考书书上都能找到,这里就不再累述。所以我们以下的教程仅使用T-SQL语句来介绍T-SQL的一些操作并围绕语句来讲述。


二、在SQL里执行T-SQL语句


进入SQL后,首先我们创建一个数据库,右键“数据库”,点击“新建数据库”,设置好数据库的名称以及数据库文件的一些设置。

1666888314545.jpg

创建好后我们点击左上角的“新建查询”,这就是写T-SQL语句的地方。

1666888330304.jpg

这里可以选择在哪个数据库中进行新建查询。

1666888345625.jpg


三、数据定义语言(DDL)


(一)概述


数据定义语言用于对数据库和表进行创建、修改和删除,即DDL包括CREATE、ALTER、DROP等语句。


(二)数据定义语言用于数据库


1、创建数据库


(1)创建数据库的格式:

CREATE DATABASE <数据库名>
ON
(
  <数据库文件和文件组的属性>
)
LOG ON
(
  <日志文件属性>
)

(2)其中数据库文件和文件组的属性以及日志文件属性的格式如下:

{
  NAME=<逻辑名称>,
  FILENAME=<存储路径(物理名称)>,
  SIZE=<初始大小>,
  MAXSIZE=<最大容量>,
  FILEGROWTH=<增量[容量%]>,
}

(3)接下来我们通过一个例子来总结刚刚学的东西:


e.g.创建一个数据库名为MyStore,其中主数据文件为15MB,最大大小为100MB,按2MB增长;还有一个文件组名为mytest,包括文件test_0,文件初始大小为5MB,最大为20MB,按10%增长;另有一个日志文件,大小为2MB,最大大小为10MB,按5%增长。


在SQL Server查询分析器中输入以下语句:

CREATE DATABASE MyStore
ON
PRIMARY
(
  NAME='MyStore',
  FILENAME='C:\Users\myj\Desktop\MyStore.mdf',
  SIZE=15MB,
  MAXSIZE=20MB,
  FILEGROWTH=2MB
),
FILEGROUP mytest
(
  NAME='MyStore_test0',
  FILENAME='C:\Users\myj\Desktop\MyStore_test0.ndf',
  SIZE=5MB,
  MAXSIZE=20MB,
  FILEGROWTH=10%
)
LOG ON
(
  NAME='MyStore_log',
  FILENAME='C:\Users\myj\Desktop\MyStore_log.ldf',
  SIZE=2MB,
  MAXSIZE=10MB,
  FILEGROWTH=5%
)

分析:

点“执行”按钮后,下方显示完成,这时候我们可能在左边的对象资源管理器中并未看到刚刚创建的数据库,别着急,刷新一下管理器如果还没出现可能是因为版本的问题。这时我们退出保存好刚刚创建的库,此时桌面出现了我们创建的衍生文件,然后重新进入SQL Server,这时候就出来了MyStore我们所创建的数据库,创建完成。

1666888423363.jpg


2、修改数据库


(1)修改数据库的格式:

ALTER DATABASE <数据库名>
(
  <增加(ADD),删除(REMOVE),更改(MDOIFY)>
)

(2)其中增加,删除,更改的格式如下:

{
  ADD FILE <文件>[,...n][TO FILEGROUP 文件组],
  ADD LOG FILE <日志文件>[,...n],
  ADD FILEGROUP <文件组>,
  REMOVE FILE <文件>,
  REMOVE FILEGROUP <文件组>,
  MDOIFY FILE <文件>,
  MDOIFY NAME= <新数据库名>,
  MDOIFY FILEGROUP <文件组>,
}

(3)然后进行操作跟前面的一样,类似NAME、SIZE、FILEGROWTH等等。


e.g.我们来看一个例子,例如要在数据库Store0中,增加一个数据文件Store_data,大小为10MB,最大为50MB,按5MB增长。


在SQL Server查询分析器中输入以下语句:


ALTER DATABASE Store0
ADD FILE
(
  NAME=Store_data',
  FILENAME='C:\Users\myj\Desktop\Store_data.ndf',
  SIZE=10MB,
  MAXSIZE=50MB,
  FILEGROWTH=5MB
)

3、使用数据库


当我们要使用数据库时,我们调用USE语句,

语句格式如下:

USE <数据库名>


注:这里我们要注意,USE语句只用在第一次打开数据库时使用,后续操作都是作用于该数据库中。如果我们要另外使用其它数据库,则需重新使用USE语句来使用另一个数据库。具体USE语句的使用我们在之后的创建表中介绍到。


4、删除数据库


当我们不需要数据库时,调用DROP语句,

语句格式如下:

DROP DATABASE <数据库名>


5、查看数据库


当我们要查看一个所创建的数据库时,调用系统存储过程SP_HELPDP即可查看数据库信息,语句格式如下:

SP_HELPDP <数据库名>


例如我们查看“1.创建数据库(3)”例子当中的数据库MyStore,点击新建查询,输入框输入SP_HELPDP MyStore,即可查到该数据库的相关信息:

1666888517620.jpg


(三)数据定义语言用于表


1、创建数据表


(1)使用CREATE TABLE 语句创建数据表

①创建数据库的格式:

CREATE TABLE <数据表名>
(
  <列定义>
)

②其中列定义的格式如下:

{
  列名 数据类型 NULL/NOT NULL (AS 计算字段的字段值表达式)[,...n]<表约束> 
}

③现在我们通过一个简单的例子来总结刚刚所讲到的:


e.g.下图给出一个表,使用sql语句创建该数据表:

1666888557286.jpg

在SQL Server查询分析器中输入以下语句:

CREATE TABLE OrderDetail(
  OrderID int NOT NULL,
  ProductID char(6) NOT NULL,
  Quantity int NULL,
  PRIMARY KEY(OrderID,ProductID)
)

(2)使用CREATE TABLE 语句创建临时数据表和全局临时表

①临时表的创建在CREATE TABLE语句后面加上#savg ,即表示创建了一个稳定临时表,此表只能由创建者使用。

格式如下:

CREATE TABLE #savg


②若在CREATE TABLE 语句后面再加上两个’#’,此时表示的是创建了一个全局临时表,它可以由所有用户使用。

格式如下:

CREATE TABLE ##savg


注:临时表在断开与数据库连接时会被服务器删除。


(3)由其他表创建新数据表

由其他表创建新数据表即使用 SELECT INTO 语句创建一个新数据表,并用SELECT 的结果填充该表。

语句格式:

SELECT <列名> INTO <数据表1> FROM <数据表2>


即使用数据表2的列名来创建新的数据表1。


e.g.在数据库Test_0中,使用SQL语句由student1表创建student2表,其中student2表包括列名student2ID、student2Name、student2Class:

USE Test_0
SELECT student2ID,student2Name,student2Class INTO student2
FROM student1

2、修改数据表


当我们要修改数据表时,我们使用ALTER TABLE语句,

语句格式如下:

ALTER TABLE <数据表名>
(
  ALTER COLUMN (<列名> <数据类型>...)  /*修改表中指定列的属性*/
  ADD (<列名> <数据类型>...)           /*增加表中的列*/
  DROP (<列名> <数据类型>...)          /*删除表中的列或者约束*/
)

注意:在使用ALTER TABLE语句中,一次只能包含ALTER COLUMN、ADD、DROP子句中的一项。


e.g.在数据库Test_0中,使用SQL语句,在student新增加一列tel char(15):

USE Test_0
ALTER TABLE student
  ADD tel char(15)

3、删除数据表


当我们要删除数据表时,我们使用DROP TABLE语句,

语句格式如下:

DROP TABLE <数据表名>


e.g.已知数据库School,删除该数据库中的数据表class。

USE School
DROP TABLE class


四、数据操纵语言(DML)


(一)概述


数据操纵语句是用于向表中插入记录、修改记录以及删除记录的语句,即数据操作语句DML包括INSERT、UPDATE、DELETE等语句。


(二)插入语句


INSERT语句用于向向数据表或视图中插入指定的各列值的行。

语句格式:

INSERT [ INTO ] <数据表名> [(字段列表)] VALUES (数据列表) [,…n]

注:如果插入的数据按照表中各列的列名顺序列出这些值,那就可以省略列名;VALUES子句后接多行的值用逗号隔开。


e.g.已知数据库School,使用INSERT语句向student表中插入一个学生记录:“studentID:001、name:yyy、sex:男、address:小区25号”。

USE School
INSERT INTO student(studentID,name,sex,address)
VALUES(001,'yyy','男','小区25号')

显式指定列名表:显示列名表可用于插入值少于列的个数或列的顺序不同的数据,即我们可以这样添加,不用加上列表名,但要注意顺序:


USE School
INSERT INTO student VALUES(001,'yyy','男','小区25号')

(三)修改语句


UPDATE语句用于修改数据表或视图中特定记录或列的数据,即将表中满足查询条件的记录中由SET指定的各列的列值设置为SET指定的新值进行修改,然而WHERE可无,即不使用WHERE子句时更新所有记录的指定列值。

语句格式:

UPDATE < 数据表名 >

SET { 列名 = 表达式 [,…n] }

(WHERE < 查询条件 >)


e.g.已知数据库School,使用UPDATE语句修改在student_1表中,studentID为202119001的学生A的地址address改为“学区01栋”,并将其课程号为“002”的课程的ctype值改为“必修”以及他的学分ccredit加1。

USE School
UPDATE student_1
SET address='学区01栋',ctype='必修',ccredit=ccredit+1
WHERE studentID=202119001

(四)删除语句


1、DELETE语句


DELETE语句用于删除数据表或视图中的一行或多行记录,即将指定数据表或者视图中删除满足查询条件的行,若省略WHERE子句,即删除所有行。

语句格式:

DELETE < 数据表名 >

(WHERE < 查询条件> )


e.g.已知数据库School,使用DELETE语句向student表中学号studentID为001以及ctype值为NULL的学生记录。


USE School
DELETE  student
WHERE studentID=001
WHERE ctype IS NULL

2、TRUNCATE TABLE语句


TRUNCATE TABLE语句与刚刚的DELETE语句有点像,这里我们先比较DELETE语句和TRUNCATE TABLE语句的区别。首先DELETE语句是一次删除一条记录,其每次操作都记录在事务日志中,速度慢;而TRUNCATE TABLE语句一次删除所有记录,并不计入事务日志,相较于DELETE语句更快。


语句格式:

TRUNCATE TABLE <数据表名>


e.g.已知数据库School,删除当前数据库中表room_01和表room_02中的所有记录。


TRUNCATE TABLE School
SELECT * FROM room_01
SELECT * FROM room_02

结语


以上就是本次数据库原理与应用(SQL Server)教程的全部内容,感谢您的阅读和支持,篇幅较长,若有表述或者代码中的不当之处,望指出!您的指出和建议能给作者带来很大的动力!!!


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
6天前
|
SQL 安全 关系型数据库
SQL注入之万能密码:原理、实践与防御全解析
本文深入解析了“万能密码”攻击的运行机制及其危险性,通过实例展示了SQL注入的基本原理与变种形式。文章还提供了企业级防御方案,包括参数化查询、输入验证、权限控制及WAF规则配置等深度防御策略。同时,探讨了二阶注入和布尔盲注等新型攻击方式,并给出开发者自查清单。最后强调安全防护需持续改进,无绝对安全,建议使用成熟ORM框架并定期审计。技术内容仅供学习参考,严禁非法用途。
85 0
|
1月前
|
SQL 自然语言处理 数据库
【Azure Developer】分享两段Python代码处理表格(CSV格式)数据 : 根据每列的内容生成SQL语句
本文介绍了使用Python Pandas处理数据收集任务中格式不统一的问题。针对两种情况:服务名对应多人拥有状态(1/0表示),以及服务名与人名重复列的情况,分别采用双层for循环和字典数据结构实现数据转换,最终生成Name对应的Services列表(逗号分隔)。此方法高效解决大量数据的人工处理难题,减少错误并提升效率。文中附带代码示例及执行结果截图,便于理解和实践。
|
22天前
|
SQL 人工智能 自然语言处理
Text2SQL圣经:从0到1精通Text2Sql(Chat2Sql)的原理,以及Text2Sql开源项目的使用
Text2SQL圣经:从0到1精通Text2Sql(Chat2Sql)的原理,以及Text2Sql开源项目的使用
Text2SQL圣经:从0到1精通Text2Sql(Chat2Sql)的原理,以及Text2Sql开源项目的使用
|
1月前
|
SQL 缓存 Java
框架源码私享笔记(02)Mybatis核心框架原理 | 一条SQL透析核心组件功能特性
本文详细解构了MyBatis的工作机制,包括解析配置、创建连接、执行SQL、结果封装和关闭连接等步骤。文章还介绍了MyBatis的五大核心功能特性:支持动态SQL、缓存机制(一级和二级缓存)、插件扩展、延迟加载和SQL注解,帮助读者深入了解其高效灵活的设计理念。
|
2月前
|
SQL 关系型数据库 MySQL
基于SQL Server / MySQL进行百万条数据过滤优化方案
对百万级别数据进行高效过滤查询,需要综合使用索引、查询优化、表分区、统计信息和视图等技术手段。通过合理的数据库设计和查询优化,可以显著提升查询性能,确保系统的高效稳定运行。
85 9
|
1月前
|
SQL 容灾 关系型数据库
阿里云DTS踩坑经验分享系列|DTS打通SQL Server数据通道能力介绍
SQL Server 以其卓越的易用性和丰富的软件生态系统,在数据库行业中占据了显著的市场份额。作为一款商业数据库,外部厂商在通过解析原生日志实现增量数据捕获上面临很大的挑战,DTS 在 SQL Sever 数据通道上深研多年,提供了多种模式以实现 SQL Server 增量数据捕获。用户可以通过 DTS 数据传输服务,一键打破自建 SQL Server、RDS SQL Server、Azure、AWS等他云 SQL Server 数据孤岛,实现 SQL Server 数据源的流动。
157 0
阿里云DTS踩坑经验分享系列|DTS打通SQL Server数据通道能力介绍
|
11月前
|
SQL 关系型数据库 MySQL
SQL基础开发与应用-课程及场景介绍
这是一门关于《SQL基础开发与应用》的课程介绍,主要针对数据库Clouder认证的第二阶段。课程以电商平台后端开发为背景,教授RDS for MySQL的SQL基础知识,包括存储过程、触发器和视图等高级特性,并指导学员使用Python进行数据库的增删改查操作。学习目标包括掌握SQL基础操作,了解RDS的高阶功能,并熟悉Python连接RDS进行数据处理。课程采用场景化教学,以跨境电商网站数据库搭建为例,帮助学员理解实际应用。
136 0
|
SQL
Sql开发与应用
1. create table a1 (id number(*,2));  // 如果整数部分长度不确定,可以用*号来代替number(*,2) ...
3547 0
|
7月前
|
关系型数据库 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)")

热门文章

最新文章

下一篇
oss创建bucket