对象命名对象
三段式名字标识对象:
<数据库名>.<所有者名>.<对象名>
前两者可以省略,系统自动有一个默认值。
数据库名默认值是当前数据库
所有者名默认值是数据库的所有者(dbo)
别名:使用别名的主要目的是增加select语句的可读性。
可使用如下语句指派数据表的别名:
数据表名称 as 数据表别名
如果引用了别名 在相应的T-SQL语句中,对该数据表的所有显示引用都必须
使用别名。
select语句
基本结构
SELECT[ALL|DESTINCT] select_list[INTO[new_table_name]]
FROM {table_name|view_name}
[[,table_name2|view_name2}
[....,{table_name16|view_name16}]]
[WHERE search_conditions]
[GROUP BY group_by_list]
[HAVING search_conditions]
[ORDER BY order_list [ASC|DESC]]
汇总函数
把一列中的值进行汇总运算,返回单值的函数
五个预定义的聚合函数
平均值:Avg
总和:Sum
最小值:Min
最大值:Max
计数: Count
count(*),count(Distinct)
连接查询
就是在多个表中检索数据
内连接
内连接的格式
数据表1 inner join 数据表2 on 连接表达式
指定返回两个表中所有匹配的行
外连接:左向外连接,右向外连接,完整外连接
左向外连接的格式为:
数据表1 left join 数据表2 on 连接表达式 或
数据表1 left outer join 数据表2 on 连接表达式
返回结果集中将包括数据表1中所有的记录。
右向外连接格式:
数据表1 right join 数据表2 on 连接表达式 或
数据表1 right outer join 数据表2 on 连接表达式
和左向外连接正好相反
完整外联接
格式如下:
数据表1 full join 数据表2 on 连接表达式 或
数据表1 full outer join 数据表2 on 连接表达式
包含两个数据表中的所有记录。
交叉连接
格式为:数据表1 cross join 数据表2
如果在select语句中没有使用where子句,则交叉连接将返回
数据表1中的所有记录,以及数据表1中的每一条记录与数据表2中
的所有记录的组合。
提高select语句的效率
使用exists关键字检查结果集:不要用count(*)来检查结果集中是否包含行
使用标准联接代替嵌套查询
有效避免整表扫描:使用索引
数据插入
格式1:
INSERT INTO <表名>[(<列名1>[,<列名2>...])]
VALUES(<值1>[,<值2>...]);
格式2:
INSERT INTO<表名>[(<列名1>[,<列名2>...]) select 语句;
数据修改
UPDATEEE<表名> SET <列名1>=<表达式1>
[,<列名2>=<表达式2>...][WHERE<条件>];
可以一次更新一列或多列;更新一行或多行(由where的选择条件决定)。
删除数据
DELETE[FROM] {table_name|view_name}
[WHERE 子句]
只能整行删除,不能只删一行的部分。