分離數據庫:
在要分離的數據庫上左擊,選擇「任務」---》「分離」
修改數據庫名:
exec sp_renamedb 原數據庫名稱,想要改爲的數據庫名稱
exec 是執行的意思;
sp_renamedb 是一個函數;
或:
alter database 原數據庫名 modify name 要改的數據庫名
刪除數據庫:
drop database 數據庫名稱
刪除多個數據庫:
drop database 數據庫名稱1,2
建立數據庫:
create database mydatabase
on
(//建立數據庫的數據庫文件
name=mydatabase_data,
filename='d:\sqlserve\mydatabase_data.mdf'
size=6,
maxsize=20,//最大尺寸
filegrowth=10%
)
log on
(//建立數據庫的日誌文件
name=mydatabase_log,
filename='d:\sqllserve\mydatabase_log.ldf'/不用和數據庫文件放在同一目錄/
size=2,
maxsize=10,
filegrowth=10%
)
建立數據表:
use 數據庫名稱
create table 要建立的數據表名稱
(
各個表內的屬性和它們的數值類型,
)
瀏覽數據表的記錄:
select * from 數據表名稱
要查詢指定屬性的數據:
select 要查詢的屬性(多個用逗號分開)from 數據表名稱
顯示前多少行:
select top(行數)* from 數據表名稱
增長數據庫文件和日誌文件:
alter database 數據庫名稱
add file //增長數據庫文件
(
數據庫文件的屬性。。。。。
)
add log file//增長日誌文件
(
數據庫文件的屬性。。。。
)
刪除數據庫的內部文件:
alter database 數據庫名稱//取得數據庫權限
remove 內部文件名(不須要寫後綴名)
修改數據表名稱:
exec sp_rename "原表名","要更名"
修改數據表數據:
增長屬性:
use 數據庫名稱
alter table 數據表名稱
add 屬性字段 數據類型
default 設置默認值:
default ‘默認值內容’
修改屬性字段的數值類型:
use 數據庫名稱
alter 數據表名稱
alter column 屬性字段 要修改的數值類型//column 是列的意思。
刪除字段:
use 數據庫名稱
alter 數據表名稱
drop column 要刪除的字段
插入記錄:
use 數據庫名稱
insert into 數據表名稱(要插入的字段) values(各字段的值(字符文本等非數值類型用單引號引發))sql
插入完整記錄時,不用寫字段。
收縮數據庫:
數據庫--》右擊---》收縮 文件或數據庫
複製數據庫:
數據庫--->右擊--->任務
數據庫快照:
建立數據庫快照:
create database 數據庫快照名稱
on
{
數據庫文件屬性設置
}
。。。。。。。。
AS SNAPSHOT OF 要進行快照操做的數據庫名數據庫
從快照數據庫中恢復數據庫文件:
restore database 原數據庫名
from database_SNAPSHOT='快照數據庫名'
數據表的分類:
1.系統表
2.用戶表
3.分區表
4.臨時表
規則安全
建立規則:
create rule 規則名
as
規則條件 //句子須以@開頭服務器
for example:
@sss(數據類型名)>=20 and @sss<=120架構
綁定規則:
用存儲過程Sp_bindrule 綁定規則
存儲過程Sp_bindrule 能夠綁定一個規則到表的一個列或一個用戶自定義數據類型上。其語法以下:
sp_bindrule [@rulename =] 'rule', [@objname =] 'object_name' [, 'futureonly']
各參數說明以下: [@rulename =] 'rule' 指定規則名稱。
[@objname =] 'object_name' 指定規則綁定的對象(列或用戶自定義數據類型)。 'futureonly'
此選項僅在綁定規則到用戶自定義數據類型上時纔可使用。當指定此選項時,僅之後使用此用戶自定義數據類型的列會應用新規則,而當前已經使用此數據類型的列則不受影響
解除規則綁定:
sp_unbindrule 綁定的列或自定義數據類型
刪除規則:
drop rule 規則名(刪除規則前須解綁規則)函數
建立視圖:
create view 視圖名
as
條件工具
for eample:
create view V_view
as
select a.班級,a.年齡,b.姓名
from 表名1 a,表名2 b //定義a,b
where a.所屬班級=b.班級編號
修改視圖;
alter view 視圖名
as
select 。。。。。
from 。。。。。
where/on 。。。。// 重新定義視圖
修改視圖數據:
與修改表格式相同;
索引
建立索引:
create 索引關鍵字 index 索引名稱
on
表名/視圖名(列名)
注:索引關鍵字包括:
[ CLUSTERED | NONCLUSTERED ]
彙集索引的區別
彙集索引:物理存儲按照索引排序
非彙集索引:物理存儲不按照索引排序(多列須建立該索引)
優點與缺點:
彙集索引:插入數據時速度要慢(時間花費在「物理存儲的排序」上,也就是首先要找到位置而後插入),查詢數據比非彙集數據的速度快
刪除索引:
drop index 表名.索引名
架構
建立架構:
可視化操做;
安全性---》架構rest
create schema 架構名 authorization 數據庫名(角色名)
select語句
select語句:
select 列
【into 表名 //把查詢的信息插入到其餘表中】
from 表名
【where 查詢條件】 //例如:性別=‘男’
group by
having
【order by 】 //排序日誌
SQL SELECT DISTINCT:xml
返回字段中全部非重複項,如:性別中有幾十個漢族和幾
十個回族,則返回漢族和回族
for example:
select distinct 列 from 。。。。。
where 查詢條件
多條件要使用and/or/like 等關鍵字
like實例:
屬性名 like 字段1 能夠添加通配符來輔助搜索 //li
ke表示屬性中包含字段1的
所用項。
通配符的使用;
表示能夠是任何字段。
for example:
商丘 表示商丘某某
商丘 表示某某商丘
商丘* 表示某某商丘某某
排序order by:
order by 屬性名 asc/desc (可多個) //默認升序(asc) 降序(desc)
for example:
order by 屬性名1 asc,屬性名2 desc
avg(屬性名) 爲該屬性的全部值求平均數。
分組:
select 課程標號,avg(分數)from 成績表 where 考試標號=‘00010’ group by 課程標號
//該sql語句的意思的是:從成績表中選取考試編號爲00010的數據,而後按照課程編號進行分組,統計各組的平均分。
若是修改成這樣的語句:
group by rollup/cube(課程編號)
//表示統計完各組的平均數後,再加一行統計總的平均數。
rollup 表示統計的量不集中,各自在分統計的後面列出。
cube 表示統計的量集中,都在最後面後面列出。
函數:
//select max(屬性名) from 。。。。
max() 最高數
min() 最小值
sum() 和
top 數字 //前幾個數據
having子句(只有句子中包含group by 時纔可以使用):
爲各組的統計數據提供篩選;
select 課程標號,avg(分數)from 成績表 where 考試標號=‘00010’ group by 課程標號 havig avg(分數)>=90
//從成績表中選取考試編號爲00010的數據,而後按照課程編號進行分組,統計各組的平均分大於90的組。
插入數據insert 語句:
insert 。。。select語句:
insert 數據表【(列名)】 select 屬性名 from 數據表 where。。。 。。。
select。。。into語句:
select 列名 into 新數據表名 from 數據表 where。。。
臨時表:
表名前加#或##
update語句:
update 【top】表名 set 屬性名=‘值’(可多個) where。。。
forexample:
update 學生信息 set 姓名=‘李軍’,學號=‘000123’ where 姓名=‘李明’
//更新學生信息表中李明的姓名爲李軍,學號爲000123;
update。。set。。from語句:
delete語句:
deletd from 數據表
top語句:
top number/number percent * from 。。。
聲明變量:
declare 變量名 數據類型名
set 變量名=某某
select (變量名) percent * from 。。。
基本鏈接
基本規則:
1,select 子句列表中,每一個目標列前都要加上基表名稱 //表名。列名
2,from子句應包括全部使用的基表 //可使用字母代替
3,where子句應定義一個同等鏈接
內鏈接:
select 列名
from 表名 join 表名 【on 等值鏈接條件 //與where功能類似】 //join表示兩基表進行了內鏈接
where 。。
order by 。。。
內鏈接與基本鏈接功能相同,但表現形式不一樣
外鏈接:
有主表與從表之分,用主表去匹配從表,主表中沒用匹配的行依然返回,從表的值用空值表示。
在外鏈接中,限制條件在on/where 有區別
在where中控制基表 (較多使用), on不控制基表
左外鏈接:
left join
join左邊的爲主表
右外鏈接:
right join
join右邊的爲主表
全鏈接:
full join
沒有主表與次表之分,兩表相互匹配,沒有的都用null填充
交叉鏈接:
不帶where子句,返回笛卡爾積
select 列名
from table1 cross join table2
自鏈接:
在一個表中鏈接
select lists
from 表1 字母,表1 字母
where 限制條件
聯合查詢:
select lists
from 。。
where
union 【all //顯示省略的數據】
select 。。
from。。。
where。。
子查詢:
在()中,
select 。。。
from 。。
where 姓名=(select 姓名 from 。。。)
exists關鍵字查詢:
select 。。。
from 。。。
where exists
在if也能夠
if exists 。。。
except差查詢:
select 。。from,,。。。
except
select 。。from 。。。
//兩個查詢結果作差計算,去除前查詢中存在的後查詢中的內容並返回結果。
交查詢:
兩表中的交叉結果,兩個查詢語句中間添加intersect關鍵字。
xml查詢:
sqlcmd工具:
sqlcmd -s 服務器名 //鏈接服務器,返回1爲鏈接成功。
use 數據庫名
go
支持t-sql語句。
sqlcmd -? //查詢鏈接用法
聲明變量:
declare @變量名 數據類型
set @變量名=。。//對變量進行賦值(使用select @變量名 from 。。 語句也能夠)。
/ //除法運算,若是兩個運算符皆爲整數,結果爲整數。
& 位與 //兩個值皆爲一時,結果爲1.不然爲0。
| 位或//有一個1時,爲1.只有皆爲0時,才爲零。
ˆ 位異或//當兩個值皆爲1或0時,結果爲0;不然爲1;
其餘運算符:
<> 不等於
!= 不等於
!> 不大於
!< 不小於
begin。。 end語句:
begin
若干語句
end
//做用至關於大括號。
if。。else語句:
if 。。else if 。。。else if。。。else。。。
//支持嵌套使用
case語句:
case 判斷句(列名)
when 狀況1 then 反饋1
when 狀況2 then 反饋2
else 其它反饋
end
for example: select * 列名= case 。。。 end //把反饋的內容賦予列名內容。 while語句: while 判斷句 begin 若干語句 end waitfor語句(時間間隔): waitfor delay 時間值 //‘00:00:00’小時,分,秒 延遲值。 【time 時間【到時間執行】 定時值】 goto語句: 標籤: (標籤名:) goto 標籤名 try。。。catch 添加字段: alter table 表名 add 字段名 類型 刪除字段: alter table 表名 drop column 字段名