`
fadeaway
  • 浏览: 810 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
社区版块
存档分类
最新评论

寒假学习sql之DML

 
阅读更多

 

插入数据语句:

INSERT INTO 表名 VALUES('df',123);这是插入表中的默认字段(与表的字段顺序一直)

INSERT INTO 表名('name') VALUES('hzc') 插入相应的字段(相对上面要灵活一点)

 

****************************************

 

删除整个表 DROP TABLE 表名

删除表的数据  DELETE TABLE 表名 (也可以加WHERE条件)

 

****************************************

 

数据排序 ORDER BY  字段1,字段2  DESC反序/ASC正序(对字段1进行排序,如字段1相同就以字段2排除)(是在WHERE之后)

 

****************************************

 

通配符:

_ 匹配一个字符

% 匹配多个或0个字符

eg:SELECT * FROM USERINF WHERE NAME LIKE '_ERRY'

 

****************************************

 

空值处理 NULL

在数据库中NULL以为未知的

 

eg:SELECT * FROM USERINF

    WHERE ID IS NULL

 

eg:SELECT * FROM USERINF

    WHERE ID IS NOT NULL

 

****************************************

 

数据分组

GROUP BY 字段

使用数据分组后 SELECT 中的字段只能是分组的字段或是聚合函数

 

因为WHERE中不能出现聚合函数,所以HAVING(只是对分组后的数据字段进行过滤) 就孕育而生了

 

 

****************************************

 

限制结果集范围

 

  select top 2 stu_name  from Students 

  where stu_id>3

  查询id大于3的前两个数据

 

****************************************

抑制重复数据:distinct不重复的数据

 

  select distinct type from transInformation

 

注意:distinct是对完全重复的行过滤掉

 

****************************************

 

表的联合Union:

  select stu_id  from stu

  union

  select stu_id from Students

 

其中要使用union的话,字段一致。

 

union all:

当表之间的有重复的行的话,使用union会过滤掉重复的,所以为了避免这种情况我们就使用union all。

 

****************************************

 

数据库函数:

 

(1)数字函数

abs() 求绝对值;

ceiling() 舍入到最大整数;

floor()舍入到最小整数;

round(3.2,0)4舍5入,第二个参数是精确的位数  结果为3.0。当然如果要删除3后面的0的sql语句是    select CONVERT( decimal(1,0), round( 3.2,0))

 

(2)字符串函数:

len() 长度

lower()/upper() 小写/大写转换

ltrim()/rtrim() 去掉左/右面的空格

substring('1234',1,2) 取1234的子串,从第一个开始取长度为2的子串,即12

 

(3)日期函数

getdate()获取系统当前时间 即:2012-01-11 20:22:09.667

 

DATEADD(DAY,5,GETDATE()) 在当前的时间进行改变。 参数1:需进行更改的对象。 参数2:增量。 参数3:待改变的时间

 

DATEDIFF(YEAR,'2006-01-01 00:00:00.0000000',GETDATE()) 计算两个时间的差值

参数1:比较的单位 参数2:startdate 参数3:enddate

 

DATEPART(YEAR,GETDATE()) 取部分时间单位c

 

(4)类型转化函数

 

 cast()

 convert()

 

eg: select CAST('2010' as datetime),CONVERT(datetime,'2012')

数据转换的好处:有时对数据库的数据进行运算操作的时候(如:加法)select '123'+1 结果为'124' 这就不是我们想要的结果了,所以需要我们显示的进行数据类型的转换。

 

 

(5)空值处理函数

isnull()

eg:    select ISNULL(stu_sex,'中性') from Students

为Null就显示'中性',反之则显示本来的数据。

 

(6)case函数

简单case:

select '用户类型' , (case userType

                     when '1' then '普通用户'

                     when '2' then 'vip'

                     else '未知的'

                     end                      

                    )

from userInf

 

 

Case搜索函数:

select '用户类型' , (case 

                     when userType='1'then '普通用户'

                     when userType='2'' then 'vip'

                     else '未知的'

                     end                      

                    )

from userInf

 

这种相当于编程语言中的if...else...

 

例子:

表teamInf

 

Date        Name      score

 

2012-01-11 火箭         胜         

2012-01-13 小牛         胜         

2012-01-12 湖人         负         

2012-01-14 火箭         胜         

2012-01-16 小牛         胜         

 

通过sql语句显示出下面的数据:

name      胜场    负场

 

湖人         0 1

火箭         2 0

小牛         2 0

 

参考:

 

 select name, SUM(case score when '胜' then 1 else 0 end) as 胜场 ,

 SUM(case score when '负' then 1 else 0 end) as 负场 

 from teamInf 

 group by name

 

解析:为了显示球队的胜负情况,通过group gy name 分组显示。球队是胜负场次,用聚合函数sum(),在sum()里嵌套一个case函数,就形成了有条件就和。

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics