Transact-SQL简明参考
- 格式:doc
- 大小:165.00 KB
- 文档页数:10
文本内容整理自网络-- 创建表book的Transact-SQL语句:create database test01create table test01.dbo.book(book_id nchar(6) not null,book_name nchar(30) null,price numeric(10,2) null,constraint PK_book primary key clustered(book_id asc)--建立主键)on [primary]-- 创建表author的Transact-SQL语句:create table test01.dbo.author(author_name nchar(4) null,book_id nchar(6) not null,address nchar(30) null,constraint FK_book_author foreign key (book_id)references book(book_id)--建立外键)on [primary]--或者建立完表author后,输入以下命令:alter table author with checkadd constraint FK_book_author foreign key (book_id) references book(book_id)--利用Transact-SQL语句创建表booksalescreate table booksales (book_id nchar(6) not null,sellnum int null,selldate datetime null)on [primary]--利用insert语句为表booksales添加数据:insert into booksales(book_id,sellnum,selldate)values(1,10,'04/15/2010')--或者输入以下命令:insert into booksales select 1,10,'04/15/2010'--利用delete语句删除表booksales的数据:delete from booksales where book_id=1--利用update语句为表booksales更新数据:update booksales set sellnum=20 where book_id=1--创建CHECK约束alter table booksalesadd constraint CK_sellnum check(sellnum>=0)/*规则是数据库对象,优先级高于CHECK约束。
实验四简单查询和连接查询1. 简单查询实验用Transact-SQL语句表示下列操作,在“学生选课“数据库中实现其数据查询操作:(1) 查询数学系学生的学号和姓名。
select sno,snamefrom studentwhere dept='数学系';(2) 查询选修了课程的学生学号。
select distinct(sno)from sc;(3) 查询选修课程号为0101的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
select distinct(sno),gradefrom scwhere cno='0101'order by grade desc,sno asc;(4) 查询选修课程号为0101的成绩在80-90 分之间的学生学号和成绩,并将成绩乘以系数0.8 输出。
select distinct(sno),grade*0.8 as'sore'from scwhere cno='0101'and grade between 80 and 90;(5) 查询数学系或计算机系姓张的学生的信息。
select*from studentwhere dept in('数学系','计算机系')and sname like'张%';(6) 查询缺少了成绩的学生的学号和课程号。
select sno,cnofrom scwhere grade is null;2. 连接查询实验用Transact-SQL语句表示,并在“学生选课”数据库中实现下列数据连接查询操作:(1) 查询每个学生的情况以及他(她)所选修的课程。
select student.*,amefrom student,sc,coursewhere student.sno=sc.sno and o=o;(2) 查询学生的学号、姓名、选修的课程名及成绩。
transact-sql 参考手册Transact-SQL(T-SQL)是Microsoft SQL Server中使用的查询语言,它结合了SQL和Microsoft的程序语言特性。
Transact-SQL是SQL Server 数据库的核心,它是用来与数据库进行交互的,能够执行各种复杂的操作,包括数据的查询、插入、更新和删除等。
Transact-SQL提供了许多功能和特性,使得它成为数据库开发人员和数据库管理员的首选语言。
以下是Transact-SQL的一些主要特性和功能:1. 事务处理:Transact-SQL支持事务处理,这意味着它可以执行一系列的操作,并且如果其中任何一个操作失败,所有操作都会回滚到之前的状态。
2. 存储过程和函数:Transact-SQL可以用来创建存储过程和函数,这些存储过程和函数可以封装复杂的逻辑,并且可以被重复使用。
3. 触发器:Transact-SQL支持触发器,触发器是一种特殊的存储过程,它会在数据库表发生特定事件时自动执行。
4. 错误处理:Transact-SQL提供了错误处理机制,允许开发人员捕获和处理错误。
5. 变量和参数:Transact-SQL支持变量和参数,这使得开发人员可以编写更灵活的代码。
6. 视图和索引:Transact-SQL可以用来创建视图和索引,视图是虚拟的表,而索引是提高查询性能的关键。
7. 连接和子查询:Transact-SQL支持各种连接和子查询,这使得开发人员可以执行复杂的查询操作。
8. 事务隔离级别:Transact-SQL支持不同的事务隔离级别,这可以控制并发访问时数据的完整性和一致性。
9. 批处理:Transact-SQL支持批处理,这意味着可以将多个语句组合在一起并作为一个单独的单元执行。
10. 动态SQL:Transact-SQL支持动态SQL,这允许开发人员在运行时构建和执行SQL语句。
以上只是Transact-SQL的一些基本特性和功能,实际上它还包含许多其他的特性和功能。
Transact-SQL查询语句大全集锦一、简单查询简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。
它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三'(一) 选择列表选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列例如,下面语句显示testtable表中所有列的数据:代码:SELECT * FROM testtable2、选择部分列并指定它们的显示次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如:代码:SELECT nickname,email FROM testtable3、更改列标题在选择列表中,可重新指定列标题。
定义格式为:列标题=列名列名列标题如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题:代码:SELECT 昵称=nickname,电子邮件=email FROM testtable4、删除重复行SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。
使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。
5、限制返回的行数使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT 时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。
例如:代码:SELECT TOP 2 * FROM `testtable`代码:SELECT TOP 20 PERCENT * FROM `testtable`(二) FROM子句FROM子句指定SELECT语句查询及与查询相关的表或视图。
Transact-SQL简明参考Transact-SQL语言(简称T-SQL)主要包括以下4大类:✧定义语言(CREATE、ALTER、DROP)✧操纵语言(INSERT、UPDATE、DELETE)✧查询语言(SELECT)✧控制语言(COMMIT、ROLLBACK)B.1 数据类型在创建表时,表中的每一列必须声明其数据类型,SQL Server常用数据类型如下:●字符型:char、varchar●整数型:tinyint、smallint、int●精确数值型:decimal、numeric●浮点数型:real、float●货币型:smallmoney、money●位型:bit●日期时间类型:smalldatetime、datetime●文本型:text●图像型:image1.字符型如果定义某个字段为字符型,则在输入时,输入的数据必须由单引号括起来,所有在单引号内的字符共同组成一个字符串。
●char:长度固定,最大长度为255。
●varchar:长度可变。
在定义某字段为char或varchar类型时,必须规定它的最大长度,以表明该字段所能存储的最大字符数。
假设某字段的数据类型为var char(8),则表明该字段中最多可输入8个单字节的字符(英文字母、阿拉伯数字等),或者4个汉字(因为1个汉字占有2个字节)。
注意:向表中插入字符串值时,如果字符串的实际长度大于字段定义的长度,SQL Server 将报告错误信息,并不将该记录插入到表中。
char和varchar的选择原则:如果某字段中所要存储的字符串长度都是相同的、固定的,则最好设置该字段为char 类型,这样可提高服务器的处理性能,例如,学号、工号、身份证号码等;如果某字段中所要存储的字符串长度是可变的、不固定的,则最好设置该字段为varchar类型,这样可节省更多的存储空间,例如,姓名、家庭地址等。
2.数值数据类型●整数型:tinyint、smallint、int●浮点数型:real、float●精确数值型:decimal、numeric●货币型:smallmoney、money(1)整数型●tinyint:1个字节,0 ~255。
●smallint:2个字节,-215 ~215-1(约3万多)。
●int:4个字节,-231 ~231-1(约21亿)。
说明:◆整数类型以很少的字节存储较大的精确数值,因而十分有用。
◆整数类型数据的存储结构效率高,且处理速度快,所以在使用数字量时应尽可能选用整型。
(2)浮点数型●real:4个字节,-3.40E+38 ~+3.40E+38,7位精度。
●float:8个字节,-1.79E+308 ~+1.79E+308,15位精度。
说明:◆近似值类型可用来表示取值范围非常大的数字量。
◆近似值类型是一个浮点数,在其范围内不是所有的数都能精确表示。
◆如果要向表中插入real或float数据,直接给出数值即可,如果带有小数点,则包括小数点。
(3)精确数值型●decimal[p[, s]]:p表示精度,s表示小数位数。
●numeric[p[, s]]:p表示精度,s表示小数位数。
说明:◆这两种数据类型是可以相互转换的。
◆在创建表并定义精确数值字段时,必须同时给出该字段的精度(最大值为38)和小数位数。
(4)货币类型●smallmoney:4个字节,-214748.3648 ~+214748.3647。
●money:8个字节,-922337203685477.5808 ~+922337203685477.5807。
说明:◆货币类型数据存储的精确度为4位小数。
3.位型(bit)bit是一种逻辑性数据类型,只用来存储1或0。
bit字段常用做【ON / OFF】、【YES / NO】、【TRUE / FALSE】字段。
4.日期时间型在SQL Server中,日期时间类型的数据以字符串的形式传递给服务器,SQL Server负责该数据的转换和合法验证。
●smalldatetime:4字节,1900-1-1 ~2079-6-6。
●datetime:8字节,1753-1-1 ~9999-12-31。
说明:◆在SQL Server中,datetime的值四舍五入为3ms,而smalldatetime的值四舍五入为1min。
◆可用【-】或【.】作为分隔符。
◆对于没有日期的数据,服务器默认日期为【1900年1月1日】;对于没有时间的数据,服务器默认为【12:00 AM】。
◆所有小于50的两位数年份被认为是21世纪(20XX年),而大于或等于50的两位数年份被认为是20世纪(19XX年)。
5.文本型(text)和图像型(image)●Text:用于存储备注等信息,容量可以在1 ~231-1个字节。
在定义Text数据类型时,不需要指定数据长度,SQL Server会根据数据的长度自动为其分配空间。
●Image:用于存储照片或者文件等,其理论容量为231-1个字节。
B.2 使用【CREATE TABLE】语句创建数据表1. 功能创建新表。
2. 语法CREATE TABLE table_name( column_name data_type{[ NULL | NOT NULL ][ PRIMARY KEY | UNIQUE ]}[ , …n ])3. 参数说明◆table_name:所创建的表名。
◆column_name:字段名。
◆data_type:字段的数据类型。
◆NULL | NOT NULL:允许空或者不允许空,默认为允许空。
◆PRIMARY KEY | UNIQUE:字段设置为主码或者设置字段值是唯一的。
UNIQUE约束允许为NULL值。
B.3 使用【ALTER TABLE】语句修改表结构1. 功能通过更改、添加、删除列来修改表的定义。
2. 语法ALTER TABLE table_nameALTER COLUMN column_name new_data_type [ NULL | NOT NULL ]| ADD column_name data_type_definition [ NULL | NOT NULL ] [ , …n ]| DROP COLUMN column_name [ , …n ]3. 参数说明◆t table_name:要修改的表的名字。
◆column_name:在操作中修改或增加的列的名字。
◆new_data_type:如果要修改表中存在的列,必须指定与该列相兼容的新数据类型。
◆data_type_definition:新增列的数据类型。
◆NULL | NOT NULL:允许空或者不允许空。
B.4 使用【DROP TABLE】语句删除数据表1. 功能将指定的表从数据库中删除。
2. 语法DROP TABLE table_name3. 参数说明◆table_name:所删除的表名。
B.5 使用【INSERT】语句添加记录1. 功能将新记录添加到表或视图中。
2. 语法INSERT [ INTO] <表名> [ ( <字段1> [ , <字段2> … ] ) ]V ALUES ( <常量1> [ , <常量2> … ] )B.6 使用【UPDATE】语句修改记录1. 功能修改指定表中满足某些条件的记录。
2. 语法UPDATE <表名>SET <字段1> = <表达式1> [ , <字段1> = <表达式2> […] ][ WHERE <修改的条件> ]B.7 使用【DELETE】语句删除记录1. 功能删除指定表中满足某些条件的记录。
2. 语法DELETEFROM <表名>[ WHERE <删除的条件> ]B.8 【SELECT】查询语句SELECT在任何一种SQL语言中,都是使用频率最高的语句。
SELECT语句的作用是让数据库服务器根据客户端的要求搜寻出用户所需要的信息资料,并按用户规定的格式进行整理后返回给客户端。
用户使用SELECT语句除可以查看普通数据库中的表格和视图的信息外,还可以查看SQL Server的系统信息。
1.【SELECT】语句的格式SELECT < 字段名列表| * >FROM <表名1> [ , <表名2> [ , … ] ][ WHERE <筛选条件表达式> ][ GROUP BY <分组表达式> [ HAVING <分组条件表达式> ] ][ ORDEY BY <字段> [ ASC | DESC ] ]2.说明◆用DISTINCT列出某些字段的值,重复的记录去掉◆【SELECT】语句的基本格式是由【SELECT】子句、【FROM】子句和【WHERE】子句组成的查询块。
◆整个【SELECT】语句的含义:根据【WHERE】子句的<筛选条件表达式>,从【FROM】子句指定的表中找出满足条件的记录,再按【SELECT】子句中指定的【字段】次序,选出记录中的字段值构造一个显示结果表。
◆如果有【GROUP BY】子句,则将结果按<分组表达式>的值进行分组,该值相等的记录为一个组。
◆如果【GROUP BY】子句带【HA VING】短语,则只有满足<分组条件表达式>的组才会输出。
如果有【ORDER BY】子句,则显示结果还要按<字段>值的升序或降序进行排序。
B.9 基于单表的查询注:以在第1章中创建的学生信息表(表名:Student)为例。
1.查询指定的字段示例:显示所有学生的班级、姓名和学号。
SQL:SELECT sClass, sName, sID FROM Student2.通配符“*”的使用示例:列出学生表的清单。
SQL:SELECT * FROM Student3.基于字段的表达式示例:显示所有学生的学号和姓名,要求设定学号的别名为“学生学号”,姓名的别名为“学生姓名”。
SQL:SELECT sID AS '学生学号', sName AS '学生姓名' FROM Student4.使用【DISTINCT】短语去掉重复的记录示例:列出学生的姓名,重名的记录自动去掉。
SQL:SELECT DISTINCT sName FROM Student5.使用【WHERE】子句过滤记录使用WHERE子句可以限制查询的范围,提高查询效率。
在使用时,WHERE子句必须紧跟在FROM子句后面。
WHERE子句中的条件表达式包括算术表达式和逻辑表达式两种;SQL Server 对WHERE子句中的查询条件的数目没有限制。