这次日记主要总结一下一些常用基础的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培训、期待与您交流! ----------------------