create database lianxi  --创建数据库
go
use lianxi --引用数据库
go
create table xs  --插入表格
(
  code int not null,  --写入内容
  name varchar(10),
  cid varchar(18),
  banji varchar(10),
  yufen decimal(18,2),
  shufen decimal(18,2),
  yingfen decimal(18,2),
)
go
insert into xs values(1,'张三','370322199101011234','一班',80,70,60,'男')  --写入内容
insert into xs values(1,'李四','370322199102011234','一班',81,71,61,'女')
insert into xs values(1,'王五','370322199103011234','一班',82,72,62,'男')
insert into xs values(1,'赵六','370322199104011234','一班',83,73,63,'女')
insert into xs values(1,'张三三','370322199105011234','二班',70,60,50,'男')
insert into xs values(1,'李四四','370322199106011234','二班',71,61,51,'女')
insert into xs values(1,'王五五','370322199107011234','二班',72,62,52,'男')
insert into xs values(1,'赵六六','370322199108011234','二班',73,63,53,'女')
insert into xs values(1,'张三张','370322199109011234','三班',60,50,40,'男')
insert into xs values(1,'李四李','370322199110011234','三班',61,51,41,'女')
insert into xs values(1,'王五王','370322199111011234','三班',62,52,42,'男')
insert into xs values(1,'赵六赵','370322199112011234','三班',63,53,43,'女')
go
select *from xs
alter table xs add [xingbie]char(10) --添加列
go
select *from xs
alter table xs drop column [xingbie] --删除列
select *from xs


--模糊查询 like
select *from xs where name like'%李%'
select *from xs where name like'王_'
select *from xs where name like'_[张三,李四,王五]'
--排序 order by
select *from xs order by yufen asc
select *from xs order by yufen desc
select top 2*from xs where name like'%王%' order by yingfen desc


--聚合函数
--平均值
select AVG(yufen) from xs where banji='一班'
--求个数
select COUNT(*)from xs where banji='三班'
--最大值
select MAX(yufen)from xs
--最小值
select MIN(yufen)from xs
--求和
select SUM(yufen) from xs where banji='二班'


--分组 group by
select banji from xs group by banji
select banji,count(*)from xs where yufen>60 group by banji order by COUNT(*) desc
--having 只能跟在group by 后边
select banji,count(*)from xs where yufen>60 group by banji having COUNT(*)>2

--数学函数
--绝对值
select ABS(-8)

--取上线 、下线
select CEILING(3.14)
select FLOOR(3.14)

--几次方
select POWER(2,3)

--平方
select SQUARE(4)

--平方根
select SQRT(4)

--四舍五入,逗号之后代表小数点后有几位
select ROUND(25.52,1)


--字符串函数

--字符串转换为编码
select ASCII('a')
--只转换开头
select ASCII('abc')
--编码转化为字符串
select CHAR(97)

--查看第一次出现的索引号 返回值为0,表示没有找到
select CHARINDEX('cd','abcdefg')

--字符串的拼接
select 'a'+'b'+'c'

--从前面截取多少个长度 后面截取多少个长度
select LEFT('abcdef',2)
select RIGHT('abcdef',2)

--计算字符串的长度 前面的长度计算,后面的长度不算
select LEN(' abc')

--转换为大写 转换为小写
select UPPER('abc')
select LOWER('ABC')

--去掉前边的空格 去掉后边的空格
select LTRIM(' a')
select RTRIM(' a ')

--返回首次出现字符的索引
select PATINDEX('%abc%','abcdefg')

--替换 第一个位置填写要替换的内容的位置,第二个位置填写要更换的内容,第三个位置填写更换后的内容
select REPLACE(name,'张三','三张')from xs

--复制 需要复制的内容,复制的次数
select REPLICATE('ABC',2)

--翻转字符串
select REVERSE('abc')

--打印空格
select 'a'+space(5)+'b'

--STR 将小数转化为字符串
--参数一是原字符处,参数二是字符串的长度,参数三是j截取的小数点后的长度,小数点占有一个长度
select STR(2222.22,5,1)

--STUFF 插入字符串
--参数一是原字符串,参数二是索引从第几位开始,参数三是向后删除几位,参数四是插入的字符串
select STUFF('123abc',4,3,'hello')

--SUBSTRING 从指定的字符串中截取指定的长度
--参数一是原字符串,参数二是截取字符串开始的索引,参数三是截取的长度
select SUBSTRING('abcdefg',3,1)

--时间日期函数
--系统常量,直接返回一个值
select @@DATEFIRST

--DATEADD 参数一是增加的项,参数二是增加的量,参数三是增加的基准
select DATEADD(YEAR,8,'2016-8-8')
select DATEADD(MONTH,8,'2016-8-8')
select DATEADD(DAY,8,'2016-8-28')

--DATEDIFF 计算两个日期的时间间隔
select DATEDIFF(YEAR,'2008-8-8','2016-8-31')
select DATEDIFF(MONTH,'2008-8-8','2016-8-31')
select DATEDIFF(DAY,'2008-8-8','2016-8-31')

--DATENAME 返回指定的的时间类型
select DATENAME(DAY,'2008-8-8')
select DATENAME(WEEK,'2016-2-1') --今年的第几周
select DATENAME(WEEKDAY,'2016-8-31')

--DATEPART 等同于DATENAME,区别是datename返回的是字符串,datepart返回的是int类型
select DATEPART(WEEKDAY,'2016-8-31') --1是星期天,7是星期六

--返回一个整数,返回该日期的年、月、日
select year('2016-8-31')
select month('2016-8-31')
select day('2016-8-31')

--获取本地时间
select GETDATE() --不需要参数
--获取系统的精确时间
select SYSDATETIME()

--判断时间日期格式是否正确
select ISDATE('2008-8-31') --正确返回1,错误返回0

 

--数据、函数转换转换
--cast (as前边写原数据类型,as后边写转化后的数据类型)
select CAST(123 as varchar(20))
--convent(前边写转化后的数据类型,后边写转化前的数据)
select CONVERT(int,'123')