日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

ADO SQL數(shù)據(jù)庫(kù) 筆記匯總

 昵稱(chēng)10504424 2012-08-03

ADO技術(shù)

ADO連接數(shù)據(jù)庫(kù)

1)       獲取連接字符串

  方式一: 記住連接字符串

          connectionString=" Integrated Security=True; server=. ; database=DBName"

  方式二:visual studio,點(diǎn)擊視圖à服務(wù)資源管理器à右擊左側(cè)的數(shù)據(jù)連接”,選擇                     添加連接à服務(wù)名: 為一個(gè)點(diǎn).選擇數(shù)據(jù)庫(kù)名,然后點(diǎn)擊高級(jí)”,然后復(fù)制底部的連接字符串

2)       web.config中配置連接字符串

  <connectionStrings>

    <addname="SQLconnectionStr"connectionString="Data Source=.;Initial Catalog=NetShopDB;Integrated Security=True"providerName="System.Data.SqlClient"/>

  </connectionStrings>

 

3)       DAL層新建SqlConnection類(lèi),包含靜態(tài)方法:

  記得先添加Configuration引用和 using System.Configuration;命名空間

       public static string getConnectionStr()

       {

            return ConfigurationManager.ConnectionStrings["SQLconnectionStr"].ToString();

       }

4)       DAL層其他類(lèi)中調(diào)用getConnectionStr()靜態(tài)方法

  string conStr= SqlConnection.getConnectionStr();

 

DAL層執(zhí)行SQL語(yǔ)句的方法

ADO操作SQL語(yǔ)句:方式一

        public List<student> getData1(string myid, string myname)

        {

            //這里用using靈活方便,用完con不需手動(dòng)關(guān)閉,會(huì)自動(dòng)關(guān)閉當(dāng)前連接

             using(SqlConnection con=new SqlConnection(conStr) )

             {

                 //打開(kāi)連接

                 con.Open();

                 string cmdStr = "select * from ns_user where userID=@myid and userName=@myname";

                 SqlCommand cmd = new SqlCommand(cmdStr,con);

                 //這里用參數(shù)序列化防止注入式攻擊

                 cmd.Parameters.Add(new SqlParameter("@myid", myid));

                 cmd.Parameters.Add(new SqlParameter("@myname", myname));

                 //執(zhí)行查詢(xún),并返回查詢(xún)所返回的結(jié)果集中第一行的第一列。忽略其他列或行

                 //object myResult = cmd.ExecuteScalar();

                 // 對(duì)連接執(zhí)行 Transact-SQL 語(yǔ)句并返回受影響的行數(shù)。(負(fù)責(zé)執(zhí)行語(yǔ)句, 例如增insert,delete,update)

                 //int ResultRowCount = cmd.ExecuteNonQuery();

                 SqlDataReader sdr = cmd.ExecuteReader();

                 List<student> ls = new List<student>();

                 while (sdr.Read())

                 {

                     student s = new student();

                     s.Sid = sdr["sid"].ToString();

                     s.Sname = sdr["sname"].ToString();

                     ls.Add(s);

                 }

                 return ls;

             }

        }

Dataset(記得)

        #region  獲取教師的詳細(xì)信息

        public DataSet GetTeacherInfo()

        {

            using (SqlConnection conn = new SqlConnection(dbapp))

            {

               SqlDataAdapter sda = new SqlDataAdapter("select  * from  table1  ", conn);

               DataSet ds = new DataSet();   //定義一個(gè)表的集合

                sda.Fill(ds, "teacher");

                return ds;

            }

          

        }

               #endregion

 

 

ADO操作存儲(chǔ)過(guò)程:

       #region

        public int UserCheck(string userID,string userName)

        {

            using(SqlConnection con=new SqlConnection (conStr))

            {

                con.Open();

                SqlCommand cmd = new SqlCommand();

                cmd.CommandText = "sp_MYLogin";  //sp_MYLogin是存儲(chǔ)過(guò)程名稱(chēng)

                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Connection = con;

 

                //為存儲(chǔ)過(guò)程賦值

                //賦值方式一(賦第一個(gè)值括號(hào)里面的 "@name"必須和存儲(chǔ)過(guò)程里的"@name"一模一樣)

                cmd.Parameters.Add(new SqlParameter("@userID", userID));

 

                //賦值方式二(賦第二個(gè)值)

                SqlParameter pwd = new SqlParameter("@pwd", SqlDbType.NVarChar, 50);

                pwd.Value = userName;

                pwd.Direction = ParameterDirection.Input;

                cmd.Parameters.Add(pwd);

                //定義一個(gè)變量來(lái)接受存儲(chǔ)過(guò)程的返回值

                SqlParameter result = new SqlParameter("@return", SqlDbType.Int);

                result.Direction = ParameterDirection.ReturnValue;

                cmd.Parameters.Add(result);

 

                cmd.ExecuteNonQuery();  //執(zhí)行存儲(chǔ)過(guò)程

 

                //取得SQL變量@result中存放的存儲(chǔ)過(guò)程的返回值

                int num = Convert.ToInt32(cmd.Parameters["@return"].Value); //Parameters是一個(gè)集合["@return"]就是他的索引

                return num;

            }

        }

     #endregion

錯(cuò)誤日志

catch (Exception ex)

            {    //錯(cuò)誤日志

                error.ErrorWrite("UserInsert", ex.Message, DateTime.Now.ToString());

                return null;

            }

 

數(shù)據(jù)庫(kù)技術(shù)

建修庫(kù)表

建庫(kù)語(yǔ)句

create database student   --創(chuàng)建的數(shù)據(jù)庫(kù)名稱(chēng)

on primary ---指定數(shù)據(jù)文件的各個(gè)參數(shù)

(

name='studnet3_data', --所有的字符串都以' 間隔

filename='E:\lx\student4_data.mdf',  --文件名包含路徑和名字.擴(kuò)展名

size=3MB,  ----默認(rèn)大小,如果不寫(xiě)大小,則默認(rèn)是MB

maxsize=100MB, ----最大容量

filegrowth=1MB ---自動(dòng)增長(zhǎng)量/擴(kuò)容,如果為,則不自動(dòng)擴(kuò)容

)

 

log on -----日志文件的各個(gè)參數(shù)

(

name='student5_log',

filename='E:\lx\student4_data.ldf',

size=1MB,

maxsize=10MB,

filegrowth=10%   --10%是最大容量的%)

)

 

sp_helpdb student  ---查詢(xún)數(shù)據(jù)庫(kù)名稱(chēng)

sp_renamedb student,stu  --重命名數(shù)據(jù)庫(kù)

drop database student    --刪除數(shù)據(jù)庫(kù)

 

 

建表語(yǔ)句

 

drop table person    --刪除表

create table person  --創(chuàng)建表

(

   ---注意:下面是屬性(字段名稱(chēng))在前,數(shù)據(jù)類(lèi)型在后

ID int primary key   identity(2,1)  not null,   -- primary key是設(shè)置主鍵,保證該列值唯一且不為空,identity(2,1)起始值是,步長(zhǎng)為

Name nvarchar(10) not null,      ---not null是指不能為空

Sex bit not null,    --bitbool類(lèi)型

age int default 18 , -- default 18是指自動(dòng)取默認(rèn)值

scroe decimal(4,1) check(score<=100)  --4指小數(shù)點(diǎn)前后加起來(lái)總共位,代表小數(shù)點(diǎn)后位數(shù)  check是檢查限制約束

cardid int unique    --unique 指唯一鍵,在表中有多列數(shù)據(jù)需要保證唯一時(shí)除了主鍵以外的列需要設(shè)置為唯一列

)

 

對(duì)表的操作

修改表結(jié)構(gòu),添加刪除約束

alter table person   --修改表結(jié)構(gòu)

   --add NameID int  --添加屬性\字段NameID,添加列

   --drop column NameID  --刪除列

 

   --alter column ID int not null  ---添加字段不為空

   --add constraint 約束名(pk_表名_列名| pk_列名)

   --add constraint pk_ID     primary key(ID)     --修改表時(shí)添加主鍵約束

   --add constraint ck_score  check(score<150) --修改表時(shí)添加檢查約束

   --add constraint uk_cardi  unique(cardid)  --修改表時(shí)添加唯一鍵約束

   --add constraint df_age default 19 for age --修改表時(shí)添加默認(rèn)約束

   --drop constraint CK__person__score__15502E78  --刪除約束(格式:drop constraint 約束名)

修改表信息,(insert) (delete) (update) (select)

--添加記錄<insert 表名values(參數(shù))>     <1>字符串或日期類(lèi)型加''  <2>bit用或 <2>自動(dòng)增長(zhǎng)列不需要添加值

 insert person values(12,'wang',0,23,32,34)

 insert person(sex,age,cardid) values(0,23,32)   --有選擇性的插入數(shù)據(jù)((sex,age,cardid) )指要手動(dòng)添加的數(shù)據(jù)

 

 --修改記錄 <update 表名set 修改對(duì)象where 條件>           <1>修改多個(gè)字段,中間以逗號(hào)間隔

 update person set age=19,sex=0  where ID=1

 update person set age=19,age=12  where ID=2  ---<1>

 update person set age=19+1  where ID=2       ---修改信息時(shí)進(jìn)行算術(shù)運(yùn)算

 update person set age=19+1   --如果不寫(xiě)where,則對(duì)所有數(shù)據(jù)進(jìn)行修改

 

 update person set age=SUBSTRING(age,1,1) where ID=1  --substring 是字符的截取

 

 --刪除記錄< delete 表名where  條件>  (如果不加where則刪除所有記錄)

 delete person where ID=1

 

對(duì)表的查詢(xún)

單表查詢(xún)

select * from tableName  --查找顯示整個(gè)表(所有列)

select列名1,列名2 from tableName  --顯示部分列

select列名1='編號(hào)',列名2='品牌' from Product1 --把其中一列的信息統(tǒng)一修改

 

--修改顯示時(shí)列標(biāo)題(方法一)

select '編號(hào)'=ProCode,'品牌'=ProTypeName from Product1  

--修改顯示時(shí)列標(biāo)題(方法二)

Select 列名1 '編號(hào)',列名2 '品牌' from Product1  

 

--顯示時(shí)對(duì)列進(jìn)行算數(shù)運(yùn)算, 顯示時(shí)添加列

select列名1,列名2,列名3*0.5 '打折后',Number from Product1 

 

select distinct 列名1  from tableName  --顯示時(shí)刪除該列的重復(fù)行

select top 3 * from Product1  --顯示前三列

select top 50 percent * from Product1  --顯示總行數(shù)的前%

--and是并且, or是或者 , 條件非: not 列名=’   

select * from tableName where Number=15 and not age=12 and Name='aa' or sex=1

--查找score范圍為0100的數(shù)據(jù)

select * from Product1 where  score<100 and score >=1

select * from Product1 where  score between 1 and 100

--in,not in (包含不包含)  以下都是查找number為,,的數(shù)據(jù)

select * from Product1 where  Number=10 or Number=15 or Number=20

select * from Product1 where  Number in(10,15,20)

select * from Product1 where not Number in(10,15,20)

--<1>like模式匹配符%可以代替任意個(gè)數(shù)量的字符<2>  _可以代替一個(gè)字符 <3>[]是一個(gè)查找范圍

select * from Product1 where ProCode like 'D%'    --查找首字母為DProCode的數(shù)據(jù)

select * from Product1 where ProCode like '_S%'   --查找第二個(gè)字符是Sprocode數(shù)據(jù)

select * from Product1 where 列名1 like '1%'   --即使是float型也要加''

select * from Product1 where 列名1 like '_4_'  --查找第二個(gè)字符是且字符個(gè)數(shù)為的3數(shù)據(jù)

select * from Product1 where 列名1 like '_[5-9]%' --查找第二個(gè)字符是59列名1數(shù)據(jù)

--查找為空,不為空的數(shù)據(jù)

select *from Product1 where proValue is not null

select *from Product1 where proValue is  null

go   --排序( desc降序    asc升序   什么都不寫(xiě)就默認(rèn)升序 )

select * from Product1 order by proValue desc    --provalue按降序排列

select * from Product1 order by proValue asc    --provalue按升序排列

select * from Product1 order by Number    --Number按默認(rèn)(升序)排列 

select * from Product1 order by Number desc,proValue asc  --第二個(gè)條件在第一個(gè)條件相同時(shí)才執(zhí)行

go  --聚合函數(shù)

select MAX(proValue)  from Product1  --查找proValue中的最大值

select min(proValue)  from Product1  --查找proValue中的最小值

select sum(proValue)  from Product1  --查找proValue中數(shù)據(jù)的和

select avg(proValue)  from Product1  --查找proValue中的平均值

select count(*)  from Product1   --查找表中的行數(shù)*也可以用列名代替

 

--group by分組wheregroup by 之前,having分組之后的篩選條件,wherehaving都是篩選條件)

--分組:可以顯示分組列的信息和分組后的信息分別進(jìn)行統(tǒng)計(jì)

select列名1,max(列名2),min(列名3) from  tableName  where proTypeName='電視機(jī)'   group by 列名1                                

select proTypeName,max(proValue),min(proValue) from Product1  group by proTypeName  having count(proValue)>1

 

 

 

多表查詢(xún)

 

 

--內(nèi)連接inner join 查詢(xún)兩表共有的信息

--from查詢(xún)列名1.Name=列名2.Name 是關(guān)聯(lián)條件(關(guān)聯(lián)條件中列的內(nèi)容要一致)

select * from tableName inner join Product2 on列名1.Name=列名2.Name

--顯示查詢(xún)后的部分列,p1.*意思是顯示p1的所有列

select p1.*,proArea,proBrand from Product1 as p1 inner join Product2 on p1.ProCode=Product2.ProCode

--Product1 as p1 意思是給Product1起了個(gè)別名p1 ,as 可以省略

select * from Product1 as p1 inner join Product2 as p2 on  p1.ProCode=p2.ProCode

--where查詢(xún),省略了as  <格式:select * from ,where 關(guān)聯(lián)條件>

select * from Product1 p1,Product2 p2 where p1.ProCode=p2.ProCode  

 

--外連接 --先顯示兩表關(guān)聯(lián)到的數(shù)據(jù),再顯示關(guān)聯(lián)不到的數(shù)據(jù)

go --<格式:select * from left\right\full outer join on 關(guān)聯(lián)條件>

select * from Product1 p1 left outer join  Product2 p2  on  p1.ProCode=p2.ProCode  --左外連接

select * from Product1 p1 right outer join  Product2 p2  on  p1.ProCode=p2.ProCode --右外連接

select * from Product1 p1 full outer join  Product2 p2  on  p1.ProCode=p2.ProCode  --全外連接

 

--交叉連接(又叫笛卡爾連接:瘋狂連接,n對(duì)n連接,沒(méi)有關(guān)聯(lián)條件)

--格式:select * from cross join

select * from Product1 cross join Product2

--自連接(自查詢(xún):是把一張表分解成兩張表來(lái)用)

select c1.*,c2.Name from ST_class c1,ST_class c2 where c1.ID=c2.Department and c1.Name='計(jì)算機(jī)學(xué)院'

--嵌套查詢(xún)

--子查詢(xún)返回多個(gè)值

select * from product1 where ProCode in(select ProCode from Product2 where proArea='北京')

select * from product1 where ProCode not in(select ProCode from Product2 where proArea='北京')

--子查詢(xún)返回一個(gè)值

select* from Product1 where  proValue=(select MAX(provalue) from Product1)

 

--子查詢(xún)返回多個(gè)值時(shí)可以用any(返回結(jié)果中的任何一個(gè)【最小的一個(gè)】)all(返回結(jié)果中的所有【最大值】)

 

--聯(lián)合查詢(xún) union all (union all連接兩個(gè)單獨(dú)的子查詢(xún))

select SNAME,SSEX,SBIRTHDAY from STUDENT union all select  TNAME,TSEX,TBIRTHDAY from TEACHER 

 

存儲(chǔ)過(guò)程

 

 

--創(chuàng)建(create)/修改(alter)一個(gè)存儲(chǔ)過(guò)程

alter proc sp_SMGetCity   ---sp_SMGetCity 是存儲(chǔ)過(guò)程的名字

(

@code nvarchar(50),   --數(shù)據(jù)類(lèi)型要和比較的字符相同

@name nvarchar(50)  output ,

@grade int=1

--'這里要注意:存儲(chǔ)過(guò)程賦初值,只能在排在最后的參量中'

---一個(gè)@ 符號(hào)是局部變量

---兩個(gè)@ 符號(hào)是全局變量

)

as

begin

select @name=Name from TBName where Code like @code+'%' and Grade=@grade     --beginend 中間是要執(zhí)行的SQL語(yǔ)句

print @name  --帶輸出參數(shù)

end

 

declare @outname nvarchar(50) -- 定義一個(gè)變量

exec sp_SMGetCity'11',@outname output   --@aa把變量賦值給輸出參數(shù),用來(lái)接收返回值

select @outname

 

sp_help sp_SMGetCity --查看名為sp_studentmanager的存儲(chǔ)過(guò)程的創(chuàng)建信息

sp_helptext sp_SMGetCity    --查看名為sp_studentmanager的存儲(chǔ)過(guò)程的創(chuàng)建代碼

drop proc  sp_SMGetCity  --刪除存儲(chǔ)過(guò)程

---------------------------------------------------------------------

 

--return只能返回整型數(shù)據(jù)

--刪除存儲(chǔ)過(guò)程drop proc sp_Name

-- exec(@aa)--執(zhí)行@aa(SQL語(yǔ)句),所以要加括號(hào),執(zhí)行字符串中的SQL語(yǔ)句

 

 存儲(chǔ)過(guò)程調(diào)用存儲(chǔ)過(guò)程

as

begin

    declare @return int

    exec @return=sp_checkUser@id,@name  --存儲(chǔ)過(guò)程調(diào)用存儲(chǔ)過(guò)程

    if @return=0

       print '沒(méi)有重復(fù),return只能返回整型'

    else

       print '用戶(hù)已注冊(cè)'

end

 

 

 

一些例子

數(shù)據(jù)庫(kù)聯(lián)查授權(quán)

alter view vw_Role

as

declare @num int

declare @title nvarchar(100)

declare @ctitle nvarchar(200)

set @ctitle=''

select  @num=count(*)from dbo.Operate

while(@num>0)

begin

select @title=name from (select row_number() over(order by id) 'newid' ,name from dbo.Operate )ta where newid =@num

if(@num>1)

set @ctitle+=@title+','

else

set @ctitle+=@title

set @num=@num-1

end

Declare @sql varchar(8000)

set @sql='select * from(select 1 "isture",rolename,modulename,operatename,role_ID,Module_id from vw_userrole group by rolename,modulename,operatename,role_ID,Module_id)a pivot(count(isture)for operatename in('+@ctitle+')) b'

exec(@sql)

----------------------------------------------------------------

 

分頁(yè)器存儲(chǔ)過(guò)程,分頁(yè)存儲(chǔ)過(guò)程

alter proc cutpage

(

@tablename nvarchar(100),       ----分頁(yè)的表

@columnname nvarchar(100),      ----分頁(yè)的列

@ordertype nvarchar(100)='asc', ----排序方式

@pageindex int =1,

@pagecount int =1

)

as

begin

declare @aa nvarchar(max);

set @aa= 'select * from 

(select *,ROW_NUMBER() over(order by '+@columnname+' '+@ordertype+') as uprow from '+@tablename+' ) as newtable

 where uprow between '+cast((@pageindex-1)*@pagecount+1 as nvarchar(100))+' and '+convert(nvarchar(100), @pageindex*@pagecount)

exec (@aa)   --這里@aa必須加括號(hào)()

 

end

 

exec cutpage  'SM_Class', 'classid'

 

事務(wù) Transaction

---事務(wù)關(guān)鍵語(yǔ)句講解----

BEGIN TRANSACTION   ---事務(wù)關(guān)鍵字transaction

 

DECLARE @errorSum INT

SET @errorSum=0  --初始化為,即無(wú)錯(cuò)誤

 

update bank SET money=money+1000 where name='張三'

 SET @errorSum=@errorSum+@@error

update bank SET money=money-1000 where name='李四'

 SET @errorSum=@errorSum+@@error  --累計(jì)是否有錯(cuò)誤(@@error是非零)

 

if @errorSum<>0

 begin

  print '不成功,有錯(cuò)誤,錯(cuò)誤代號(hào)是:'

  print @errorsum

  rollback transaction

 end

else

 begin

  print '成功'

  select * from Bank

  commit TRANSACTION

 end

 

觸發(fā)器 Trigger

--概念:一種特殊的存儲(chǔ)過(guò)程,將本表中的數(shù)據(jù)更改(增刪改),就會(huì)自動(dòng)執(zhí)行實(shí)現(xiàn)定義的語(yǔ)句

--特點(diǎn):跨越相關(guān)表的級(jí)聯(lián)修改

--關(guān)鍵字:trigger

 

alter trigger trigger_name_f

on SM_Class

for update --(for是在增刪改之前執(zhí)行after在增刪改之后執(zhí)行,instead of 是所有【增||改】都不執(zhí)行,之前觸發(fā),但不改值)

as

begin

if update(remark)  ---判斷SM_Class表中remark列是否發(fā)生數(shù)據(jù)變化

begin

select * from inserted  ---存放修改的新值的表

select * from deleted  ----存放修改的舊值的表

print 'remark列發(fā)生更改'

end

else

print '其他列發(fā)生變化'

print '測(cè)試觸發(fā)器,當(dāng)修改表SM_Class時(shí),顯示這句話(huà),for時(shí)這句話(huà)在前'

end

 

游標(biāo) Cursor

--游標(biāo)類(lèi)似于sql dateReader 一行一行的讀取

--一般是在萬(wàn)不得已的情況下使用,   時(shí)間長(zhǎng),服務(wù)器壓力大,吃更多的內(nèi)存,寬帶,

--游標(biāo)是對(duì)一個(gè)集合的遍歷讀取

 

declare cur_test cursor

for

select pid,pname from ns_product

 

open cur_test

declare @id  uniqueidentifier;

declare @name nvarchar(50);

--讀取一行(第一次讀取當(dāng)然是第一行了)

fetch next from cur_test into @id,@name

 

--判斷一下是否讀到數(shù)據(jù)了,狀態(tài)為零說(shuō)明讀到數(shù)據(jù)了(@@FETCH_STATUS=0)

while @@FETCH_STATUS=0

 begin

   print @id

   print @name

   print '----------------------'

   --然后讀取下一行

   fetch next from cur_test into @id,@name

 end

close cur_test

deallocate cur_test

 

 

 

 

 

 

零散知識(shí)點(diǎn)

1)       截取字符串: substring(字段名, 起始位置(首位為1),截取的長(zhǎng)度 )

select SUBSTRING(age,1,1) from person where ID=2

2)       關(guān)于GUID:

select NEWID()

    insert person values('','',NEWID())

3)       將一張表(person2)插入到另一張表(person1)( 列數(shù)要對(duì)應(yīng))

         insert person1  

    select,, from person2

4)       條件語(yǔ)句 (注意: C#中的大括號(hào){}sql中用begin  end 代替   )

declare @x int ,@y int

set @x=1

set @y =2

if @x>@y

print 'x>y'

else

print 'x<y'

 

 

    select code,name,grade,

    case Grade

    when '1' then ''

    when '2' then ''

    when '3' then ''

    end '等級(jí)'

    from SM_PostCode

 

    -------------------------------------------------------------

    while (select MAX(DEGREE) from SCORE)<85

      begin

       if (select MAX(DEGREE) from SCORE where CNO='3-105')>=100

       break

      end

 

5)       判斷是否存在if exists( select * from TBName where CityName=22)

 

6)  添加自動(dòng)增長(zhǎng)列row_number over(order by **)   ROW_NUMBER是關(guān)鍵字 over指根據(jù)哪一列排序

select ROW_NUMBER() over(order by classID) ,* from SM_Class  

select rank() over(order by classID) ,* from SM_Class  ---也是自動(dòng)增長(zhǎng)的行號(hào),如果出現(xiàn)重復(fù)會(huì)并列行號(hào),下一個(gè)值會(huì)自動(dòng)加二

 

--一條查詢(xún)語(yǔ)句返回的結(jié)果作為另外一條查詢(xún)語(yǔ)句的數(shù)據(jù)源表

select * from ( select ROW_NUMBER() over(order by 列名1)此處新列名, * from TBName) 此處新表名where 新列名between 1 and 3

7)       臨時(shí)表  

declare @table table(id uniqueidentifier,name varchar(50))

--執(zhí)行插入操作(插入條數(shù)據(jù)),并將這條數(shù)據(jù)的hid字段返回并插入到@tableid屬性中

insert images(Hname,Himage)  output inserted.Hid into @table(id)  values(@hname,@Himage)

declare @picid uniqueidentifier

select @picid=id from @table

 

------------------------------------------------------------

 

--下面是執(zhí)行效率的對(duì)比

--sql 語(yǔ)句一:執(zhí)行需要s

declare @tempTable table(id varchar(20),name int,score datetime)

insert @tempTable(id,name,score)

select userID,userName,userScore from scoreTable

select * from @tempTable

 

--sql 語(yǔ)句二:執(zhí)行只需要s

DROP TABLE #Bicycles

SELECT userID,userName,userScore

INTO #Bicycles

from scoreTable

select * from #Bicycles

 

8)       關(guān)于日期時(shí)間的操作  

--數(shù)據(jù)庫(kù)中獲取北京時(shí)間和國(guó)際時(shí)間

    select getdate(), getutcdate()

         --時(shí)間的增加(增加的類(lèi)型[//],增量,給誰(shuí)加[當(dāng)前時(shí)間/日期]dateAdd

    select dateadd(YEAR,2,GETDATE())   ----將當(dāng)前的年份加上兩年

 

    --時(shí)間的減法DateDiff

    select DATEDIFF(HOUR,getdate(),getutcdate())   --國(guó)際時(shí)間的小時(shí)減去當(dāng)  前北京時(shí)間的小時(shí)(后邊減前邊)

 

    --獲取時(shí)間中的年份, 月份, 天等同理

    select year(getdate())-year(birthday())

    select year(getdate())-year('1988-10-07')

9)       行列轉(zhuǎn)換 

    select * from ( select * from TableName) a pivot(count(stuName)) for columnName in('aa','bb','cc','dd')

10)   雙引號(hào)只能用于表名和列名(不加雙引號(hào)也可以)

set @aa='select ClassName "sd" from SM_Class'    --注意:'' 里面原來(lái)的'sd' 現(xiàn)在要寫(xiě)成"sd"

exec (@aa)

 

    -----------------這里要多加注意------------------------------

    declare @bb nvarchar(max);

    --在使用數(shù)據(jù)值時(shí)只能用''電商二班''

    set @bb ='select * from SM_Class where ClassName=''電商二班'''    --注意:原來(lái)的'電商二班'要寫(xiě)成''電商二班''

 exec (@bb)

 

11)   --快速創(chuàng)建表結(jié)構(gòu)

select c.Cid,c.Ccount into newTB1  from  ns_comment c where 1<>1

12)   --重點(diǎn)再記一下

    declare @na nvarchar(10),@str nvarchar(max);

    set @str=' select top 1 @bb=ClassID from SM_Class '

    --@str包含SQL語(yǔ)句的變量,對(duì)@str中的變量進(jìn)行定義N標(biāo)明是字符串,用來(lái)接收@str中變量的變量(@na=@bb)

    exec sp_executesql@str, N'@bb nvarchar(10) output',@na output

 select @na,@str

13)   -------------并發(fā)問(wèn)題--------

    --概念:多個(gè)用戶(hù)同時(shí)和一個(gè)對(duì)象(庫(kù),)交互

    --出現(xiàn)問(wèn)題:臟數(shù)據(jù),非重復(fù)讀取,丟失更新,幻影讀?。?/SPAN>

    --解決:SQL Server使用鎖來(lái)確保事務(wù)完整性(共享鎖,排它鎖,更新鎖,意向鎖,架構(gòu)鎖,批量更新鎖)

14)

 

 

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多