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