Sqlserver 实际开发中常见的数据库操做增删改查----增

      注意我说的常见查询,可不是简单到一个表得增删改查,作过实际开发得人都知道,在实际开发中,真正牵扯到一个表得增删改查只能说占很小得一部分,大多都是好几个表的关联操做的。前端

    下面我就说一下我在实际开发中常常用到得一些增删改查方式。(首先我还要说一下,就是我虽然能写,可是我不知道这种查询方式叫什么类型查询,毕竟数据库这块之前都没干过,作.net开发也就一年左右,你们看我写的博客也会知道,之前搞前端U3D游戏开发的,不接触数据库,取数据调后台接口就好了,其余不用管。因此没作.net前,我也就是会大学时候学的简单的那种增删改查。从作.net 开始我是前端,后台,数据库都干,数据库学习实践了一年,虽然如今写存储过程逻辑代码彻底没问题,可是确实是只知道这么用没问题,殊不知道叫什么。因此我只能写用法了,至于叫什么,鬼知道!)sql

    先建几个测试表再说:数据库

   

--咱们就以院系,班级,学生来举例。
create TABLE [dbo].YuanXi ( Id
int IDENTITY(1,1) NOT NULL,--学校id 自增量
YuanXiName varchar(50) null, --院系名字
)
 create TABLE [dbo].Class
  (
   Id int IDENTITY(1,1) NOT NULL,--班级id 自增量
YuanXiID int null,--院系id
ClassName varchar(50) null --班级名字 )
 create TABLE [dbo].Student
  (
   Id int IDENTITY(1,1) NOT NULL,--学生id 自增量
ClassID int null,--班级id
StudentName varchar(50) null,--学生姓名
 )
--这个表是图片表,我临时加的,后面可能用这个演示 
create TABLE [dbo].PathImg (
Id int IDENTITY(1,1) NOT NULL,--学校id 自增量
TableName varchar(50) null, --这个是代表,好比我要在信息工程学院价格图片,那就要在改表中把XuanXi表的表名子加上,还有信息工程学院的id加上
TableNameId int null,--这个就是某一个表中的某一个id
Path varchar(50) null, --存放班级照片路径的 )
 

随便添加数据:学习

 

 

 

 

 

 

  增删改查嘛,首先所增吧!测试

增的时候大多数都是一个表,可是也有两个表的:spa

 1,简单的只涉及一个表的:.net

    好比我要增长要给院系code

    

 
--这里要说一下,关于Id列,这是自增项,插入数据的时候不须要插入这列,由于这列会本身增长,也就是说你插入一列,他就会自动插入一个增量数字。若是作插入操做的时候加上这列,
--就会报错的。
insert into Yuanxi(YuanXiName)values("艺术学院")

2,多表插入:blog

   好比,我在添加班级的时候,页面上让你上传班级的一些图片内容。那这个时候就牵扯到两个表了。一个是班级表,一个是通用图片表了。接口

   在页面上填写全部内容,上传好图片后,点击提交,那么数据就要作这些:

  

--首先在班级表中插入数据,对了,这个YuanXiID 通常是在编辑的时候要你选的一个下拉框,由于你前面已经添加了院系,否则你怎末添加班级

insert
into Class(YuanXiID,ClassName) values (1,'信息工程学院')
--而后在图片表中插入你上串的图片
--这里要注意,不要先作插入图片操做,由于你在没插入班级的时候,是没有这个班级id的,那么若是你先插入图片的话就找不到班级id了。
--因此你要先找到你刚才插入的班级id,怎末找呢,根据上面你提交的内容,好比院系id和班级名称,注意一个院系的班级名称是不能重复的,就好像咱们登录的时候的用户名同样,通常不容许重复的。因此他是惟一的。
--那这样就好找班级Id了。
select Id from Class where YuanXiID=你填写提交后拿到的院系id and ClassName=你填写提交后拿到的班级名字
--插入图片,
insert into PathImg(TableName,TableNameID,Path) values('Class',2,'/upfile/ClassImg/02')
看着上面的两步操做很麻烦,那就合并好了。
  insert into PathImg(TableName,TableNameID,Path) values('Class',select Id from Class where YuanXiID=你填写提交后拿到的院系id and ClassName=你填写提交后拿到的班级名字,'/upfile/ClassImg/02')
--实践证实,这样作是没问题的。。、

像这样的通常都会写个存储过程,一个就搞定很方便。

USE [TestData]
GO
/****** Object:  StoredProcedure [dbo].[AddBJ]    Script Date: 2019/11/1 星期五 17:01:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[AddBJ]
@YuanXiID int, --院系id
@CassName varchar(30)--班级名字
@Path varchar(100) --图片路径
AS
--插入班级表
insert into Class(YuanXiID,ClassName) values
(
@YuanXiID,
@CassName
)
--插入图片表
insert into PathImg(TableName,TableNameID,Path) values(
'Class',
select Id from Class where YuanXiID=@YuanXiID and ClassName=@CassName,
@Path
)
 

 

插入数据基本上也就这些,中间可能会变成要插入3个或者四个表,但都大致上同样。

  对了,忘了还有一种插入方式有必要说一下:

 这种就叫查询插入方式吧:

   就是我要在一个表中取出某几列数据,插入在另外一个表中

   好比我要插入2列,要从A表中取出   a列,b列  放到B表中 m列,n列。这里B表的列数两中状况:(注意:A表中的两列和B表中的两列数据类型同样要相同,就算不一样,插入的时候必定要转化成同一种数据类型)

 1,B表就两列:

       insert into B表(m,n)  select  a列,b列 from A表(注意,有查询条件的话在后面where 查询条件加上就好了)

 2,B表大于两列,已三列为例:(这种状况通常都是,其余列数据无关紧要的状况下,就以第三例为int型,直接给默认值0就好了)

       insert into B表(m,n,0) select  a列,b列,0  from A表(注意,有查询条件的话在后面where 查询条件加上就好了)

 

插入操做,掌握这些,至少插入数据方面基本上能应付实际项目开发了。

好了,今天就先写一下插入操做了,至于后面的删,改,查后面在写吧!sql代码是手动敲的,可能会有错误,请谅解。

相关文章
相关标签/搜索