学习 SQL Server (6) :内置函数,触发器

时间:2020-06-19 15:01:00 来源:互联网 作者: 神秘的大神 字体:

------ 【重点】====================== 内置函数 ===============================

-- 1. 字符串方法

--Left(): 返回字符串从左开始数,指定数量的字符串
select left('的事撒大大多大多所',4)
select left('的事撒大大多大多所',4)+'...'


--Right():返回字符串从右开始数,指定数量的字符串
select right ('的事撒大大多大多所',4)


--Ltrim():去左边的空格
select '==='+LTRIM(' I Love You ')+'==='


--Rtrim():去左边的空格
select '==='+RTRIM(' I Love You ')+'==='


--同时去掉左右空格 ltrim(rtrim()) 【易错题】
select '==='+RTRIM(ltrim(' I Love You '))+'==='


--substring:截取字符串 第一个参数:字符串本身 , 第二个参数从哪开始截取(从1开始),包含从哪开始的字符, 第三个参数:截取几个
select substring('八维红叶物联网学院专业阶段',4,5) ----烨物联网学


--str : 把其他类型的信息转为字符串
declare @s int
set @s =123
select str(@s)+'456'


--Lower() 字母变小写
select lower('Hello Word')

--Upper() 字母变大写
select upper('Hello Word')


-- len() 求字符串长度 字母 数字 汉子 其他符号都算1
select len('123456')

select len(ltrim(' 123456'))

 


--- 2. 数学函数

-- 绝对值: abs() 所有数的绝对值
select abs(-5)


--求算数平方根:sqrt()
select sqrt(2)


--四舍五入:round(数字,保留的小数位置)
select round(3.1415929,3)


--随机数 rand() 默认随机0-1之间的小数
select rand()


select round(rand() * 100000,0)

 


-- 3. 时间日期函数

-- getdate() 获取当前系统日期
select getdate()


-- 显示当前时间 格式是xxx年xx月xx日
select str(year(getdate()))+'年' + str(month(getdate()))+'月'+str(day(getdate()))+'日'


-- datediff() 计算时间的差值 三个参数
select datediff(day,'2020-1-1','2019-10-21')

 

 

 

 

 

 


------=-========================  触发器=======================-----------------

--创建一个数据库
create database Unity16

use Unity16


--建表1--学生表
create table Students
(
Id int primary key identity, --编号
UserName varchar(10) not null, --姓名
UserAge int not null --年龄
)


--建表2--学生统计表(统计添加学生的数量)
create table Students_count
(
Counts int
)


insert into Students_count values(0)

select * from Students
select * from Students_count

 

----------------- 插入触发器 -------------------

--create trigger 触发器名
--on 表名
--after 触发器种类
--as
--begin
-- 触发器代码
--end


--第1步 创建触发器
create trigger xx
on Students
after insert --触发器种类 inert 触发器时机 after 之后触发
as
begin
update Students_count set Counts=Counts+1
end

--第2步 使用触发器
insert into Students values('张三',19)
insert into Students values('老王',39)


--删除触发器
drop trigger xx

 

----------------- 删除触发器【之后】 ------------------
--创建delete触发器,实现:删除学生的时候,同时减少学生人数
create trigger del_stu
on Students
after delete
as
begin
update Students_count set Counts=Counts-1
end

--使用
delete from Students where UserName='老王'

 


----------------- 修改触发器 【之后】 -----------------------------
create trigger upd_stu
on Students
after update
as
begin
print'修改前的数据'
select * from deleted
print'添加前的数据'
select * from inserted
end

update Students set UserName='小雨',UserAge=25 where id=5

 

作者还在学习中,发现错误的请在评论区留言。  如果有客友觉得文章还行的话,请点波推荐哦*。 谢谢你们!!