您的位置:首页 > 职场人生

黑马程序员__SQL学习笔记

2012-05-11 12:52 411 查看
---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------

SQL功能语句和命令动词:

    功能                   命令动词        

数据定义语句(DDL)    CREATE,DROP,ALTER

数据操纵语句(DML)     INSERT,DELETE,SELECT,UPDATE

数据控制语句(DCL)     GRANT,REVOKE

常用语句实例:

SQL中关键字、表名、列名大小写不敏感,变量中存放的字符串内容大小写敏感。

创建表:create table T_Person(ID varchar(50) primary key,Name nvarchar(50),Age int not null)

更改表:新增列alter table T_Person add Tel varchar(50)

        删除列alter table T_Person drop column Tel 

删除表:drop table T_Person

向表中插入数据:insert into T_Person(ID,Name,Age) values('0001','tom',23)

删除表中数据:delete from T_Person where Name='tom'

更新表中数据:update T_Person set Age=20 where Name='tom'

查询语句: 

查询表中所有数据:select * from T_Person

查询部分列:select ID,Name from T_Person

查询数据库中的基本表:select table_name from myselfdb.INFORMATION_SCHEMA.TABLES where TABLE_TYPE='base table' 其中myselfdb是数据库名

使用别名查询:select ID as 编号,Name as 姓名 from T_Person

        或者  select ID 编号,Name  姓名 from T_Person

SQL聚合函数:

MAX(),MIN(),SUM(),AVG(),COUNT()  聚合函数不能出现在where语句中

select count(*),max(age),min(age),sum(age),avg(age) from T_Person

数据排序:order by

升序select * from T_Person order by age asc

降序select * from T_Person order by age desc

在排序的结果中在进行排序:

select * from T_Person order by age asc,salary desc;表中的数据显示按照年龄降序排序,年龄相同的数据,按照工资降序排序

order by子句要放在where子句,group子句之后,默认为升序排序

通配符过滤:使用关键字like

单字符匹配通配符使用半角_   select * from T_Person where name like '_om'

多字符匹配通配符使用半角%   select * from T_Person where name like '%m'

空值处理:is null,is not null

select * from T_Person where name is null

select * from T_Person where name is not null

多值匹配:

select * from T_Person where age in(20,32,44)

select * from T_Person where age between 20 and 30 等效 select * from T_Person where age>=20 and age<=30

数据分组:group by

select age,count(*) as 人数 from T_Person group by age having count(*)>3 查找年龄段超过3人的年龄

没有出现在group by中的列是不能放在select语句后列名的列表中,也不能出现在having子句中

限制结果集行数:

select top 5 * from T_Person order by age asc 查找表中年纪最小的5个人数据

select top 3 * from T_Person where ID not in (select top 5 ID from T_Person order by age asc)  order by age asc检索年龄从小到大排列第6名到第8名的信息

上面的语句等效于

select * from (select row_number() over(order by age asc) as num,* from T_Person) as t where t.nub>=6 and t.num<=8

 

去掉重复数据:distinct

select distinct * from T_Person

去掉检索结果中完全相同的两条数据,如果两条数据中只有部分列相同,则不算是重复的数据

日期函数:

获取当前日期:getdate() 

返回日期的特定部分:datepart(datepart,date)例如:返回当前日期的月份datepart(m,getdate())

计算增加以后的日期:dateadd(datepart,number,date) 例:计算三天前的日期dateadd(d,-3,getdate())

计算两个日期之间的差额:datediff(datepart,startdate,enddate)例如: DATEDIFF(D,'2012-3-3','2012-3-31')结果为28

 

数字函数:

求绝对值:abs()

舍入到最大整数:ceiling(),ceiling的中文意思是天花板,就是往上、往大数舍入

例如:ceiling(3.14)值为4,celing(-3.14)值为-3

舍入到最小整数:floor(),floor的中文意思是地板,就是往下、往小数舍入

例如:floor(3.14)值为3,floor(-3.14)值为-4

四舍五入:round(,) 例如:round(3.1415,3)值为3.142,round(3.1415,2)值为3.14

字符串函数:

计算字符串长度:len() 

转换大小写:lower(),uper()

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

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

去字符串中的子字符串:substring() 例如:substring('abcdefg',2,3)结果为bcd

类型转换函数:

cast(expression as int)

convert(int,expression)

right(expression,3)显示表达式右边3位

left(expression,3)显示表达式左边3位

空值处理函数:

isnull(expression,value)如果expression的值不为空,则显示expression,若为空,则显示value

例如:select isnull(name,'佚名') from t_person 姓名不为空显示姓名,为空显示佚名

case语句:

用法一:类似swith语句

select name,course,

(case grade

when 'A' then '优秀'

when 'B' then '良好'

when 'C' then '及格'

else '不及格'

end

) from t_course

用法二:类似if语句

(case

when age>=18 then ‘成年人’

when age<18 then ‘未成年’

end



---------------------- Windows Phone 7手机开发.Net培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息