前言
本教程使用的是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 <数据库名> 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 <数据库名> ( <增加(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 <数据表名> ( <列定义> )
②其中列定义的格式如下:
{ 列名 数据类型 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 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)教程的全部内容,感谢您的阅读和支持,篇幅较长,若有表述或者代码中的不当之处,望指出!您的指出和建议能给作者带来很大的动力!!!