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