黑马程序员__SQL学习笔记
来源:互联网 发布:什么软件可以算命 编辑:程序博客网 时间:2024/05/17 07:48
---------------------- 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培训、期待与您交流! ----------------------
- 黑马程序员__SQL学习笔记
- 黑马程序员__SQL Server常见数据类型比较
- as 的用法(就是起别名)__sql学习笔记
- 黑马程序员---学习笔记
- 黑马程序员----学习笔记
- 黑马程序员----学习笔记
- 黑马程序员---学习笔记
- 黑马程序员------IO学习笔记
- 黑马程序员-javaIO学习笔记
- 黑马程序员---反射学习笔记
- 黑马程序员--多线程学习笔记
- 黑马程序员 学习笔记1
- 黑马程序员 学习笔记2
- 黑马程序员--Jquery 学习笔记
- 【黑马程序员】js(学习笔记)
- 【黑马程序员】Dom(学习笔记)
- “黑马程序员”学习笔记三
- “黑马程序员”学习笔记四
- js "include"其他js / css 文件
- Role-based access control continue 1
- 关键词汇
- 热烈祝贺惠州学院翰墨缘书法协会第十三届书法作品展圆满成功!
- input输入框内的提醒方式
- 黑马程序员__SQL学习笔记
- 第一章 概念 和 工具
- en
- 回车键兼容ff的处理-event问题
- ff下,select组件,f5之后,select里的值未更新到默认值
- Ubuntu 下目录架构
- 快速排序
- 元素获得焦点focus()的问题
- io流中的输入,读取文件中的字节