内连接:
是将两个表中符合条件的共同的行相连接起来;消除与另外一个表的任何不匹配的行,而外连接会返回FROM自居中提到的至少一个表或视图的所行。
SELECT select list (查找目标列)
FROM table1 INNER JOIN table2 [ON join_conditions] (ON后跟连接条件)
[WHERE search_conditions]
[ORDER BY ORDER_expression]
左外连接:
外连接参与连接的表中有主从之分,以主表的每行数据去匹配从表中的数据化,如果符合连接条件,则直接返回到查询结果中去; 加入主表的的行在从表中没有找到所匹配的行,主表的行依然保留,并返回到查询结果中,相应的从表的行中被天上空值后也返回到查询结果中去。
LEFT OUTER join (关键语句)
右外连接:
RIGHT OUTER join (关键语句)
全连接:
FULL OUTER jion (关键语句)
交叉连接:
SELESCT select_list
FROM table1 CROSS JOIN table2 -- CROSS JION 关键字
[WHERE search_conditions]
[OPDER BY order_expression]
自连接:
在同一个表上进行多表连接
联合查询:
就是将多个查询结果合并到一个结果集中。
语法格式:
SELECT selece_list
FROM table_source
[WHERE search_conditions]
{UNION [ALL] -- 关键字两查询并和到一起 如果使用ALL就会把重复的部分给保存
SELECT select_source
[WHERE search_conditions]}
[ORDER BY order_expression]
使用UNION查询时,连接的两个结果集必须在目标列表中有相同数目的表达式,且数据内容尽量保持一致。
Transact - SQL 概述
是SQL 的语言增强版本,与许多ANSISLQ标准兼容,而且在标准基础上还进行了许多扩展。 Transact - SQL 代码已成为SQL Server的核心。 Transact - SQL 在关系数据库关系系统中是i先数据的检索,操纵和添加功能。
可以用来创建,维护,保护数据库对象,并且可以操作对象的数据,所以Transact - SQL语言是一种完整的语言。
分类: (1) 数据定义语言
(2) 数据操纵语言
(3) 数据控制语言
其他: (1)事务管理语言
(2) 流程控制语言
(3) 附加的语言元素
运算符:
字符串函数:
声明变量:
declare @str narchar(50)
set @str = 'hello word !'
print ascii (str) (来获取第一个母:h)
declare @str narchar(50)
set @str = 'hello word !'
print left (@str,5) -- 使用left函数返回结果就是 “hello”
declare @str narchar(50)
set @str = 'hello word !'
print substring (@str,7,11) -- substring -- 截取中间值 需要三个参数1.变量 2.起始位置 3.结束位置
字符串函数使用示例:
1.CHARINDEX () -- 返回字符串中某个指定的字符串出现的开始位置。
CHARINDEX (<'substring_expression'>,
其中'substring_expression 是所要查找的字符表达式,expression 可为字符串也可为列名表达式。如果没有发现字符串,则返回O值。
2. PATINDEX () -- 返回字符串中某个指定的字符串出现的开始位置。
PATINDEX (<'%osubstring_expression%>,
标量值函数:
CREATE FUNCTION function_name -- 创建用户自定义函数
([{@parameter_name scalar_parameter_data_type [ = default ]}[,...n]]) -- 参数列表
RETURNS scalar_reture_data_type -- 具体返回值的类型
[WITH ENCRYPTION] -- 是否要采取加密的形式
[AS]
BEGIN 具体函数体:
function body
RETURN scalar_expression
END
表值函数
CREATE FUNCTION function_name -- 创建用户自定义函数
([{@parameter_name scalar_parameter_data_type [ = default ]}[,...n]]) -- 参数列表
RETURNS TABLE -- 具体返回值的类型
[WITH ENCRYPTION] -- 是否要采取加密的形式
[AS]
具体函数体:
RETURN (select_statement)
游标:
概述:是一种数据访问机制,允许用户访问单独的数据行,而不是对整个行级进行操作。用户可以通过单独处理每一行逐条收集信息并对数据逐行进行操作,这样可以降低系统开销和潜在的阻隔情况。
主要有两部分 (1) 游标结果集,定义游标SELECT语句返回的行集合
(2) 有表位置 只想这个结果集中的某一行的指针
特点:* 允许返回一个完整的结果集,但允许程序设计语言只调用集合中的一行。
* 允许定位在结果集的特定行
* 从结果集的当前位置检索一行或多行
* 支持对结果集中当前位置的行进行数据修改
* 提供脚本,存储过程和触发器中使用的访问结果集中数据的 T - SQL 语句
游标声明:
* DECLARE cursor_name [INSENSITIVE] [SCROLL] CURSOR
* FOR select_statement
* [FOR{REAN ONLY | UPDATE [OF column_name [,...n]]}] -- 语句设置游标的属性 UP...是可修改的游标,后边跟列名可以修改
操作游标:
打开:
OPEN{{[GLOBAL] CURSOR_name} | curcor_variable_name}
关闭:CLOSE { { [GLOBAL] corsor_name} | cursor_variable_name}
释放:DEALLOCATE { { [ GLOBAL] cursor_name} | @cursor_variable_name
系统与元数据函数:
(1) CONVERT() 将一个数据类型的数据转变为另一种数据类型的数据。
(2) CURRENT USER 返回当前用户的名称。
(3) INSATE() 判断它的输入是不是一个有效日期。
(4) INULL() 用一个指定替换任何控制
(5) ISNUMERIC () 判断它是不是一个空值