黑马程序员---SQL入门学习总结

6 篇文章 0 订阅
1 篇文章 0 订阅
---------------------- android培训java培训、期待与您交流! ----------------------



这次日记主要总结一下一些常用基础的SQL语句,比如创建表、数据排序等。

一、创建表--- create 

create table Person (ID int not null primary key,Name nvarchar(50),Age int null)” 

     表名     列名  列数据类型  

not null”是表示该列中数据必须是非空,只有非空的列才能做主键。

null”表示可以为空,可以省略。

primary key”表示设主键,还有其他设主键SQL比如 create table Person1 (ID int not null,Name nvarchar(50),Age int, primary key(id)),放在后面也行。

二、数据插入---insert 

insert into Person1 (ID,Name,Age)values(1,'lily',20)

into 可省。

三、数据更新---update 

update Person1 set Age=18  where ID>=2

修改后的数据   要修改的位置

四、删除数据---delete 

delete from Person1 where ID=2

五、数据检索---select 

select * from Person1 where Age<20

"代表了所有列,如果单独查找满足条件的行的姓名,可以换成Name;还可以用聚合函数来计算结果,比如计算最高年龄select MAX(Age) from Person1

给查找出来的数据指定列名用“as”如: select MAX(Age) as 最高年龄 from Person1

六、数据排序---order by

select * from Person1
order by Age Desc

Desc "这是按照年龄降序排序(从大到小),升序排序(从小到大)用Asc "。

如果需要用where对要排序的数据进行筛选,把where语句放在select句和 order by之间。

七、通配符过滤---like

单字符:用半角下划线“_”,如查询以任意字符开头剩余为“om”。

select * from Person1    where Name like '_om'

多字符:半角“%”如,如查询名字包含“l”的员工信息。

select * from Person1    where Name like '%l%'

八、空值处理---null

常见错误:select * from Person1   where Name=null   虽然系统不报错,但是结果为空

正确:select * from Person1   where Name  is  null    这是查找名字为空的数据,查找不为空的 把“is”改为 “is not”

Isnull()函数,把列中为null的位置显示为指定数据。例:Isnull(Name,N'匿名')

九、查找多值

select * from Person1    where Age=23 or Age=18 or Age=22    等价于  select * from Person1   where Age in (23,18,22) 后者看起来方便比较容易看明白。

select * from Person1    where Age>=20 and Age=<30  等价于  select * from Person1    where Age between 20 and 30 常用的是前者表达式容易看,可变性强。

十、数据分组---group by

select Age,COUNT(*) as 数量 from Person1 
group by Age

说明:没有出现在group by语句中的列是不能放到select语句的列名列表中的(聚合函数除外)如,Age

如果换成

select Age,Name,COUNT(*) as 数量 from Person1 

group by Age,Name

就表示只有Age,Name全相同才能分到一组。

对要分组的数据进行筛选用where(对分组前的信息,放在group by前面,聚合函数不能出现在where中)和having(对分组后的信息过滤,放在group by后面,能用的列和select中能用的列一样),如

select Age,Name,COUNT(*) as 数量 from Person1 

group by Age,Name

having COUNT(*)>1

十一、限制结果集行数---top

select top 2 * from Person1
order by Age desc

这是去年龄最大的两个,过程:按年龄降序排然后取前两个

十二、去掉数据重复---distinct

select distinct Name from Person1  输出表中所有名字(无重复)

distinct可接多项,它会把这几项完全重复的去掉。

十三、增加列--alter

alter table person1 add Salary int null

十四、两个查询结果合并---union

select......................

union all

select......................

说明:上下列数要相同,类型相容。union:又重复会合并,union all:不会合并(建议用,不用扫描是否重复,效率高)

多用于合计,集成信息:(最大年龄,最高工资......合为一表)

十五、一些常用的函数

1.ABS()取绝对值

2.Lower()转换成小写

3.Upper()转换成大写

4.getdate()获得当前时间

5.dateadd(datepart,number,date)在date增加number个datepart单位时间

6.datediff(datepart,startdate,enddate)计算时间差

7.datepart(datepart,date)取出date单位为datepart的个数

注:datepart为单位date为时间(几年几月几时)

十六、类型转换

cast(被转换表达式 as 要转换的数据类型)

convert(要转换的数据类型 ,被转换表达式)


---------------------- android培训java培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值