插入数据语句:
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函数,就形成了有条件就和。