金沙棋牌app手机下载

当前位置:金沙棋牌 > 金沙棋牌app手机下载 > sql知识整理,sql基础知识

sql知识整理,sql基础知识

来源:http://www.logblo.com 作者:金沙棋牌 时间:2019-11-07 16:25

删除表中数据(并且会清除主键标识)

select FName,Fage from T_Employee

21. partition by

partition by的作用仅用于分组

             添加数据

number: 数值,可以是负数

单值判断,相当于switch case

19. right()

反回字符右边的指定长度的字符

例:select right('1234',2)
结果:34

         ALTER TABLE 表名

 

使用索引能提高查询效率,但是索引也是占据空间的,而且添加、更新、删除数据的时候也需要同步更新索引,因此会降低insert、update、delete的速度。只在经常检索的字段上(一般为where)创建索引。

3. IN 操作符实例

现在,我们希望从上表中选取姓氏为 Adams 和 Carter 的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons

WHERE LastName IN ('Adams','Carter')

金沙棋牌app手机下载,二、函数

  毫秒 :ms

CAST(RIGHT(FldNumber,3) AS INTEGER) as 后三位的整数形式

9.union 用法

分为union与union all
union 缺省在合并结果集后消除重复项,

union all 指定在合并结果集后保留重复项,
打个比喻吧 比如A表的数据是 A{ 1,4,5,9}       B{2,3,4,5}
那我执行此语句 select * from A union select * from B 那结果是{1,2,3,4,5,9}
如果执行select * from A union all select * from B 结果是{1,2,3,4,4,5,5,9}

      语法:create index index_name

  月: mm, m

)as FLevelName

16. datepart()

定义和用法

DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

语法

DATEPART(datepart,date)

date 参数是合法的日期表达式。datepart 参数可以是下列的值:

datepart

缩写

yy, yyyy

季度

qq, q

mm, m

年中的日

dy, y

dd, d

wk, ww

星期

dw, w

小时

hh

分钟

mi, n

ss, s

毫秒

ms

微妙

mcs

纳秒

ns

               update  表名 set 列名1=值1,列名2=值2 where

检索语句的执行顺序: 

RTRIM():字符串右侧的空格去掉

7.HAVING 子句

在 SQL 中增加 HAVING 子句原因是WHERE 关键字无法与合计函数一起使用。

SQL HAVING 语法

SELECT column_name, aggregate_function(column_name)

FROM table_name

WHERE column_name operator value

GROUP BY column_name

HAVING aggregate_function(column_name) operator value

Having 只用于查询条件中有合计函数的。

一、简单查询

 

where FNumber not in (select top 5 FNumber from T_Employee order by FSalary desc)

17. charindex() substring()

SQL CHARINDEX

函数返回字符或者字符串在另一个字符串中的起始位置

CHARINDEX

函数调用方法如下:

CHARINDEX ( expression1 , expression2 [ , start_location ] )

Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在

expression2中找expression1的位置。SQL CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置

 

select substring('123,456',charindex(',','123,456') ,len('123.456')-3)  结果: ',456'
意思:截取’123,456‘ 从第4为开始截取 4位

substring(字段,第几个字符开始截取,截取长度)
charindex(',','123,456')  ‘,’的位置 结果为:4
len('123.456')  字段长度  结果为:7

       ADD

  星期 :dw, w

最佳答案

13. group by

group by 对结果集分组,针对每一组返回一行。

若select子句中包含聚合函数,则聚合函数返回每个组的信息

若指定group by时,select语句后的所有非聚合函数字段必须出现在group by列表中。

         [not] exists

将表A的数据写入表B中

CASE expression

15. dateadd()

定义和用法

DATEADD() 函数在日期中添加或减去指定的时间间隔。

语法

DATEADD(datepart,number,date)

date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。

datepart 参数可以是下列的值:

datepart

缩写

yy, yyyy

季度

qq, q

mm, m

年中的日

dy, y

dd, d

wk, ww

星期

dw, w

小时

hh

分钟

mi, n

ss, s

毫秒

ms

微妙

mcs

纳秒

ns

 

           一般情况: mdf数据库主文件  ldf 日志文件 

字符串第一个字符是字母的,可在 SQL 使用下列判断语句:

去掉数据重复

20. 取整函数

1 trunc(value,precision)按精度(precision)截取某个数字,不进行舍入操作。
2 round(value,precision)根据给定的精度(precision)进行四舍五入。
3 ceil (value) 产生大于或等于指定值(value)的最小整数。
4 floor(value)与 ceil()相反,产生小于或等于指定值(value)的最小整数。
5 sign(value) 与绝对值函数ABS()相反。ABS()给出的是值的量而不是其符号,sign(value)则给出值的符号而不是量。

2、查询不重复的数据,

ascii(left(columnName, 1)) > 65

如果你用的是ACCESS数据库,可以用以下查询语句:
select duiwu,sum(iif(shengfu="胜",1,0)) as 胜,sum(iif(shengfu="负",1,0)) as 负 from 表名 group by duiwu 

12. join函数

sql之left join、right join、inner join的区别

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行

     优点:提高对数据库操作的性能 建在经常使用的,小字段的地方

 

2.select sum(datediff(second,starttime,endtime))

4. LEN() 函数

LEN 函数返回文本字段中值的长度。

SQL LEN() 语法

SELECT LEN(column_name) FROM table_name

           @bb  类型 output      输出参数

 

ROUND():四舍五入。

6. ROUND 函数

用于把数值字段舍入为指定的小数位数。

语法

ROUND ( numeric_expression , length [ , function ] )

参数

numeric_expression

精确数字或近似数字数据类型类别的表达式(bit 数据类型除外)。

length是 numeric_expression 将要四舍五入的精度。length 必须是 tinyint、smallint 或int。当 length 为正数时,numeric_expression 四舍五入为 length 所指定的小数位数。当 length 为负数时,numeric_expression 则按 length 所指定的在小数点的左边四舍五入。

    优点:可以重用代码 客户端只要发送很少的参数跟存储过程名就可以 减少网络流量 安全性高

使用 B 表中的数据更新到 A 表中

金沙棋牌app手机下载 1

11. datepart()函数

DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。

DATEPART(datepart,date)

date 参数是合法的日期表达式。datepart 参数可以是下列的值:

datepart

缩写

yy, yyyy

季度

qq, q

mm, m

年中的日

dy, y

dd, d

wk, ww

星期

dw, w

小时

hh

分钟

mi, n

ss, s

毫秒

ms

微妙

mcs

纳秒

ns

 

         SELECT A.列名 ,B.列名  FROM 表1  A

SELECT * FROM table WHERE column LIKE  '%string%'

--sum后加括号,里面放case when

18. decimal()

decimal(a,b)
a指定小数点左边和右边可以存储的十进制数字的最大个数,最大精度38。
b指定小数点右边可以存储的十进制数字的最大个数。小数位数必须是从 0 到 a之间的值。默认小数位数是 0。

 

八、视图

 

Union(如果重复的数据会剔除掉,union all不会剔除重复数据)

14. cast()

Cast()函数是转换数据类型的

CAST 和 CONVERT (Transact-SQL),将一种数据类型的表达式转换为另一种数据类型的表达式

 

Transact-SQL 语法约定

语法

Syntax for CAST:

CAST ( expression AS data_type [ (length ) ])

Syntax for CONVERT:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

参数

expression

任何有效的表达式。

data_type

目标数据类型。这包括 xml、bigint 和 sql_variant。不能使用别名数据类型。有关可用数据类型的详细信息,请参阅数据类型 (Transact-SQL)。

length

指定目标数据类型长度的可选整数。默认值为 30。

style

指定 CONVERT 函数如何转换 expression 的整数表达式。如果样式为 NULL,则返回 NULL。该范围是由 data_type 确定的。有关详细信息,请参阅“备注”部分。

        select 列名1,列名2  from 表1

查询表中两行数据某字段值是否重复

select *

5. ROW_NUMBER()OVER()函数

ROW_NUMBER() OVER (PARTITION BY COL1 ORDER BY COL2)表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

          (保证一个表中的数据,全部显示出来,再加上另一个表中满足条件的数据)

杀死死锁进程

CAST(expression AS data_type) eg:select cast('123' as int),cast('2008-08-08' as datetime)

10. DateDiff()

DATEDIFF 函数计算指定的两个日期中第二个日期与第一个日期的时间差的日期部分。换句话说,它得 出两个日期之间的间隔。结果是等于 date2 - date1 的日期部分的带符号整数值。

表达式DateDiff(timeinterval,date1,date2 [, firstdayofweek [, firstweekofyear]])

允许数据类型: timeinterval 表示相隔时间的类型,代码为:

年份 yy、yyyy 季度 qq、q

月份 mm、m

每年的某一日 dy、y

日期 dd、d

星期 wk、ww

工作日 dw

小时 hh

分钟 mi、n

秒 ss、s

毫秒 ms

             return 数值

 

SUBSTRING(string,start_position,length)

22.convert()

定义和用法

CONVERT() 函数是把日期转换为新数据类型的通用函数。

CONVERT() 函数可以用不同的格式显示日期/时间数据。

语法

CONVERT(data_type(length),data_to_be_converted,style)

data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。

可以使用的 style 值:

Style ID

Style 格式

100 或者 0

mon dd yyyy hh:miAM (或者 PM)

101

mm/dd/yy

102

yy.mm.dd

103

dd/mm/yy

104

dd.mm.yy

105

dd-mm-yy

106

dd mon yy

107

Mon dd, yy

108

hh:mm:ss

109 或者 9

mon dd yyyy hh:mi:ss:mmmAM(或者 PM)

110

mm-dd-yy

111

yy/mm/dd

112

yymmdd

113 或者 13

dd mon yyyy hh:mm:ss:mmm(24h)

114

hh:mi:ss:mmm(24h)

120 或者 20

yyyy-mm-dd hh:mi:ss(24h)

121 或者 21

yyyy-mm-dd hh:mi:ss.mmm(24h)

126

yyyy-mm-ddThh:mm:ss.mmm(没有空格)

130

dd mon yyyy hh:mi:ss:mmmAM

131

dd/mm/yy hh:mi:ss:mmmAM

实例

下面的脚本使用 CONVERT() 函数来显示不同的格式。我们将使用 GETDATE() 函数来获得当前的日期/时间:

CONVERT(VARCHAR(19),GETDATE())

CONVERT(VARCHAR(10),GETDATE(),110)

CONVERT(VARCHAR(11),GETDATE(),106)

CONVERT(VARCHAR(24),GETDATE(),113)

结果类似:

Dec 29 2008 11:45 PM

12-29-2008

29 Dec 08

29 Dec 2008 16:25:46.635

语句及查询结果:
SELECT CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 1): 05/16/06
SELECT CONVERT(varchar(100), GETDATE(), 2): 06.05.16
SELECT CONVERT(varchar(100), GETDATE(), 3): 16/05/06
SELECT CONVERT(varchar(100), GETDATE(), 4): 16.05.06
SELECT CONVERT(varchar(100), GETDATE(), 5): 16-05-06
SELECT CONVERT(varchar(100), GETDATE(), 6): 16 05 06
SELECT CONVERT(varchar(100), GETDATE(), 7): 05 1606
SELECT CONVERT(varchar(100), GETDATE(), 8): 10:57:46
SELECT CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
SELECT CONVERT(varchar(100), GETDATE(), 10): 05-16-06
SELECT CONVERT(varchar(100), GETDATE(), 11): 06/05/16
SELECT CONVERT(varchar(100), GETDATE(), 12): 060516
SELECT CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
SELECT CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
SELECT CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
SELECT CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
SELECT CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
SELECT CONVERT(varchar(100), GETDATE(), 24): 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
SELECT CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
SELECT CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
SELECT CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
SELECT CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
SELECT CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
SELECT CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
SELECT CONVERT(varchar(100), GETDATE(), 107): 05 162006
SELECT CONVERT(varchar(100), GETDATE(), 108): 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
SELECT CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
SELECT CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
SELECT CONVERT(varchar(100), GETDATE(), 112): 20060516
SELECT CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
SELECT CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
SELECT CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49:000

        ALTER

TRUNCATE TABLE tablename

2.’%%’查询

我们希望从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:

我们可以使用下面的 SELECT 语句:

SELECT * FROM Persons

WHERE City LIKE '[ALN]%'

         --修改字段 

alter table 表名 rename column 源列名 to 目标列名

LEN():计算字符串长度

8. ISNULL函数

(1)ISNULL
使用指定的替换值替换 NULL。
语法
ISNULL ( check_expression , replacement_value )

这里isnull用于查询字段里

(2)

case when isnull(b.c_delivery_type,'')='' then  b.c_delivery_type else a.c_delivery_type end  as 物流方式

 

null是特殊的值,他不能被进行比较,所以=<>等这些符号是不能判断null的,所以isnull(字段名,'')='',把null转换成'',再和''比较,而字段名='',由于没有处理null的情况,所以如果字段有null值,将被忽略

   数据管理

 

检索按照工资从高到低排序检索从第六名开始一共三个人的信息

23 Sql Server REPLACE函数的使用

REPLACE
用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符串表达式。

Replace(‘123456’,’23’,’9’)

将123456中的23用9替换掉

 

类型:  1.实体完整性

WITH temptable AS (SELECT * FROM table WHERE column = '查询条件')

SELECT * FROM temptable 

where T_EmployeeWithRowNumbers.row_num between 6 and 8

24 str(a,b,c)函数

将数值型转换成指定长度的字符串

如select STR(12345.633,7,1) 结果为12345.6

第一个参数是要转换的数值,

第二个参数是转换後的总长度(含小数点,正负号),

第三个参数为小数位

25 .INSERT INTO SELECT语句 语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1

26. select 1 from table

Select 1 from table 是查询表的数据有多少,select * from table是查询表的所有数据的详细信息

27.rand()函数

SQL RAND函数调用​可以产生随机数

Select rand()获取介于0和1之间的一个数(小数)

Select rand()*10获取0和10之间的一个数(小数)

Select str(rand()*10)获取0和10之间的一个数(整数)

Select str(rand()*10000) 获取0和10000之间的一个数(整数)

28.存储过程中的SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 语句用法

SET QUOTED_IDENTIFIER 为ON时,标识符可以由双引号分隔,文字必须由单引号分隔

SET ANSI_NULLS,就是说NULL是否可以进行=和<>比较;

当设置为ON 时,表示不可以进行比较,凡是进行比较的,结果都为0

当设置为 OFF时,表示可以进行比较,比较的结果就是实际结果

29. ISNUMERIC

判断参数是否是纯数字型

30.rtrim函数

截断所有尾随空格后返回一个字符串。

 

3、Unique 唯一约束

子查询 WITH  AS 用法

)

1.TOP 子句

TOP 子句用于规定要返回的记录的数目。

对于拥有数千条记录的大型表来说,TOP 子句是非常有用的。

SQL Server 的语法:

SELECT TOP number|percent column_name(s)

FROM table_name

 

          列名3 数据类型  约束                  Default值

修改列名称

distinct是对整个结果集进行数据重复处理的,而不是针对每一个列

1、查询所有数据,查询部分列数据,列别名

select –>where –> group by–> having–>order by

WHEN value1 THEN returnvalue1

           LEFT|RIGHT|FULL [OUTER] JOIN  表2  B  ON  A.列名= B.列名

 

Group by Fage Having Count(*)>1

四、连接(子查询结果集如果在一个表中,用子查询,否则用连接)

  秒 :ss, s

)as T_EmployeeWithRowNumbers

3、管理表

查询数据库中死锁

select FName,

             Datediff(datepart,date1,date2)、--求两个日期的差

 

Ceiling->天花板

十、存储过程

date: 合法的日期

order by FSalary desc

2、Foreign key 外键  REFERENCES  表名(列名)

  年中的日 :dy, y

(

         4.用户自定义完整性

查找某列数据不包含某一字符串

WHEN value3 THEN returnvalue3

1、建库 CREATE DATABASE 数据库名   / 删除数据库  DROP  DATABASE 数据库名

查找某列数据包含某一字符串:

三、分组

  SELECT 
        ROW_NUMBER() over(PARTITION BY ColumnName1 ORDER BY ColumnName1 asc,ColumnName2 asc) as NewColumnName, 
        ColumnName1
     FROM TableName

case

4、Check  检查约束

UPDATE table SET column = REPLACE(column, 源字符串,目标字符串) 

when FSalary<2000 then '低收入'

九、索引

  日 :dd, d

Select top 3 * from T_Employee order by FSalary desc

              dateadd(datepart,number,date)、--yy  mm dd 

  小时 :hh

select distinct FDepartment,FSubCompany  from T_Employee(distinct是针对FDepartment,FSubCompany两个列,而不是一列)

         3.域完整性

  分钟 :mi, n

RIGHT(FldNumber,3) as 后三位

        2.参照(引用)完整性 

select    
    request_session_id spid,   
    OBJECT_NAME(resource_associated_entity_id) tableName    
from    
    sys.dm_tran_locks   
where    
    resource_type='OBJECT' 

字符串函数

    begin transaction 建立一个显示事务

alter table 表 alter column 列名 类型

from CallRecords
where datediff(month,starttime,getdate())=0  --或datepart(month,starttime)=datepart(month,getdate()) 应该也可以
group by caller_id
order by sum(datediff(second,starttime,endtime)) desc

    调用:exec 过程名 参数[output]

修改列的类型定义

WHEN 2 THEN '高级客户'

    运算符:比较运算符、逻辑运算符(AND/OR/NOT)、范围运算符([NOT]BETWWEEN  AND)、列表运算符(IN(值列表))、模式匹配符、空值判断符

替换某字段中的部分字符串

LTRIM():字符串左侧的空格去掉

1、字符串函数:substring(expression,start,length)、--求子串

 

即使创建了索引,仍然有可能全表扫描,比如like、函数、类型转换等

         比较运算符引出的子查询

alter table 表名 add 新列名 列类型 (列默认值)

) as 收入水平

               delete  from  表名 where

datepart:

select *,row_number() over (order by salary desc) as row_num from T_Employee

五、子查询

 

CEILING():舍入到最大整数。3.33将被舍入为4,2.89将被舍入为3,-3.61将被舍入为-3

     use  数据库

  季度 :qq, q

(

      GROUP BY  列1,列2

INSERT INTO B  SELECT * FROM A;

日期函数

5、Default 默认值约束

SELECT * FROM table WHERE column NOT LIKE '%string%'

sql server2005后增加了Row_Number函数简化实现,用Row_Number函数也能用来分页

            where [not] exists (select 语句)

 

我的表结构如下 duiwu     shengfu1         胜2         胜1         胜1         负2         负1         胜2         负要查询出如下结果:duiwu   胜     负1       3      12       1      2就是分别统计出每支队伍的胜负次数,这样的sql语句该怎么写啊?大虾帮帮忙啊,谢谢了

7、集合函数:min,max,sum,avg,count       

 

ISNULL(expression,value):如果expression不为空则返回expression,否则返回value。eg :select isnull(FName,'佚名') as 姓名 from T_Employee

         --删除字段

 

case函数用法1

         [not] in

  周 :wk, ww

WHEN value2 THEN returnvalue2

6、Isnull函数--

select column from table group by column having count(column) > 1

END

      SELECT  列1 ,列2 ,COUNT(列3) FROM 表名 WHERE 条件

创建非聚合索引

(

   INSERT [INTO]  表名(列列表)VALUES(值的列表)

DateAdd(datepart, number, date) 

end

         )

 

from

3、数学函数:round(numeric_exp,length)--

ROW_NUMBER() 的用法,以下是根据 ColumnName1 进行编号,编号所在列名为 NewColumnName:

表中有A、B、C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列

    四个特性:原子性   独立性 一致性  持久性

追加新列

(

  SELECT 列1 AS 'BIAOTI1','BIAOTI2'=列2  FROM 表名

 

ABS():求绝对值

   NULL判断符:IS NULL  /IS NOT NULL

 

DATEADD(datepart,number,date),计算增加以后的日期。参数date为待计算的日期,参数number为增量,参数datepart为计量单位,可选值见备注。DATEADD(DAY,3,date)为计算日期date的3天后的日期,而DATEADD(DAY,3,date)为计算日期date的3天后的日期,而DATEADD(MONTH,-8,date)为计算日期date的8个月之前的日期

          as sql语句

  年:yy,yyyy

when FSalary>=2000 and FSalary<=5000 then '中等收入'

六、建库建表  creat alert drop 管理结构

  微妙 :mcs

GETDATE():取得当前日期时间

             Year(date)、Month(date)、Day(date)

CREATE NONCLUSTERED INDEX index_name ON table (column)

datepart可选值(year,quarter(季度),month,day,week,hh)

1、内连接:  SELECT A.列名 ,B.列名  FROM 表1  A

 

Floor->地板

               str(float_expression,[length,[decimal]])--将数字类型转换成字符类型

方法①:UPDATE tableA SET columnA = tableB.columnB FROM tableA inner join tableB on tableA.ID = tableB.ID where columnC='条件'
方法②:UPDATE tableA SET columnA = tableB.columnB FROM tableA,tableB where tableA.ID = tableB.ID and columnC='条件'

END

             as select 语句

  纳秒 :ns

表名:CallRecords
字段名:id,caller_id,telNum,starttime,endtime

           列名2 数据类型  约束                  unique,

Kill 进程ID

WHEN 1 THEN 'VIP客户'

             on 表(列1,列2)

CASE FLevel 

        select 列名1,列名2  from 表1

select distinct FDepartment from T_Employee

   UPDATE   表名  SET  列1=值1,列2=值2 WHERE  条件

SELECT FldNumber

5、次序函数:row_number()、Rank()、dense_rank() 

SELECT FName,

    语法:create view view_name

DATEDIFF(datepart,startdate,enddate):计算两个日期之间的差额。datepart为计量单位,可选值参考datepart

          列名4 数据类型  约束                  foreign key references 表名2(列明)

ELSE defaultreturnvalue

  SELECT  DISTINCT  列名 FROM 表名

CONVERT(date_type,expression) eg:select convert(datetime,'2008-08-08'),convert(varchar(50),123)

    特点:

1.select top 5 *
from CallRecords
order by datediff(second,starttime,endtime) desc

        ALTER TABLE 表名

eg:select FName,FInDate,DateDiff(year,FIndate,getdate()) from T_Employee

         --添加字段

select FName,Fage from T_TempEmployee

       ALTER TABLE 表名

索引

            [INNER] JOIN  表2  B  ON  A.列名= B.列名

select DatePart(year,getdate())->如果是今年是2011年,则返回2011

2、日期函数:getdate()、--获取当前系统日期

参数string为主字符串,start_position为子字符串在主字符串中起始位置,length为字符串的最大长度

4、转换函数:convert(datatype [(length)],expression[,style])--类型转换函数

union

3、查询前n行数据

类型转换函数

           where 列 运算符 (select 语句)

LOWER(),UPPER():转小写,大写

1、Primary key 主键

select (case when a>b then a else b end),(case when b>c then b else c end) from t

               insert [into] 表名 (列列表) values(zhi leibiao)

限制结果集行数

            特殊情况(大型数据库): ndf辅助文件

FLOOR():舍入到最小整数。3.33将被舍入为3,2.89将被舍入为2,-3.61将被舍入为-4

    SELECT * FROM 表名  WHERE  条件 

LTRIM(RTRIM()),字符串两边的空格去掉

   优点:

else '高收入'

             删除数据

Round->“半径”。Round(3.1425,2)->3.14 后面的“2”指为保留2位精度

十一、事务

select top 3 * from T_Employee 

2、建表 CREATE TABLE 表名         /    DROP TABLE 表名

4.select caller_id as 呼叫员编号,telNum as 对方号码,datediff(second,starttime,endtime) as 通话时长
from CallRecords
union all
select '汇总',
sum(case when telNum like '0%' then 0 else datediff(second,starttime,endtime) end) as 市内号码总时长
sum(case when telNum like '0%' then datediff(second,starttime,endtime) else 0 end) as 市内号码总时长
from  CallRecords

   SELECT * FROM 表名

union因为要进行重复值扫描,所以效率低,因此如果不是确定要合并重复行,那么就用union all

        DROP

select a.duiwu ,a.胜,b.负 from (select count(*) 胜, duiwu from tabb where shengfu='胜' group by duiwu ) a left join (select count(*) 负, duiwu from tabb where shengfu='负' group by duiwu ) b on a.duiwu=b.duiwu --sql2000调试通过,可以自己用case when改写一下

   模式匹配符:where 列名1 LIKE  '%'  '_'      '[^0-9][A-Z]'

3.select top 3 caller_id

2、外连接:左外连接、右外连接、全外连接

DATEPART(datepart,date):返回一个日期的特定部分

         分组过滤(列1.列2 ,必须在group by 中出现的)

from CallRecords
where telNum like '0%'

    语法:create proc 存储过程名

WHEN 3 THEN '普通客户'

           @aa  类型,           输入参数

创建索引的方式,在表设计器中点击右键,选择“索引/键”-》添加-》在列中选择索引包含的列

         ( 列名1 数据类型  约束,  null/not null primary key check(),

数字函数

4、过滤行 

ELSE '客户类型错误'

commit transaction :标识一个隐士或显示事务

select duiwu ,
sum(case when shengfu = '胜' then 1 else 0 end) win,
sum(case when shengfu = '负' then 1 else 0 end) lost
from 表
group by duiwu ;

      HAVING 条件(分组之后的过滤,可以用聚合函数)

eg:

七、数据完整性 constraint  references 

from T_Employee

实现:

FROM T_Customer

  SELECT  TOP  N  PERCENT * FROM 表名

空值处理函数

             更新数据

5、排序   ORDER BY 列名1  [ASC/DESC],列名2  [ASC/DESC]

   DELETE  FROM 表名  WHERE  条件

本文由金沙棋牌发布于金沙棋牌app手机下载,转载请注明出处:sql知识整理,sql基础知识

关键词:

上一篇:没有了

下一篇:没有了