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代碼是手動敲的,可能會有錯誤,請諒解。

相關文章
相關標籤/搜索