注意我說的常見查詢,可不是簡單到乙個表得增刪改查,做過實際開發得人都知道,在實際開發中,真正牽扯到乙個表得增刪改查只能說佔很小得一部分,大多都是好幾個表的關聯操作的。
下面我就說一下我在實際開發中經常用到得一些增刪改查方式。(首先我還要說一下,就是我雖然能寫,但是我不知道這種查詢方式叫什麼型別查詢,畢竟資料庫這塊以前都沒幹過,做.net開發也就一年左右,大家看我寫的部落格也會知道,以前搞前端u3d遊戲開發的,不接觸資料庫,取資料調後台介面就行了,其他不用管。所以沒做.net前,我也就是會大學時候學的簡單的那種增刪改查。從做.net 開始我是前端,後台,資料庫都幹,資料庫學習實踐了一年,雖然現在寫儲存過程邏輯**完全沒問題,但是確實是只知道這麼用沒問題,卻不知道叫什麼。所以我只能寫用法了,至於叫什麼,鬼知道!)
先建幾個測試表再說:
--我們就以院系,班級,學生來舉例。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, --存放班級**路徑的)
增刪改查嘛,首先所增吧!
增的時候大多數都是乙個表,但是也有兩個表的:
1,簡單的只涉及乙個表的:
比如我要增加要給院系
--這裡要說一下,關於id列,這是自增項,插入資料的時候不需要插入這列,因為這列會自己增加,也就是說你插入一列,他就會自動插入乙個增量數字。如果做插入操作的時候加上這列,2,多表插入:--就會報錯的。
insert
into yuanxi(yuanxiname)values("藝術學院")
比如,我在新增班級的時候,頁面上讓你上傳班級的一些內容。那這個時候就牽扯到兩個表了。乙個是班級表,乙個是通用表了。
--首先在班級表中插入資料,對了,這個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
goset quoted_identifier on
goalter
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**是手動敲的,可能會有錯誤,請諒解。
SQL Server 增刪改查基礎
主鍵為自增時可不填寫 插入單條資料 insert into product values 008 原子筆 辦公用品 100,null,2019 11 11 insert into product select 008 原子筆 辦公用品 100,null,2019 11 11 插入多條資料 inser...
Sql server 實現增刪改查
vs2008 c sql server csharp view plain copy using system.data.sqlclient csharp view plain copy sqlconnection conn csharp view plain copy 連線資料庫 private ...
Sqlserver 增刪改查 改
我們就以院系,班級,學生來舉例。create table dbo yuanxi id int identity 1,1 not null,學校id 自增量 yuanxiname varchar 50 null,院系名字 create table dbo class id int identity 1...