数据库中的子查询和视图以及存储过程

时间:2021-09-22 13:58:51

---查询所有内容
select * from T_Product
---
删除重复行distinct
select distinct T_Product.P_Id,T_Product.p_Name from T_Order inner join T_Product on T_Order.P_Id=T_Product.P_Id
---子查询
select O_Id,o.O_Numb,o.P_Id,o.O_Date from T_Order o where o.P_Id in(select p.P_Id from T_Product p where p.p_Name='螺丝' or p.p_Name='钉子' )
---查询最近时间的订单信息,根据子查询查出日期
---order by 是排序,desc是降序,asc是升序,TOP 子句用于规定要返回的记录的数目。top 后可以写数字表示选出前几个,top后也可以写百分数
select * from T_Order where O_Date= (select top 1 O_Date  from T_Order order by(O_Date) desc)

----在数据库中进行类型转换 cast方法格式
select '产品编号:'+ CAST(p.P_Id as varchar) as P_Id from T_Product p
----第二种方法 convert方法不仅可以进行数据转换而且可以制定日期的格式
select '产品编号:'+CONVERT(varchar,p.P_Id) from T_Product p
select'订单日期:'+CONVERT(varchar,o.O_Date,111) as O_Date from T_Order o
----创建视图
go
create view student_vw
as
select s.Stu_Name,s.Stu_Age  from T_Student s
-----查看视图
select * from student_vw   


--创建简单存储过程
go
create proc InsertUser_pro
as
insert into T_Student(Stu_Name,Stu_Mobile,Stu_Age,Stu_Address,Stu_Email)
values('小李','345465','20','保定','12345678@qq.com')
--创建带输入参数的存储过程
go
create proc InsertUser_pro
@name varchar(16),
@mobile varchar(16),
@age int,
@address varchar(32),
@email varchar(16)
as
insert into T_Student(Stu_Name,Stu_Mobile,Stu_Age,Stu_Address,Stu_Email)
values(@name,@mobile,@age,@address,@email)
 ----调用带参数的存储过程
 exec InsertUser_pro '王五','1233556',15,'邢台','wangwu@163.com'
 

在创建视图和存储过程时,在其语句前需要有go关键字。

何时使用视图
1)有些数据不想给对方,但是又不想让对方知道你不想给,所以干脆做个视图,视图的明明尽量像一张表的名字。
2)简化查询,将复杂的查询放到视图中,以后就查询这个视图就可以了。

5.表中数据发生变化,视图中也会随之更新,但是视图中的数据发生变化,表中数据不一定就会发生,比如更改的视图是连接查询的结果,而且更改的字段在多张表中都有,则只有一张表的字段值会更改,其余的不变化。