注意我說的常見查詢,可不是簡單到一個表得增刪改查,作過實際開發得人都知道,在實際開發中,真正牽扯到一個表得增刪改查只能說佔很小得一部分,大多都是好幾個表的關聯操做的。前端
下面我就說一下我在實際開發中常常用到得一些增刪改查方式。(首先我還要說一下,就是我雖然能寫,可是我不知道這種查詢方式叫什麼類型查詢,畢竟數據庫這塊之前都沒幹過,作.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代碼是手動敲的,可能會有錯誤,請諒解。