简单操纵语句
简单查询语句
Select <DISTINCT(不重复记录)> <ALL(全部记录,默认值,可省略)> <列名> <AS(可省略) 别名>
From <表名> < AS(可省略) 别名>
Where <条件> <比较运算符(=><!=)> <(NOT) Like%value%’> <In (value,value,value)> <Between value And value> and or
Order by <列名> <DESC(降序)>
Group by <列名(汇总时必须要用)>
Having <汇总条件(汇总时的比较条件,不能用where,后带汇总关键字条件)>
Select 后面可以直接对列进行一般的数学运算(加、减、乘、除),也可以利用内置数学API进行运算(SUMAVG…)
Exampleselect (field1 – field2) as field3 from table
空值NULL,用is (NOT) null来作对比判断,而不是用“=”,“=”是绝对匹配。
有用的连接符“||(oracle)+(MSSQL),可以把两个字符字段连接起来。
用到汇总函数(countsumavg…)时,必须要引用Group by语句。
Union (All) 返回两个或多个查询的不重复(全部)记录,这个要保证联合表的字段相同(数据类型也必须相同)。如果没有All,重复的记录将只显示一条,另外排序只能以第一个联合表(table1)的字段进行排序。
Exampleselect field1 from table1 Union (All) select field1 from table 2
Intersect 返回两个表共有的记录。
Exampleselect field1 from table1 Intersect select field1 from table 2
Except 返回第一个表有但第二个表没的记录。
Exampleselect field1 from table1 Except select field1 from table 2
插入新记录 Insert Into <表名 (列名,列名,列名)> <Values (,,)>
插入数字和空值(null)是不需要引号的,字符串类型则需要引号。
Insert select 插入字段字符串去重复(复制)多条记录。可以从别的表复制记录到目标表,但注意对应的列和数据类型必须匹配。
Exampleinsert into table1 (field1,field2,field3) select field1,field2,field3 from table2 where condition
更新记录 Update <表名> Set <列名 = ,…> Where <条件>
删除记录 Delete from <表名> Where <条件>

内置函数
汇总函数COUNTSUMAVGMAXMIN (汇总记录数、求和、均值、最大值、最小值)
Exampleselect COUNT(field1) from table1 (group by field1) (汇总记录)
日期函数
Select getdate() 当前系统日期时间。
Dateadd() 在向指定日期加上一段时间的基础上,返回新的datetime值。select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000
Datediff() 返回跨两个指定日期的日期和时间边界数。select datediff(day,'2004-09-01','2004-09-18') --返回:17
Datepart() 返回代表指定日期的指定日期部分的整数。select Datepart (month, '2004-10-15') --返回 10
Datename() 返回代表指定日期的指定日期部分的字符串。select datename(weekday, '2004-10-15') --返回:星期五
day(), month(),year() --可以与datepart对照一下
数学函数
ABS(x)  返回x的绝对值。
SIGN(x)  返回参数的符号,为-101,取决于x是否是负数、零或正数。
MOD(N,M)  %   (类似C中的%操作符)。返回NM除的余数。
FLOOR(x) 返回不大于x的最大整数值。select FLOOR(1.23)--返回:1select FLOOR(-1.23)--返回-2
CEILING(x) 返回不小于x的最小整数值。
ROUND(x) 返回参数x的四舍五入的一个整数。
ROUND(x,D) 返回参数x的四舍五入的有D为小数的一个数字。如果D0,结果将没有小数点或小数部分。
EXP(x) 返回值e(自然对数的底)的x次方。
Isnull(x,y) 如果x为非null,则返加x值,否则返回y值。
字符串函数
ASCII(x) 函数返回字符表达式最左端字符的ASCII 码值。
CHAR(x) 函数用于将ASCII 码转换为字符。
LOWER(x) 函数把字符串全部转换为小写。
UPPER(x) 函数把字符串全部转换为大写。
STR(x,m,n) 函数把数值型数据转换为字符型数据,x为数值,m为转换后的长度,n为保留小数位数
LTRIM(x) 函数把字符串左边的空格去掉。
RTRIM(x) 函数把字符串尾部的空格去掉。去掉全部空格,可以嵌套使用:LTRIM(RTRI
M(x))
LEFT(x,n) 函数返回左边部分字符串,x为字符串,n为返回长度。
RIGHT(x,n) 函数返回右边部分字符串,参照上条。
SUBSTRING(x,s,n) 函数返回指定部分字符串,x为字符串,s为开始位置,n为返回长度。
CHARINDEX(x,y) 函数返回字符串中某个指定的子串出现的开始位置,x为查字符串,y为目标字符串。
PATINDEX(x,y) 函数返回字符串中某个指定的子串出现的开始位置,其中子串表达式前后必须有百分号“%”否则返回值为0。如:“%x%”。
REPLICATE(x,y) 函数返回一个重复character_expression 指定次数的字符串,x为指定的字符串,y为重复次数。
REVERSE(x) 函数将指定的字符串的字符排列顺序颠倒。
REPLACE(x,m,n) 函数返回被替换了指定子串的字符串,x为目标字符串,m为原来的值,n为替换后的值。
LEN(x) 函数返回字符串长度。
数据类型转换函数
CAST(expression AS data_type) 显式转换数据类型。Cast(strnumber as char(10))
CONVERT(data_type,expression) 显示转换数据类型。CONVERT(char(10),strnumber)
多表联合查询
等值联合(等号)
运用“=”将两个表共有字段的值(两个表都满足条件),联合显示出来(组合显示,a符合条件记录数 × b符合条件记录数)。示例将显示所有a表数据以及b表中等值联合字段中存在于a表的记录。如果b表对应于a表有多条记录,将返回多条记录,就如“一对多”的关系,但如果联合的字段是“主键”,将只会返回一条记录。a表为基表,位于对比前面。
Exampleselect a.field1,a.field_same,b.field2 from table1 a,table2 b where a.field_same = b.field_same
不等值联合(比较符号)
内部联合与外部联合
内部联合( (inner) join ),有点类似等值联合,但比等值联合的效率高,。
等值联合:在连接条件中使用“等号(=)”运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其连接表中的重复列。
不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>>=<=<!>!<<>
自然连接:在连接条件中使用“等号(=)”运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,并删除连接表中的重复列。
Example:等价(与下列执行效果相同)
A:select a.*,b.* from table1 a,table2 b where a.id = b.id
B:select * from table1 cross join table2 where table1.id = table2.id (cross join后加条件只能用where,不能用on)
外部联合(left (outer) join right (outer) join)
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null),右连接则相反。
Exampleselect * from table1 right join table2 on table1.id = table2.id
完全联合(full (outer) join)
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
Exampleselect * from table1 full join table2 on table1.id = table2.id
交叉连接(cross join)
如果没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。(table1table2交叉连接产生3*3 = 9条记录)
Exampleselect * from table1 cross join table2 等价于 select * from table1,table2

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。