首页 > 专家说

sql server 2005所有代码的意思

来源:新能源网
时间:2024-08-17 13:28:08
热度:

sql server 2005所有代码的意思【专家解说】:一、SELECT子名 SELECT select_list //指定由查询返回的列 [ INTO new_table

【专家解说】:一、SELECT子名 SELECT select_list //指定由查询返回的列 [ INTO new_table ] //创建新表并将结果行从查询插入新表中 FROM table_source //指定从其中检索行的表或视图 [ WHERE search_condition ] //指定限制返回行的搜索条件 [ GROUP BY group_by_expression ] //指定查询结果的分组条件 [ HAVING search_condition ] //指定组或聚合的搜索条件 [ ORDER BY order_exception [ ASC | DESC ]] //指定结果集的排序 1、选择所有列 SELECT * FROM table_source 2、选择部分列 SELECT fieldname1 [ , fieldname2 , ...] FROM table_source 3、使用列别名 SELECT fieldname1 AS alias [ , fieldname2 AS alias , ... ] FROM table_source 4、WHERE子句用到的条件运算符 比较运算符: > , < , >= , <= , !> , !< , = , <> , != 范围运算符:BETWEEN... AND , NOT BETWEEN ... AND 列表运算符:IN , NOT IN 模糊运算符:LIKE , NOT LIKE 逻辑运算符:AND , OR , NOT 空值判断符:IS NULL , IS NOT NULL 5、模糊查询 SELECT语句提供了LIKE 和 NOT LIKE 进行模式匹配,即实现模糊查询 % : 由零个或更多字符组成的任意字符串 SELECT * FROM tb_book WHERE bookname LIKE 'JSP%' _ : 任意单个字符 SELECT * FROM tb-book WHERE bookname LIKE '_SP' [ ] : 指定一个字符、字符串或范围,要求所匹配的对象为它们中的一个 SELECT * FROM tb_book WHERE bookname LIKE '[ A , J]SP' [^ ]: 指定一个字符、字符串或范围,要求所匹配的对象为指定范围之外的字符 SELECT * FROM tb_book WHERE bookname LIKE '[^A]SP' 6、遇到查询出指定列为空值的记录,并将该列用特定的值替换 SELECT id, name, bankname, isNull(bankno, '暂无') from tb_customer where bankno is null 7、去除查询结果中的重复记录 SELECT DISTINCT fieldname1 [ , fieldname2 , ....] FROM table_source [WHERE search_condition] DISTINCT :返回惟一的行 ALL : 返回所有限定的行,为默认值,一般不会用它 8、限制结果集返回的行数 在SQL Server中使用TOP关键字 SELECT TOP n [ PERCENT ] fieldname1 [ , fieldname2 , ...] FROM table_source [ WHERE search_condition] // n表示返回的行数,如指定PERCENT,则n必须是整数,表示返回的记录数;若指定PERCENT,则n可以是小 数,取值为0 ~ 100,表示结果集的百分比返回记录数 在MySQL中使用LIMIT关键字 SELECT fieldlist //字段名 FROM table_source //从其中获取数据的表的名称 [ WHERE selectcriteria ] //查询条件 [ LIMIT [ offset , ] rows ] //offset:要返回的第一行的偏移量,初始行的偏移量是0,rows:返回行的最大数 9、聚合函数 count():用于统计结果集中全部记录行的数量,最多为人147483647 SELECT COUNT([ ALL | DISTINCE ] expression ) / COUNT(*) FROM table_source sum():对某一列的数值进行求和 SELECT SUM ([ ALL | DISTINCT ] expression ) FROM table_source [ WHERE search_condition ] // ALL:默认值,对全部数据进行计算 // DISTINCT:可选值, 表示对去除重复记录后的数据进行计算 // expression:进行求和的列或是列名组成的表达式 avg() :对某一列的数值进行求平均数 SELECT AVG( [ ALL | DISTINCT ] expression ) FROM table_source [ WHERE search_condition ] min() : 找出某一列元素的最小值 SELECT MIN( expression ) / MAX( expression ) FROM table_source [ WHERE search_condition ] max() : 找出某一列元素的最大值 10、Group By子句 SELECT fieldnameList [ , func(fieldname1) [ AS alias][ , func(fieldname2)...] FROM table_source [ GROUP BY [ ALL ] expression [ , .... n ] [ WITH { CUBE | ROLLUP } ]] // ALL : 该参数包含于选定列表中匹配的所有组合结果集,用户可以指定包含那些行都不满足WHERE子句指定的搜 索条件的组和结果集。如果用户指定了ALL,将对组中不满足搜索条件的汇总列返回空值 // expression :该参数是对查询执行分组的表达式,expression也称为分组列,可以是列或列的非聚集表达式。在选择 列表内定义的列的别名不能用于指定分组列。 // CUBE :该参数指定在查询的结果集内不仅包含由GROUP BY提供的正常行,还包括汇总行。在结果集内返回每个 可能的组和子组组合的GROUP BY汇总行,GROUP BY汇总行在结果中显示为null , 但可用来表示所有值 // ROLLUP:该参数是指定在结果集内不仅包含由GROUP BY子句提供的正常行,还包含汇总行。按层次结构顺序, 从组内的最低级别到最高级别汇总组。组的层次结构取决于指定分组列时所使用的顺序。更改分组列的顺序 会影响在结果集内生成的行数 注意事项: a) 在SELECT子句中的列名列表中,除了聚集函数外,其他所出现的列一定要在GROUP BY子句中有定义才行 b) SELECT子句的一列名列表中不一定要有聚集函数,但至少要用到GROUP BY子句列表中的一个项目 c) 在SQL Server中text , ntext , image数据类型的列不能作为GROUP BY 子句的分组依据 d) GROUP BY子句不能使用列别名 11、HAVING子句 用于指定组或聚合的搜索条件,它只能与SELECT语句一起使用,能常在GROUP BY子句中使用它,若不使用GROUP BY子句,则它的行为与WHERE子句相同。 它可对GROUP BY子句分组的结果进行再次筛选,最后输出符合HAVING子句中指定条件的记录。 它可以包含聚合函数, 不能使用text, image , ntext数据类型。 12、带SOME和ANY的子查询 是否有返回值满足搜索要求,且SOME 与 ANY完全等价 SELECT fieldlist FROM table_source WHERE scalar_expression {=|<>|!=|>|>=|!>|<|<=|!<} {SOME / ANY}(subquery) // SOME / ANY:指定进行比较 // subquery :包含某列结果集的子查询 定量比较运算符不支持取反操作,不能在SOME或ANY前加NOT,但可以使用不等号<>获取相同的查询结果。 13、带ALL的子查询 表达式的值与子查询结果中的所有值相比都必须满足比较运算符 SELECT fieldlist FROM table_source WHERE scalar_expression {=|<>|!=|>|>=|!>|<|<=|!<} ALL (subquery) 14、带EXISTS子查询 该子查询不产生任何数据,只返回true 或 false SELECT fieldlist FROM table_source WHERE [ NOT ] EXISTS (subquery) // EXISTS : 指满足条件的那些记录,一旦找到第一条匹配的记录后,就马上停止查找 // subquery : 返回单列结果集的子查询,子查询是一个受限的SELECT语句,不允许有COMPUTE子句和INTO关键字 15、内连接查询 内连接返回的结果集是两个表中符合条件的数据,而舍弃不符合条件的数据 SELECT fieldlist FROM tb_name1 [ INNER ] JOIN tb_name2 ON join_condition [ WHERE <search_condition> ] 16、外连接查询 外连接返回的是至少一个表中的所有行,只要这些行符合WHERE或HAVING搜索条件。 a) 左外连接:返回的结果集包含左表中的所有数据(符合WHERE或HAVING)及右表中的符合连接条件的数据,对于 左表中缺少的右表中的属性值用null表示。 SELECT fieldlist FROM tb_name1 LEFT [ OUTER ] JOIN tb_name2 ON join_condition [ WHERE <search_condition>] b)右外连接:返回的结果集包含右表中的所有数据(符合WHERE 或 HAVING)及左表中的符合连接条件的数据,对于 右表中缺少的左表中的属性值用null表示。 SELECT fieldlist FROM tb_name1 RIGHT [ OUTER ] JOIN tb_name2 ON join_condition [ WHERE <search_condition>] c)全外连接:返回的结果集包含左表与右表中所有符合WHERE或HAVING搜索条件的数据,对于缺少的左表或右表中的 属性值用null表示。 SELECT fieldlist FROM tb_name1 FULL [ OUTER ] JOIN tb_name2 ON join_condition [ WHERE <search_condition>] 17、交叉连接 返回的结果集是两个表的迪卡儿乘积,行数等于第一个表的行数与第二个表的行数的乘积,若在交叉连接中指定 WHERE条件,则交叉连接等于内连接 SELECT fieldlist FROM tb_name1 CROSS JOIN tb_name2 [ WHERE <search_condition>] 在交叉连接中不能使用ON设置连接条件。 18、自连接 指表与其自身进行连接,使用自连接时,必须为每个连接表起一个别名。 例:SELECT DISTINCT a.* from tb_name a INNER JOIN tb_name b ON a.basicpay=b.basicpay WHERE b.name='wgh' 二、INSERT语句 INSERT [ INTO ] table_name [ ( column_list )] VALUES (data_values) 三、UPDATE语句 UPDATE <table_name | view_name> SET <column_name>=<expression> [ , ... , <last column_name>=<las expression>] [WHERE <search_condition>] 四、DELETE语句 DELETE FROM <table_name> [ WHERE <search condition>]