Transact-SQL语言

1.SQL语句通常分成4类:数据查询语言、数据操作语言、数据定义语言和数据控制语言

2.设置日期格式

SET DATEFORMAT mdy
GO
DECLARE @datevar datetime
SET @datevar='03/21/2013'
SELECT @datevar

 

3.局部变量与全局变量

  局部变量:用DECLARE语句声明,用SET语句为其赋值

   定义整形局部变量和一个可变长字符局部变量并赋值

DECLARE @local_variable_int int, @local_variable_char nvarchar(9)
SELECT @local_variable_int=40
SET @local_variable_char='welcome to guangzhou'
SELECT @local_variable_int
SELECT @local_variable_char
GO

  全局变量:是SQL Server 系统所提供并赋值的变量,用户不能建立全局变量,也不能使用SET语句去修改全局变量的值,全局变量的名字以@@开头

  常用的全局变量:

  @@connections:返回今天试图连接到本服务器的连接数目

  @@rowcount:返回上一条T-SQL语句影响到的数据行数

  @@error:返回上一条T-SQL语句执行后的错误号

  @@procid:返回当前存储过程的ID标识

  @@remserver:返回登录记录中远程服务器的名字

  @@spid:返回当前服务器进程的ID标识

  @@version:返回当前SQL Server 服务器的版本、处理器类型等

4.数学函数

SELECT ABS(-2) /*绝对值*/,
       SQRT(16)/*开方*/,
       POWER(4,2)/*平方*/,
       RAND(2)/*返回0到1之间的随机float值*/

5.字符串函数

SELECT SUBSTRING('MICROSOFT SQL SERVER 2012 ',11,10),/*SQL SERVER*/
       REVERSE('MICROSOFT')/*逆序返回*/

 6.流程控制语言

   CASE表达式

CASE expression 
{WHEN expression THEN result}[,...n]
[ELSE result]
END

   BEGIN... END

BEGIN 
 Sql_statement
 END

  IF...ELSE

IF Boolean_expression
 Sql_statement
 [ ELSE [IF Boolean_expression]
  Sql_statement
 ]

  WHILE语句

 WHILE boolean_expression
 sql_statement
 [BREAK]
 {Sql_statement}
 [CONTINUE]
 {Sql_statement}

7.ERA模型

  在ERA模型中,实体一般用长方形表示,关系一般用棱形,属性一般用椭圆形

 

8 从student 表检索名字的第二个字不是“红”或“虹”的同学的资料;

  李红[大](student表中有两个学生“李红”同名同姓,分别以李红[大]、李红[小]加以区分)同学的信息

select * from student where student_name like '_[^红,虹]%'

select * from student where student_name like '李红b[大b]' escape 'b'

  在ESCAPE 子句中,定义"b"为转义字符,这样,like 子句中紧跟字符"b"后面的字符被定义为匹配字符而不再是通配符

 

9.多表查询:基于主键和外键指定查询条件,连接条件可使用"主键=外键"

  从student、course及student_course 三个表中检索学生的学号,姓名,学习课程号、学习课程名及课程成绩

select student.student_id,student.student_name,student_course.course_id,course.course_name,student_course.grade
from student, course,student_course where student.student_id =student_course.student_id and course.course_id =student_course.course_id

10.使用UNION子句:把两个或多个SELECT 语句查询的结果组合成一个结果集

select student_id,student_name from student
union
select teacher_id,teacher_name from teacher

11.Having 子句 是针对Group By 子句的,没有group by 子句时使用having 子句是没有意义的

select student_id,sum(grade) from student_course 
group by student_id 
having sum(grade)>450

12.使用compute 和coupute by 子句

select  student_id ,grade from student_course order by student_id 
compute sum(grade)

 

select student_id,grade from student_course order by student_id 
compute sum(grade) by student_id

13.若建临时表,必须在表前设置#(局部临时表)或##(全局临时表)#temp_grade

14.删除表的列:

alter table [dbo].[Students] drop column [student_num]

  修改表的列

alter table [dbo].[Students] 
alter column [course_id] int not null

 

 

posted @ 2013-03-22 18:42  摩天轮的幸福  阅读(1274)  评论(0编辑  收藏  举报