数据库原理与应用(SQL Server)笔记 第一章 数据定义语言和数据操纵语言
文章目录
- 前言
- 一、基本介绍
- 二、在SQL里执行T-SQL语句
- 三、数据定义语言(DDL)
- (一)概述
- (二)数据定义语言用于数据库
- 1、创建数据库
- 2、修改数据库
- 3、使用数据库
- 4、删除数据库
- 5、查看数据库
- (三)数据定义语言用于表
- 1、创建数据表
- (1)使用CREATE TABLE 语句创建数据表
- (2)使用CREATE TABLE 语句创建临时数据表和全局临时表
- (3)由其他表创建新数据表
- 2、修改数据表
- 3、删除数据表
- 四、数据操纵语言(DML)
- (一)概述
- (二)插入语句
- (三)修改语句
- (四)删除语句
- 1、DELETE语句
- 2、TRUNCATE TABLE语句
- 结语
前言
本教程使用的是SQL Server 2008 R2,如嫌麻烦在网上找下载地址有需要的小伙伴可以直接私信我,我可以把压缩包以及安装教程直接发给你。(打开界面如下图)
本文章的篇幅很长,其中涉及的语句以及代码较多,建议最好有参考书做参考学习。
一、基本介绍
首先我们要知道所谓的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后,首先我们创建一个数据库,右键“数据库”,点击“新建数据库”,设置好数据库的名称以及数据库文件的一些设置。
创建好后我们点击左上角的“新建查询”,这就是写T-SQL语句的地方。
这里可以选择在哪个数据库中进行新建查询。
三、数据定义语言(DDL)
(一)概述
数据定义语言用于对数据库和表进行创建、修改和删除,即DDL包括CREATE、ALTER、DROP等语句。
(二)数据定义语言用于数据库
1、创建数据库
(1)创建数据库的格式:
CREATE DATABASE <数据库名>
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我们所创建的数据库,创建完成。
2、修改数据库
(1)修改数据库的格式:
ALTER DATABASE <数据库名>
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,即可查到该数据库的相关信息:
(三)数据定义语言用于表
1、创建数据表
(1)使用CREATE TABLE 语句创建数据表
①创建数据库的格式:
CREATE TABLE <数据表名>
CREATE TABLE <数据表名>
(<列定义>
)
②其中列定义的格式如下:
{列名 数据类型 NULL/NOT NULL (AS 计算字段的字段值表达式)[,...n]<表约束>
}
③现在我们通过一个简单的例子来总结刚刚所讲到的:
e.g.下图给出一个表,使用sql语句创建该数据表:
在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 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 studentADD 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 Server)笔记 第一章 数据定义语言和数据操纵语言相关推荐
- 【SQL学习笔记】之数据定义语言(DDL)
SQL语言的学习可以简单地分为以下五个部分: 数据查询语言(DQL):select 数据操作语言(DML):insert.update.delete 数据定义语言(DDL):create.alter. ...
- ACCP学习旅程之----- SQL Server(第五章 数据查询(二))
特别注意:主外健关系中,名字可以不同,类型和长度必须相同. 1¥ 模糊查询 模糊查询提取的数据不一定是确切的,查询者对查询条件也是模糊的.大概的.不特别明确的. 1$ 使用Like进行模糊查询 ...
- SQL Server笔记心得(持续更新)
SQL Server笔记 一.数据库基础 二.企业管理器 三.查询分析器 四.SQL Server 数据管理 五.数据基本查询 六.数据高级查询 七.连接查询 八.查询的实际应用 一.数据库基础 1. ...
- 2.SQL SERVER笔记——SQL SERVER系统概念
2.SQL SERVER笔记--SQL SERVER系统概念 系统数据库 数据库管理员(DBA)的一项基本的技能是对SQL数据库引擎的系统数据库的深刻理解.数据库开发人员了解SQLSERVER自带的系 ...
- 把Oracle数据库移植到Microsoft SQL Server 7 0
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 把Ora ...
- 深入浅出SQL Server Replication第一篇:走近Replication(上)
深入浅出SQL Server Replication第一篇:走近Replication(上) 对于很多的SQL Server DBA而言,Replication不是什么新鲜的事物了,也是大家常常说的& ...
- SQL基础教程|第一章:数据库和SQL
前言: 1.本书在知识点提炼时侧重于实践效果,所以有些理论部分的知识点不会涉及或者几笔带过. 2.在语法实践时将会带入更多的例子和问题以便于理解数据库语法. 3.在所有关于SQL基础教程的文章中的语句 ...
- C# SQL Server笔记
第一章 认识C#程序 1. namespace关键字: Namespace(命名空间)是C#中组织代码的方式,他的作用类似于java中的package(包)这样我门就可以把紧密相关的一些代码放在同一个 ...
- mysql bak 还原数据库文件格式_Navicat操作SQL server 2008R2文件.bak文件还原
项目操作过程中,利用Navicat操作SQL Server2008R2数据备份,结果发现数据丢失了很多,不得不先对数据丢失部分进行差异对比,然后再重新输入. 1.利用Navicat导出的数据格式为sq ...
最新文章
- 男导师的妻子叫“师母”,那么女导师的丈夫该怎么称呼?
- 东北大学计算机 大一物理考试题,2020年东北大学822《大学物理》考试大纲及样题...
- Visual Studio提示Bonjour backend初始化失败
- UIGestureRecognizer学习笔记
- 200 行代码实现 2048 游戏
- Hyperledger Fabric 1.0 实战开发系列 第三课 chaincode开发
- Qt数据库sqlite
- 刚刚!阿里云宣布2021要“做厚中台”!有哪些书值得读?
- 大厂内部资料 | Redis 性能优化的 13 条军规!
- 微软要放弃Edge了?传微软正在构建基于Chromium的浏览器
- esxi命令关机虚拟机_虚拟机镜像使用说明
- 虚拟机的性能测试经验总结(一)
- 深入理解java虚拟机读书笔记(三)
- 微信连wifi portal验证
- android隐藏虚拟按键的几种方式
- 安装linux之后没有网
- 全志T7/T507 Qt5.12.5移植记录
- 如何使用netsh advfirewall firewall而不是netsh firewall控制Windows Server 2008的防火墙行为
- input 限制输入2位小数
- 【C++】STL(标准模板库)简介
热门文章
- 刘志勇:微博短视频百万级高并发架构
- 曾小伟:谁没被“不可思议”的薪资吸引过?
- 机器学习实战教程(四):朴素贝叶斯基础篇之言论过滤器
- OCP大会 | DCOS – 面向数据中心的运营操作系统(附PPT)
- python 第三方库
- 有关/etc/resolv.conf、/etc/hosts、/etc/sysconfig/network
- KVM 虚拟化技术以及 KVM 和云计算的关系
- MySQL Sharding DB (基于Fabric)
- android jni开发方式
- 大端 小端 原码 反码 补码 及内存中的表现