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