190 likes | 347 Views
T-SQL 语言概述. SQL 语言是用于数据库查询的结构化语言。 1982 年,美国国家标准化组织确认 SQL 为数据库系统的工业标准。目前,许多关系型数据库供应商都在自己的数据库中支持 SQL 语言: Accessoraclesybasedb2 等。 在 SQL Server 数据库中, T-SQL 由以下几部分组成:、 ( 1 )数据定义语言( DDL ): data definition language. 用于执行数据库的任务,对数据库以及数据库中的各种对象进行创建、删除、修改等操作。
E N D
T-SQL语言概述 • SQL语言是用于数据库查询的结构化语言。1982年,美国国家标准化组织确认SQL为数据库系统的工业标准。目前,许多关系型数据库供应商都在自己的数据库中支持SQL语言:Access\oracle\sybase\db2等。 • 在SQL Server数据库中,T-SQL由以下几部分组成:、 • (1)数据定义语言(DDL):data definition language.用于执行数据库的任务,对数据库以及数据库中的各种对象进行创建、删除、修改等操作。 • (2)数据库操作语言(DML):data manipulation language. • 用于操纵数据库中各种对象,检索和修改数据。 • (3)数据控制语言(DCL):data control language. • 用于安全管理,确定哪些用户可以查看或修改数据库中的数据。
数据定义语言:DDL • DDL包括的主要语句及功能如表
创建数据库 • 物理数据库 • 物理数据库的文件和文件组 • 文件 • 主数据文件 • 辅助数据文件 • 日志文件 • 文件组 • 主文件组 • 用户定义文件组
创建数据库 示例:创建一个名为mm的数据库,其初始值大小为5MB,最大大小为50MB,允许数据库自动增长,增长方式是按10%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。 CREATE DATABASE mm ON (NAME=‘mm_Data', FILENAME='e:\sql\data\MSSQL\Data\mm.mdf', SIZE=5MB, MAXSIZE=50MB, FILEGROWTH=10%) LOG ON (NAME=‘mm_Log', FILENAME='e:\sql\data\MSSQL\Data\mm_Log.ldf', SIZE=2MB, MAXSIZE=5MB, FILEGROWTH=1MB) GO
创建数据库 • 创建一个名为TT的数据库,它有3个数据文件,其中主数据文件为100MB,最大大小为200MB,按20MB增工;1个辅数据文件为20MB,最大大小不限,按10%增长。它还有2个日志文件,大小均为50MB,最大大小均为100MB,按10MB增长。 • Create database tt • On • Primary • (name=‘tt_data1’,filename=‘c:\data\tt_data1.mdf’,size=100MB,maxsize=200MB,filegrowth=20MB), • (name=‘tt_data2’,filename=‘c:\data\tt_data2.ndf’,size=20MB,maxsize=unlimited,filegrowth=10%) • Log on • (name=‘tt_log1’ filename=‘e:\data\tt_log1.ldf’,size=50MB,maxsize=100MB,filegrowth=10MB), • (name=‘tt_log2’ filename=‘e:\data\tt_log2.ldf’,size=50MB,maxsize=100MB,filegrowth=10MB) • go
修改数据库 • 修改数据库名: • Alter database mm • Modify name=mm2 • 向数据库northwind添加一个文件组mm22 • alter database northwind • add filegroup mm22 • Go • 向指定文件组添加一个文件 • alter database northwind • add file(name='mmek',filename='c:\mmek.data',size=50,maxsize=100MB,filegrowth=10%) to filegroup mm22
修改数据库 • 示例 【例】修改数据库mm现有数据文件的属性,将主数据文件的最大大小 改为不限制,增长方式改为按每次5MB增长。 分析:因为需修改主数据文件的两个属性,而使用ALTER DATABASE语句一次只能修改数据文件的一个属性,所以需要执行两次ALTER DATABASE命令。 ALTER DATABASE mm MODIFY FILE (NAME = mm_Data, MAXSIZE = UNLIMITED) GO ALTER DATABASE XSCJ MODIFY FILE (NAME = mm_Data, FILEGROWTH = 5MB) GO /*这是第二次,将主数据文件的增长方式改为按5MB增长。*/
修改数据库 • 示例 【例】为数据库XSCJ添加一个日志文件。 ALTER DATABASE XSCJ ADD LOG FILE (NAME = XSCJ_LOG2, FILENAME = 'e:\sql\data\MSSQL\data\XSCJ_Log2.ldf', SIZE = 5MB, MAXSIZE =10 MB, FILEGROWTH = 1MB) GO
删除数据库 • 语法: • 删除数据库mm • Drop database mm
表 • 创建表时必须指定表名、列名、以及数据类型。对给定的表来说,列名必须唯一,但是,同一个数据库中不同表的列的名称可以相同。必须为每一列都指定数据类型。 • 以下是在sql server中创建表的极限: • 1)每个数据库可以有20亿个表 • 2)每个表可权有1024个列 • 3)每个列可以有8064字节(这近似的最大长度不适用于text\ntext\image数据类型)
使用create创建表 • 一个示例 设已经创建了数据库XSCJ,现在该数据库中需创建学生情况表XS,创建表XS的T-SQL语句如下: USE XSCJ CREATE TABLE XS ( 学号 int identity(1,1), 姓名 uniqueidentifier default newid(), 专业名city, 性别bit NOT NULL, 出生时间smalldatetime NOT NULL, 总学分tinyint NULL, 备注text NULL ) GO 分析:首先使用USE XSCJ将数据库XSCJ指定为当前数据库,然后使用CREATE TABLE语句在数据库XSCJ中创建表XS。
使用identity属性是要考虑下面的要求: • 1)每个表只允许一个标识列 • 2)identity属性必须与整型或精确小数一起使用 • 3)不能修改标识列 • 4)查询中在列名的位置可以使用identitycol关键字。这样你可以在不知道列名的情况下引用表中具有identity属性的列。 • 5)标识列不允许空值 • 允许将显示值插入表的标识列中: • set identity_insert xiaocloud1 on • insert into xiaocloud1(xid,address) values(5,'sfsdsfd') • go
使用ALTER TABLE修改表 • 示例 【例】在表XS中增加1个新列——奖学金等级。 USE XSCJ ALTER TABLE XS ADD 奖学金等级tinyint NULL GO 【例】在表XS中删除名为奖学金等级的列。 USE XSCJ ALTER TABLE XS DROP COLUMN 奖学金等级 GO
使用ALTER TABLE修改表 • 示例 【例】修改表XS中已有列的属性:将名为“姓名”的列长度由原来的8改为10;将名为“出生时间”的列的数据类型由原来的smalldatetime改为datetime。 USE XSCJ ALTER TABLE XS ALTER COLUMN 姓名 char(10) go alter table xs ALTER COLUMN 出生时间 datetime GO
删除表 • 语法: • Drop table mm
数据操作语言DML • 数据操纵语言(DML)主要语句及功能
使用insert语句向表插入数据 • 向表中插入记录 insert into • INSERT INTO titles (title_id, title, type, pub_id, price) VALUES ('BU9876', 'Creating Web Pages', 'business', '1389', '29.99') • 通过 INSERT FROM 查询,可以将行从一个表复制到另一个表中或在同一个表内复制 • INSERT INTO archivetitles (title_id, title, type, pub_id) SELECT title_id, title, type, pub_id FROM titles WHERE (pub_id = '0766')
使用update修改记录 【例】将XSCJ数据库的XS表中学号为001110的学生的备注列值改为“三好生”,使用如下的T-SQL语句: USE XSCJ UPDATE XS SET 备注=”三好生” WHERE 学号=001110 【例】将XS表中的所有学生的总学分都增加10。 UPDATE XS SET 总学分= 总学分+10 说明:若UPDATE语句中未使用WHERE子句限定范围,UPDATE语句 将更新表中的所有行。 【例】将姓名为“罗林琳”的同学的专业改为“通信工程”,备注改 为“转专业学习”,学号改为001241。 UPDATE XS SET 专业= ‘通信工程’, 备注= ‘转专业学习’, 学号= ‘001241’ WHERE 姓名= ‘罗林琳’ 说明:使用UPDATE可以一次更新多列的值,这样可以提高效率。
使用删除语句delete删除记录 • 从表中删除一条记录: • Delete from xs where xsid=‘0011’ • 删除表中所有记录,保存表的架构: • Detele from xs • 另外一种删除记录语句truncate:删除表中的所有行,TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。 • Truncate xs