1. 程式人生 > >sql server 基礎知識點總結

sql server 基礎知識點總結

資料庫操作

設定當前操作資料庫

USE [資料庫名]
GO

建立資料庫

CREATE DATABASE [新建資料庫名]
ON  --資料檔案
(
    NAME='WebShop_data',  --資料庫邏輯名稱
    FILENAME='E:\data\WebShop_data.mdf',   --資料庫物理名稱
    SIZE=5,    --初始大小,單位MB
    MAXSIZE=100,      --增長上線,單位MB
    FILEGROWTH=2  --增長量,單位MB、%
   
)
LOG ON --日誌檔案
(
    NAME='WebShop_log',
    FILENAME='E:\data\WebShop_log.ldf',
    SIZE=2,
    MAXSIZE=500,
    FILEGROWTH=10%
)

修改資料庫

ALTER DATABASE [要修改的資料庫名(邏輯名稱)]
ADD LOG FILE  --新增一個日誌檔案
(
    NAME='WebShop_log1',
    FILENAME='E:\data\WebShop_log1.ldf'
)
ALTER DATABASE [要修改的資料庫名]
MODIFY FILE   --修改檔案(資料檔案、日誌檔案)
(
    NAME='WebShop_data', --NAME='WebShop_log'
    MAXSIZE=500   --修改上限
)

刪除資料庫

USE master
GO
DROP DATABASE WebShop

資料型別



SELECT(查詢)

查詢語法

SELECT [表的列名]
FROM [表名];

WHERE(條件)

SELECT [表的列名]
FROM [表名];
WHERE [列名]=[資料信]

LIKE(相似)運算子

WHERE 【列名】 LIKE ‘資料%’    --該列以‘資料’開頭的項都會查詢到

IN(匹配)運算子

WHERE 【列名】 LIKE ‘資料%’    --該列以‘資料’開頭的項都會查詢到

介於之間BETWEEN運算子

WHERE 【列名】 BETWEEN 【資料1】 AND 【資料2】

ORDER BY(排序規則)

USE WebShop
GO
SELECT * FROM Goods
ORDER BY [列名1] DESC, [列名2] ASC;<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>

DESC:降序排列,預設是升序排列(ASC

如果有WHERE語句,ORDER BY 語句應該放在其後面。

GROUP BY(聚合資訊)

SELECT g_Discount,SUM(g_Price)
FROM Goods
WHERE g_Discount IN(0.9,0.8)
GROUP BY [需要聚合的組](列名)

說明:

         使用GROUP BY 子句時,必須要使用聚合函式,

聚合函式

聚合函式一般和GROUP BY 子句配合使用

SUM(求和)

AVG(平均值)

MIN(最小值)/MAX(最大值)

COUNT(*)

查詢中返回的行數

除了COUNT(*),其他聚合函式都會忽略null值,不加以計算

COUNT 可以和GROUP BY 子句聯合使用

SELECT g_Discount,COUNT(*)
FROM Goods
GROUP BY g_Discount

HAVING

注意:

在group by 之前篩選用where,篩選的是分組前的資料

在group by 之後篩選用having,篩選的是分組後的資料

HAVING子句僅用於帶有GROUP BY子句的查詢中

SELECT g_Discount,COUNT(*)
FROM Goods
GROUP BY g_Discount

DISTINCT

去除重複行

SELECT DISTINCT c_Postcode FROM Customers

也可以在聚合函式中使用

SELECT COUNT(DISTINCTc_Postcode) FROM Customers

TOP

查詢前5行的的資料

</pre><pre name="code" class="sql">select top 5 * from goods

查詢前百分之50的資料

select top 50 percent * from goods

ISNULL

查詢,判斷如果是null值,則替換為其他

select isnull(name,'sdsdsdsds')from ren

解釋:判斷如果name欄位為空,則替換為sdsdsdsds

cast

查詢時將列的資料型別轉化成其他型別,可以和isnull一起使用

select ISNULL(CAST(gonghaoasvarchar(30)),'sdsd')from ren

解釋:將gonghao欄位的資料型別轉換成varchar(30)型別,在判斷gonghao型別是否為空,為空則替換為sdsd

select語句的執行順序

5)select

1)from 表

2)where 條件

3)group by 列

4)having 篩選條件

6)order by 列

union

將兩個表的查詢結果放在一個結果集中,

但是兩個表的欄位型別必須一致

例項:

select *from Goods
union all –-不加all會去掉重複行,加all顯示所有資料
select * from Goods –-可以是不同的表

case

case語句有點類似於C#中的if else語句

例項1:區間用法

select
    g_ID,
    g_Name,
    等級=
    case --類似於if else分段
        when g_Price<=2000 then'便宜'
        when g_Price<=4000 then'一般'
        else '奢侈'
    end
from goods

例項2:等值用法

select
    g_ID,
    g_Name,
    等級=
    case g_Price
        when 1500 then '便宜'
        when 2500 then '一般'
        else '奢侈'
    end
from goods

複製表

select top 5 * into newgoods from goods

exists

--exists中包含一個查詢語句的查詢結果,有結果就返回true,沒結果就返回false
if(exists(select*fromGoods))
begin
    print('true執行這裡');
end
else
begin
    print('false執行這裡');
end

row_number()

給查詢的結果新增一列排序編號

select * ,ROW_NUMBER()over(orderbyg_id desc)as gnumber from goods

分頁

查詢某一頁的資料

例項1:查詢第二頁的資料(假設每頁5條資料)

先將第一頁之後的資料查詢出來,再取查詢到的第一頁的資料就是第二頁了

這是sql server 2000時的做法

select top 5*from goods
where g_IDnotin
(
    select top (2*5) g_ID fromgoods
)

例項2:

sql server 2005 做法

查詢第二頁的資料

select *from
(
    select * ,ROW_NUMBER() over(orderbyg_id desc) as gnumber from goods
) astb
where tb.gnumber between 1*5+1 and 2*5

注意:

over關鍵字和聚合函式一起使用的時候,可以

讓聚合函式對每一條資料都計算一次

子查詢

獨立子查詢

意思就是兩個查詢之間沒有相互引用

例項1:將一個表的查詢結果集作為另一個表的查詢資料來源

select *from
    (selectg_ID,g_Name,g_Pricefromgoods) as g –-引用的結果集必須
用括號括起來,還要起別名才行
where g_Name like '三星%'

例項2:將一個查詢結果當做另一個查詢的where判斷條件

當查詢結果為多條的時候,用in關鍵字

select *fromgoods
where t_id in(select t_IDfromGoods where g_Discount=0.8andg_Number=10)

相關子查詢

兩個查詢之間有引用關係

臨時表

在建立表時表名前面加一個#號,表示區域性臨時表,加##號,表示全域性臨時表

建立的臨時表可以在tempdb資料庫中看到,並不是儲存在自己的資料庫中,

區域性臨時表

只在當前會話中有效,不能跨連線訪問,斷開連線後消失

例項:

create table #test
(
    id  int identity
)

全域性臨時表

所有連線都可以訪問,服務重啟後消失

例項:

create table ##test2
(
    id  int identity
)

字串

len():計算字串長度(字元的個數)

lower(),upper():轉小寫,大寫

ltrim(),rtrim():去掉左,又的空格

,,,,,,

INSERT(新增)

語法:


簡潔版

注意:into關鍵字可選,沒有實際用處

一次性插入多行

insert intoUsers
select 31,'qwe','普通','8669966'union --去掉重複
select 54,'sdf','超級','dfgvsdr'unionall --不去重複
select 65,'fdg','haha','hfydfhh'

向自動編號列插入資料

--打開向自動編號插入資料的許可權
set identity_insert users on
--關閉向自動編號插入資料的許可權
set identity_insert users off

DROP語句

刪除資料庫

drop database lianxi

聯接(join)

內部聯接(inner join)

語法:

SELECT<select list>

FROM<first_table(第一個表名)>

<join_type(連線型別)><second_table(第二個表名)>

                   [ON <join_condition>(連線條件)]

<join_type(連線型別)><second_table(第三個表名)>

                   [ON <join_condition>(連線條件)]

。。。。。。

內部聯接是一個排他的聯接,即會排出不匹配的所有資訊(與where語句有些相似)

例項:

select *
from Orders as o
inner join OrderDetails as od  --內部連線
on o.o_ID=od.o_ID

inner join(內部連結)為預設連線,所以inner關鍵字可以不使用

select *
from Orders as o
join OrderDetails as od  --內部連線
on o.o_ID=od.o_ID

外部聯接(outer join)

語法:

select <select list>
from <第一個表名>
<left | right> [outer]join<第二個表名>
    on <連線條件>

注意:

使用left時,右邊的表的列與左邊不匹配時,會插入一個null值,

使用right時,左邊的表的列與右邊不匹配時,也會插入一個null值。

Outer關鍵字可以省略

完全聯接(full join)

交叉聯接(cross join)

CREATE語句

create database

語法:


例項:

use master
go
create database <databasename>

完整

CREATE DATABASE [新建資料庫名]
ON  --資料檔案
(
    NAME='WebShop_data',  --資料庫邏輯名稱
    FILENAME='E:\data\WebShop_data.mdf',   --資料庫物理名稱
    SIZE=5,    --初始大小,單位MB
    MAXSIZE=100,      --增長上線,單位MB
    FILEGROWTH=2  --增長量,單位MB、%
   
)
LOG ON --日誌檔案
(
    NAME='WebShop_log',
    FILENAME='E:\data\WebShop_log.ldf',
    SIZE=2,
    MAXSIZE=500,
    FILEGROWTH=10%
)

create table

語法:


例項:

create table Customers
(
    CustomerNo    int           identity   not null,
    CustomerName  varchar(30)                notnull,
    Address1      varchar(30)                notnull,
    Address2      varchar(30)                notnull,
    City          varchar(30)                notnull,
    State         char(20)                notnull,
    Zip           varchar(10)                notnull,
    Contact           varchar(25)                notnull,
    Phone         varchar(15)                notnull,
    FedIDNo           varchar(9)              notnull,
    DateInSystem  smalldatetime            not null,
)
Employees
create table Employees
(
                                --設定種子是1,增量是1
    EmployeeID    int        int identity(1,1)notnull,
    firstName     varchar(25)         notnull,
    MiddleInitial char(1)             notnull,
    lastName      varchar(25)         notnull,
    Titly         varchar(25)         notnull,
    SSN           varchar(11)         notnull,
    Salary        money             not null,
    PriorSalary       money             not null,
    lastRaise AS Salary-PriorSalary,
    HireDate      date              not null,
    TerminationDate   date              null,
    ManagerEmpID  int               not null,
    Department    varchar(25)         notnull
)

IDENTITY關鍵字

將某一列設定為標示符列,可以設定種子和增量

預設種子是1,增量是1

ALTER語句

alter database

例項:

修改資料庫大小

alter database Accounting
    modify file
    (
    name='Accounting',
    size=100mb
    )

alter table

例項:

向Employees表中新增新列

Alter table Employees
    add
       PreviousEmployer varchar(30) null

新增多列,並新增約束

alter table Employees
    add
       DateOfBirth       datetime null,
       lastRaiseDate datetime not null
           default '2008-01-01'--設定預設值(不是"預設值"約束)


刪除一個表中的列

alter table Employees
    drop columnhaha

修改欄位資料型別

alter table mployees
    alter column firstName
    varchar(30)

DROP

其語法對於主要的SQL server物件(表,檢視,儲存過程及觸發器等)來說都是一樣的

使用時要小心,改命令沒有“你確定嗎”這樣的提示

語法:

drop <objecttype> <object name>[, ...n]

例項:

可以同時刪除兩個表

drop table Customers,Employees

刪除整個資料庫

drop database Accounting

truncate

清空表中所有資料,比delete效率高很多,但不能新增where子句,只能一次性清空整個表

truncate table users_bf

約束

域約束

域約束處理一個或多個列

實體約束

實體約束都是關心與每一行的

參照完整性約束

某列的值必須與其他列的匹配

鍵約束

主鍵約束(PRIMATY KEY)

例項:

方法一、在建表的時候設定

USE WebShop
GO
create tablehuoying
(
    hy_id  int        not null primary key,   
    hy_name    varchar(30)  notnull
);

方法二、在已存在的表中建立主鍵約束

alter table huoying
add constraint PK_hy_id
primary key (hy_id);

外來鍵約束(FOREIGN KEY)

在引用表(定義外來鍵的表)與被引用表(外來鍵引用的表)之間建立依賴關係

外來鍵建立之後,外來鍵所在列的值必須與被引用列的值相匹配,或者外來鍵列為null

被引用列必須是主鍵或者唯一約束

主鍵和外來鍵可以是同一列

語法

<colum nname> <data type> <nullability>
foreign key references <tablename>(<columnname>)
    [on delete{cascade|no action|set null|set defaule}]
    [on update{cascade|no action|set null|set defaule}]

例項

方法一、在建立表時建立外來鍵約束。

create tablerenhu
(
    r_id       int        not null
       primary key,
    r_name     varchar(30)  notnull,
    r_paibie   varchar(30)  notnull,
    h_id       int        not null
       foreign key references huoyin(h_id)      
)

注意:

和主鍵不同,每個表中的外來鍵數目不限制唯一性,在每個表中可以有0~253個外來鍵。唯一的限制是一個給定的列只能引用一個外來鍵。然而,一個外來鍵可以涉及多個列。一個給定的被外來鍵引用的列也可以被很多表引用。

方法二、在已存在的表中新增一個外來鍵

alter tablerenwu
    add constraint FK_h_id
    foreign key (h_id)references huoyin(h_id)

自引用

自引用:外來鍵引用表和被引用表是同一個表

在建立之前必須要先有一行資料

例項:

方法一,在已建立表中修改

alter tablegoods
    add constraint FK_g_id
    foreign key (t_id)references goods(g_id)

方法二,建立表時新增

create tablexinbiao
(
    x_id   int    not null
       primary key,
    b_id   int    not null
       references xinbiao(x_id)
)

這時可以省略FOREIGN KEY語句

唯一約束(UNIQUE)(替換鍵)

每個表中主鍵只能有一個,但可以有多個唯一約束

唯一約束列只能有一個null值

例項:

方法一,在建立表時新增

create table xinbiao1
(
    x_id   int    not null
       primary key,
    b_id   int    not null
       unique  --設定唯一約束
)

方法二,在已存在表中新增

alter table Employees
    add constraint AK_name
    unique(e_Name)

CHECK約束

它不限於一個特定的列,它可以和一個列關聯,也可以和表關聯,

可以使用WHERE子句一樣的約束來定義check約束。

例項:

方法一,在已存在表中新增約束

alter table Customers
    add constraint CN_customers_C_Gender
    check
    (c_Genderin('男','女'));

DEFAULT約束

設定預設值,但又不同於“預設值”

例項:

方法一,在建立表時新增約束

create table Shippers
(
    shipperID     int identity   notnull
       primary key,
    ShipperName       varchar(30)      notnull,
    DateInSystem  smalldatetime not null
       default getdate() --設定約束預設值為系統當前日期
);

方法二,在已存在的表中新增約束

alter table Customers
    add constraint CN_c_Birth
    default getdate() for c_Birth

禁用約束

不能禁用主鍵約束和唯一約束

建立約束時忽略無效資料

例項:

alter table customers
    with nocheck
    add constraint CN_c_Postcode1
    check
    (c_Postcodelike '([0-9][0-9][0-9])')

臨時禁用已存在的約束

alter table customers
    nocheck
    constraint CN_c_Postcode1

再次啟用約束

alter table customers
    check
    constraint CN_c_Postcode1

優缺點


索引

索引分為

聚集索引(聚簇索引)

         當資料實際的儲存順序與索引的順序一致的時候就叫聚集索引

非聚集索引(非聚簇索引)

         當索引中資料的順序與資料實際的順序不一致的時候,就叫非聚集索引

檢視(view)

語法:

CREATE VIEW <view name>
AS
<SELECT statement>

更加複雜的語法:

CREATE VIEW [schema_name].<view name>  [(<column name list>)]
[WITH [ENCRYPTION] [, SCHEMABINDING] [,VIEW_METADATA]]
AS
    <SELECTstatement>
    WITH CHECK OPTION

注意:檢視本身並不儲存資料,只是儲存查詢語句,

例項:

建立檢視

create view vw_goods
as
    select * from goods
    where g_Price>4000;

修改檢視

alter viewv w_goods
as
    select * from goods
    where g_Price<4000;

刪除檢視

drop view vw_goods

注意:

         檢視中不能直接使用order by 子句,除非指定了 TOP,FOR XML語句

指令碼和批處理

USE

設定當前操作的資料庫

GO

GO語句最好自成一行(只有註釋可以在同一行)

用來分隔批處理

declare(定義變數)

例項:

declare @myInt int=3;   --宣告一個int型變數
set @myInt=5;    --使用set關鍵字修改變數的值
select @myInt=8; --使用select關鍵字修改變數的值
select @myInt    --使用select關鍵字查詢變數的值

注意:

簡單變數複製用set

基於查詢進行變數賦值時,用select

例項:

declare @myInt int;
select @myInt=MAX(g_Price)fromgoods; --將查詢結果賦值給變數
select @myInt

系統函式





sqlcmd

流程控制語句

if…else

注意:

if @myvar=null,這樣寫是錯誤的

正確的是這樣的if @myvar is null

例項:

declare @myint int=9;
if(@myint>8)
    begin             --要執行多個語句就用begin...end
       print '343545'
       print '345345'
    end
else
    print 'asdsad'

case

case語句有點類似於C#中的if else語句

例項1:區間用法

select
    g_ID,
    g_Name,
    等級=
    case --類似於if else分段
        when g_Price<=2000then'便宜'
        when g_Price<=4000then'一般'
        else '奢侈'
    end
from goods

例項2:等值用法

select
    g_ID,
    g_Name,
    等級=
    case g_Price
        when 1500 then '便宜'
        when 2500 then '一般'
        else '奢侈'
    end
from goods

while

例項:計算100以內的奇數的和

declare @sum int=0;
declare @i int=1;
while @i<=100
    begin
       if @i%2<>0
           begin
              set @[email protected][email protected]
           end
       set @[email protected]+1      
    end
print @sum

注意:

         continue:跳過本次迴圈

事務

一系列的操作就叫事務
準備:
create tablebank
(
    cid    varchar(30),
    balance int ,
    check (balance>=10)
)
 
insert into bank values('0001',1000)
insert into bank values('0002',10)
 
select *frombank

--============================================================================
正題:
--開啟事務
--begin transaction
--可以簡寫
begin tran
declare @sum int = 0;--建立一個變數記錄錯誤資訊
update bank set balance=balance-1000 where cid='0001'
set @[email protected][email protected]@ERROR--每執行一句就記錄一次錯誤資訊
update bank set balance=balance+1000 where cid='0002'
set @[email protected][email protected]@ERROR
if @sum<>0 --有錯誤@sum>0
begin
    rollback --有錯誤就回滾
end
else
begin
    commit   --沒錯誤就提交事務
end

通過捕獲異常處理

begin tran--開啟事務
begin try --捕獲異常
    update bank set balance=balance-1000 where cid='0001'  
    update bank set balance=balance+1000 where cid='0002'  
    commit --提交
end try
begin catch--處理異常
    rollback --回滾
end catch

儲存過程

特點:

         有點類似與函式,速度相對比較快,因為是提前編譯好的,省去了編譯的步奏

例項:

create proc spEmployees
as
    select * from Employees

注意:

使用DROP和CREATE,ALTER和PROC結果幾乎一樣,只是後者保留了相關許可權和依賴關係,前者則沒有保留

刪除儲存過程

drop proc spEmployees

引數

名稱,資料型別,預設值,方向

注意:

         如果引數不提供預設值,則假定引數是必須的,就是說,在呼叫儲存過程時,沒有預設值的引數必須給定值,否則會報錯

例項:

先建立一個儲存過程,不給定預設值

create proc spgoods
    @name nvarchar(20)
as
    select g_ID,g_name,t_id from goods
    where g_Name like @name+'%';

當執行儲存過程時,如果不給定引數

exec spgoods

會報異常

訊息201,級別16,狀態4,過程spgoods,第0

過程或函式'spgoods' 需要引數'@name',但未提供該引數。

使用引數後

exec spgoods'三星'

正常查詢到了

g_ID   g_name                                            t_id

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

010002 三星SGH-P520                                         01

010003 三星SGH-F210                                         01

010004 三星SGH-C178                                         01

010005 三星SGH-T509                                         01

010006 三星SGH-C408                                         01

(5 行受影響)

帶引數的儲存過程

新建儲存過程

alter proc sp_sum
@n1 int,
@n2 int=200
as
    begin
       print @[email protected]
    end

呼叫儲存過程

exec sp_sum10

結果

210

修改儲存過程

alter proc sp_sum
@n1 int=100,
@n2 int
as
    begin
       print @[email protected]
    end


注意:

不能這樣呼叫了

exec sp_sum10

結果

訊息201,級別16,狀態4,過程sp_sum,第0

過程或函式'sp_sum'需要引數'@n2',但未提供該引數。

可以顯示指定引數

exec sp_sum @n2=100

帶輸出引數的儲存過程

先修改儲存過程

alter proc sp_sum
@n1 int,
@n2 int,
@sum int output–-類似與C#中的out引數
as
    begin
       print @[email protected]
    end

執行

declare @sum int
exec sp_sum 100,200,@sum output --這裡也要用output
print @sum

使用者登入

--先建立一個使用者表
create table users
(
    id  int identity(1,1),
    uid varchar(30),
    pwd varchar(30)
)
--新增一個使用者
insert into users
(uid,pwd)
values
('qwe','qwe')
 
 
select *fromusers;
 
 
 
--建立儲存過程,驗證使用者登入
create proc ulogin
(
    @uid varchar(30),
    @pwd varchar(30),
    @tag bit output
)
as
begin
    declare @count int
    set @count=(
    select COUNT(*) fromusers
    where [email protected] and [email protected])
    if @count>0
       set @tag=1
    else
       set @tag=0
end
 
 
--呼叫儲存過程,驗證使用者登入
declare @tag bit
exec ulogin'qwe','qwe',@tagoutput
print @tag


觸發器

觸發器分為

DML觸發器:針對資料本身(如,insert,delete,update)

DDL觸發器:針對資料庫裡的物件(如,alter,create,drop)

DML觸發器

語法:

create trigger triggerName on 表名
after(for)(for和after都表示after觸發器)|insert of
(update|insert | delete)
as
begin
    ......
end

After觸發器

1、  在語句執行完畢之後觸發

2、  按語句觸發,而不是所影響的行數,無論所影響為多少行,只觸發一次

3、  只能建立在常規上,不能建立在檢視和零時表上

4、  可以遞迴觸發,最高可達32級

5、  update(列),在update語句觸發時,判斷某列是否被更新,返回bool值

例項:

建立觸發器

create trigger tri_goods_insert_after
on goods after insert  --這裡可以是多個(insert,delete,update)
as
begin
    declare @id int
    select @id=g_id from inserted –-這是一個系統臨時表
   
    print @id
end

解釋:

         當上面這個觸發器建立好之後,只要向goods中執行insert(插入)操作,就會將你剛插入的記錄的g_id打印出來,

例項2:

建立觸發器

create trigger tri_goods_delete_after
on goods after delete
as
begin
    insert into goods_bf2
    select * from deleted   
end

解釋:

         當刪除goods中的一條記錄時,會將那條記錄備份到goods_bf2表中

instead of觸發器

1、  用來替換原本的操作

2、  不會遞迴觸發

3、  可以在約束被檢查之前觸發

4、  可以建在表和檢視之上

注意:

         儘量避免在觸發器中執行好事操作,因為觸發器會與sql語句認為在同一個事務中(事務不結束,就無法釋放鎖,別人就不能操作這個表)

各種符號說明

*

代表任意字元或字串

%

代表任意字串

_

代表單個字元

系統儲存過程

語法前面加上exec 輸入sp語法時可以智慧聯想

exec sp_help<table name>

它可以查看錶結構的資訊

exec sp_helpconstraint <table name>

查看錶中約束的詳細資訊

exec sp_helpindex<table name>

查看錶的索引

exec sp_helpdb<database name>

檢視資料庫的資訊,省略name可以檢視所有資料庫的資訊

exec sp_databases

檢視當前可使用的資料庫

exec sp_helpfile

檢視當前資料庫中的所有檔案資訊,可以指定檔名

exec sp_helpfilegroup

檢視當前資料庫中的所有檔案組資訊,可以指定檔案組

exec sp_renamedblianxi,lianxi1

資料庫重新命名

exec sp_dependsEmployees

查看錶的相關性

exec sp_helptextsp_help

檢視儲存過程的原始碼


exec sp_tables

檢視當前資料庫的表資訊

exec sp_columns'goods'

檢視指定表的列資訊

備份

備份表

--users表備份到users_bf

--users_bf表必須不存在

select * into users_bf fromusers

遇到的一些錯誤

1、  錯誤:無法繫結由多個部分組成的標示符

原因:給表取了別名,但是並沒有在所有地方都使用別名(混合使用),所以出錯

解決:要麼不使用別名,要麼一直使用

相關推薦

sql server 基礎知識點總結(一)

select ISNULL(CAST(gonghao varchar(30),'sdsd')) from ren 解釋:將gonghao欄位的資料型別轉換成varchar(30)型別,在判斷gonghao型別是否為空,為空就替換為sdsd ISNULL:查詢,判斷如果是null值,則替換為其他 sele

sql server 基礎知識點總結

資料庫操作 設定當前操作資料庫 USE [資料庫名] GO 建立資料庫 CREATE DATABASE [新建資料庫名] ON --資料檔案 ( NAME='WebShop_data', --資料庫邏輯名稱 FILENAME='E:\data

SQL基礎知識點總結

SQL基礎知識點總結 常用語句的執行順序: from–on–join–where–group by–cube/rollup–having–select–distinct–order by–limit 一、基礎查詢 select distinct product,number*

SQL Server 入門學習總結---基礎

首先相信很多人在開始準備學習的時候,肯定對資料庫的基本學習路線是蒙的,當然我也是這樣過來的。我也是在後來把基礎知識學完之後,才看到一張圖,很棒的學習路線圖。先把這個分享給大家: 對於這張圖,相信不用

[SQL] SQL SERVER基礎語法

取消 implicit 全連接 樹結構 需要 強制 rom lec 多行 Struct Query Language 1.3NF   a.原子性   b.不能數據冗余   c.引用其他表的主鍵 2.約束   a.非空約束   b.主鍵約束   c.唯一約束   d.默認

SQL Server 基礎

arc com 數據類型 表達 alt from rate 默認 select 1.select 查詢的列,對列的限制;where 過濾行,對行的限制;group by 集合運算,如取平均數;having 對集合運算取值的限制,如均值要大於30;order by 對排序

SQL Server 2005筆記總結

sqlSQL分類DDL data definition language create alter dropDML data manipulation language insert update delete selectDCL data control lang

SQL server基礎】objectproperty()函數

del dex scons 手動更新 asr ble rtu pad sdi SQL Server OBJECTPROPERTY使用方法 OBJECTPROPERTY 返回有關當前數據庫中的模式作用域對象的信息。此函數不能用於不是模式範圍的對象,例如數據定義語言(D

SQL server基礎SQL視圖加密,永久隱藏視圖定義的文本

選擇 creat reat 右擊 con with roc ron div SQL可以對視圖進行加密。也就是,可永久隱藏視圖定義的文本。 註意 此操作不可逆。加密視圖後,無法再修改它,因為無法再看到視圖定義。如果需要修改加密視圖,則必須刪除它並重新創建另一個視圖。 示

SQL server基礎SQL存儲過程和函數的區別

lan 嵌入 執行計劃 臨時 roc 沒有 存在 exe execution 本質上沒區別。只是函數有如:只能返回一個變量的限制。而存儲過程可以返回多個。而函數是可以嵌入在sql中使用的,可以在select中調用,而存儲過程不行。執行的本質都一樣。 函數限制比較多

SQL Server基礎之存儲過程

調用 mic 情況 sele 環境 record total true 孔子 SQL Server基礎之存儲過程 閱讀目錄 一:存儲過程概述 二:存儲過程分類 三:創建存儲過程 1.創建無參存儲過程 2.修改存儲過程 3.刪除存儲過程 4.重命名存儲過程 5.創

C#泛型基礎知識點總結

www. compile win 泛型 override amp 。。 target 類繼承   1.0 什麽是泛型 泛型是C#2.0和CLR(公共語言運行時)升級的一個新特性,泛型為.NET 框架引入了一個叫 type parameters(類型參數)的概念

SQL Server基礎

st表 邏輯運算 clas ssl 地址 添加 evo 得到 sna 1. 結構語言分類    DDL(數據定義語言) create drop alter 創建刪除以及修改數據庫,表,存儲過程,觸發器,索引....    DML(數據操作語言) insert

SQL Server Alwayson概念總結

定期 副本 數據 即使 iter 檢測 存在 保護 target 一、alwayson概念 “可用性組” 針對一組離散的用戶數據庫(稱為“可用性數據庫” ,它們共同實現故障轉移)支持故障轉移環境。 一個可用性組支持一組主數據

SQL Server知識點

sql server小知識點本文出自 “砥身礪行” 博客,請務必保留此出處http://82711020.blog.51cto.com/12993840/1983917SQL Server小知識點

SQL Server 基礎之《學生表-教師表-課程表-選課表》(二)

lap sql 分享 var -c view weight HA aid 表結構 --學生表tblStudent(編號StuId、姓名StuName、年齡StuAge、性別StuSex) --課程表tblCourse(課程編號CourseId、課程名稱CourseNam

Java學習---面試基礎知識點總結

定向 finall 響應 背景 包括 區別 虛引用 protect 多態 Java中sleep和wait的區別① 這兩個方法來自不同的類分別是,sleep來自Thread類,和wait來自Object類。 sleep是Thread的靜態類方法,誰調用的誰去睡覺,即使在a線

Mysql學習---面試基礎知識點總結

drop let 分組 知識點總結 樣式 delet 基礎 order by count 1、drop、truncate、 delete區別 TRUNCATE TABLE 在功能上與不帶 WHERE 子句的 DELETE 語句相同:二者均刪除表中的全部行。但 TRUNCAT

Redis學習---面試基礎知識點總結

精度 rop href list ping 技術方案 分布 專業 了解 【學習參考】 https://www.toutiao.com/i6566017785078481422/ https://www.toutiao.com/i6563232898831352323/ 0.

程序、執行緒基礎知識點總結

總體的解釋: 轉自知乎:https://www.zhihu.com/question/25532384/answer/81152571 首先來一句概括的總論:程序和執行緒都是一個時間段的描述,是CPU工作時間段的描述。 下面細說背景: CPU+RAM+各種資源(比如顯示卡,光碟機,鍵盤,GP