4.1Transact-SQL语言简介
注意:我所讲的内容是针对sql2005有些操作也会对比sql200.
4.4数据操作语言
4.5数据控制语言
4.6表
4.6.1表的类型
-
普通表
-
已分区表
如果一个表中包含了大量的、以多种不同方式使用的数据,且一般地查询不能按照预期的成本完成,那么应该考虑使用已分区表。 已分区表是指按照数据水平方式分区,将数据分布于一个数据库的多个不同的文件组中。在对数据进行查询或更新时,这些已分区表将被视为独立的逻辑单元。
注意:只有Microsoft SQL Server 2005企业版支持已分区功能。
-
临时表
-
系统表
每一种类型的表都有自己的作用和特点。
4.7简单T-sql语句总结
查询语句基本结构:
SELECT FROM WHERE GROUP BY HAVING ORDER BY select 子句 自定义输出格式 例:查全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名 SELECT Sname , 'Year of Birth:', 2003-sage , LOWER(Sdept) FROM Student; 消除重复行: DISTINCT (缺省为ALL) 例: 求选修了课程的学生号 SELECT DISTINCT Sno FROM student Where 子句——运算符 比较:<、<=、>、>=、=、<>、not + ~ 确定范围:Between A and B、Not Between A and B 确定集合:IN、NOT IN 字符匹配:LIKE,NOT LIKE 空值:IS NULL、IS NOT NULL 多重条件:AND、OR、NOT 例1.求年龄在18~22 (含18, 22)之间的学生名及年龄 SELECT Sname, Sage FROM Student WHERE Sage BETWEEN 18 AND 22; 或者: SELECT Sname, Sage FROM Student WHERE Sage>=18 AND Sage<=22; 例2.求信息工程系、计算机系、数学系的系名、学生名 (或不是这些系的学生) SELECT Sdept, Sname FROM Student WHERE Sdept IN (‘IE’, ‘CS’, ‘MA’); 例3.求倒数第三、四个汉字为’系统’的课程名 SELECT Cname FROM Course WHERE Cname LIKE ‘%系统_ _ _ _’; 例4.查缺少成绩的学生的学号和相应的课程号 SELECT Sno, Cno FROM SC WHERE Grade IS NULL; Group By子句 将查询结果集按某一列或多列的值分组,值相等的为一组,一个分组以一个元组的形式出现 只有出现在Group By子句中的属性,才可出现在Select子句中 组函数的使用: COUNT([DISTINCT|ALL] *|列名) SUM([DISTINCT|ALL] 列名) AVG([DISTINCT|ALL] 列名) MAX([DISTINCT|ALL] 列名) MIN([DISTINCT|ALL] 列名) 例:统计各系学生的人数。 Select sdept,count(*) as stu_count From Student Group By sdept Having子句 决定哪些分组符合要求,作用于分组 例:求选修课程在2门以上且都及格的学生号及总平均分 SELECT Sno, AVG(ALL Grade) FROM SC GROUP BY Sno HAVING COUNT(Cno)>2 AND MIN(Grade)>=60; ORDER BY子句 对查询结果按照一个或多个列的值进行升/降排列输出,升序为ASC;降序为DESC,空值将作为最大值排序 例:对选修’C5’课程的学生按成绩降序排列,同分数者按学号升序排列 SELECT Sno, Grade From SC WHERE Cno=’C5’ ORDER BY Grade DESC,Sno ASC; SQL更新语句 插入记录: INSERT INTO ..... VALUES() 例1:新增一个学生信息 INSERT INTO student VALUES(‘2003001’,‘陈冬’,18,‘男’,’电商’,’管理学院’,’徐州’); 例2:新增一条选课记录 INSERT INTO SC(Sno,Cno) VALUES (‘2003001’,‘C003’); 删除记录:DELETE FROM 例1:删除学号为‘2003009’的学生。 DELETE FROM SC WHERE sno = ' 2003009 '; 例2:清空SC表 DELETE FROM SC 修改记录:UPDATE SET 例1:把名为MARTIN的职工的工种改为MANAGER, 工资增加收入20%, UPDATE EMPLOYEE SET JOB=‘MANAGER’,Salary= Salary*1.2 WHERE NAME = ‘MARTIN’; 例2:将所有学生的年龄增加1岁 UPDATE student SET Sage=Sage+1; |