我的SQL總結---未完待續


我的SQL總結---未完待續

版權聲明:本文為博主原創文章,未經博主允許不得轉載。

總結:

主要的SQL 語句:

數據操作(select, insert, delete, update)

訪問控制(grant, revoke)

事務控制(commit, rollback, set transaction)

數據定義(create table, drop table, alter table, create view, drop view, create index, drop index,

                   create schema, drop schema, create domain, alter domain, drop domain)

編程中的SQL(declare, explain, open, fetch, close, prepare, execute, describe)

一、數據操作(select, insert, delete, update)

                                          

Insert into 表名 (字段1, 字段2….)  values (值1, 值2….)

 

以下是工作中應用的SQL 語句截圖:

1、 set transaction isolation level read uncommitted

這個語句是讀取為認可的交易隔離級別的數據,這樣數據庫可以讀取到未被提交的數據。在SQL server中數據庫引擎支持五種交易隔離級別:

set transaction isolation level read uncommitted 讀取未認可

set transaction isolation level read committed  讀取認可

set transaction isolation level repeatable read 可重復讀取

set transaction isolation level read committed  snapshot 讀取提交的快照

set transaction isolation level read serializable 序列化

 

2、使用已有的database,或者是創建新的database,為新的database創建一張表,並賦予表字段及記錄值,驗證database是否成功創建,驗證database下是否有新創建的表,表里的字段是否正確,表數據是否正確。

 

 

 

 

 

 

對於單表多數據來說,delete 和 delete from都可以將表里的所有數據刪除,但是對於多表的連結,則delete和delete from是有一些區別。

Update 語句用於修改表中的數據,語法:UPDATE table SET feilds1 = value1 … WHERE condition

一條語句可以修改表中的多個值,也可以將允許null值得字段設置成null。

 

二、訪問控制(grant, revoke)

grant, revoke 授權和回收權限,主要是用來做數據庫維護。

SQL可以為不同的用戶分配嚴格的、復雜的權限。這些操作大多都可以用SQL指令Grant(分配權限)和Revoke(回收權限)來實現。 Grant可以把指定的權限分配給特定的用戶,如果這個用戶不存在,則會創建一個用戶。

 Grant 常用格式:

grant 權限1,權限2,…權限n on 數據庫名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’;

權限1,權限2,…權限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14個權限。
當權限1,權限2,…權限n被all privileges或者all代替,表示賦予用戶全部權限。
當數據庫名稱.表名稱被*.*代替,表示賦予用戶操作服務器上所有數據庫所有表的權限。
用戶地址可以是localhost,也可以是ip地址、機器名字、域名。也可以用’%'表示從任何地址連接。
‘連接口令’不能為空,否則創建失敗。

比較重要的是priveleges(權限)。 
普通用戶的權限權限應用於描述 
SELECT表,列允許用戶從表中選擇行(記錄) 
INSERT表,列允許用戶在表中插入新行 
UPDATE表,列允許用戶修改現存表里行中的值 
DELETE表允許用戶刪除現存表的行 
INDEX表允許用戶創建和拖動特定表索引 
ALTER表允許用戶改變現存表的結構。例如,可添加列、重命名列或表、修改列的數據類型 
CREATE數據庫,表允許用戶創建新數據庫或表。如果在GRANT中指定了一個特定的數據庫或表,他們只能夠創建該數據庫或表,即他們必須首先刪除(Drop)它 
DROP數據庫,表允許用戶拖動(刪除)數據庫或表 

管理員權限權限描述 
CREATE TEMPORARY TABLES允許管理員在CREATE TABLE語句中使用TEMPORARY關鍵字 
FILE允許將數據從文件讀入表,或從表讀入文件 
LOCK TABLES允許使用LOCK TABLES語句 
PROCESS允許管理員查看屬於所有用戶的服務器進程 
RELOAD允許管理員重新載入授權表、清空授權、主機、日志和表格 
REPLICATION CLIENT允許在復制主機(Master)和從機(Slave)上使用SHOW STATUS 
REPLICATION SLAVE允許復制從服務器連接到主服務器 
SHOW DATABASES允許使用SHOW DATABASES語句查看所有的數據庫列表。沒有這個權限,用戶只能看到他們能夠看到的數據庫 
SHUTDOWN允許管理員關閉SQL服務器 
SUPER允許管理員關閉屬於任何用戶的線程 

特別的權限權限描述 
ALL(或ALL PREVILEGES)授予所有權限 
USAGE不授予權限。這將創建一個用戶並允許他登錄,但不允許其他操作,如update/select 等

實例:

例如:
sql>grant select,insert,update,delete on test.user to mql@localhost identified by ‘123456′;
給本地的用戶mql分配可對數據庫test的user表進行select,insert,update,delete操作的權限,並設定口令為123456。若mql用戶不存在,則將自動創建此用戶. 具體的權限控制在sql.db表中可以查看到.也可直接對這個表進行更新操作進行權限的修改.

sql>grant all privileges on test.* to mql@localhost identified by ‘123456′;
給本地用戶mql分配可對數據庫test所有表進行所有操作的權限,並設定口令為123456。

sql>grant all privileges on *.* to mql@localhost identified by ‘123456′;
給本地用戶mql分配可對所有數據庫的所有表進行所有操作的權限,並設定口令為123456。

sql>grant all privileges on *.* to mql2@61.127.46.128 identified by ‘123456′;
給來自61.127.46.128的用戶mql2分配可對所有數據庫的所有表進行所有操作的權限,並設定口令為123456。

REVOKE 
REVOKE和作用和GRANT相反,語法格式為: 
REVOKE privileges ON 數據庫名[.表名] FROM user_name 

例如:
創建用戶Bob,密碼為“bob”,但不給他任何權限: 
GRANT usage on * to Bob identified by ’bob’; 
授予Bob在books數據庫中的查詢和插入權限: 
GRANT select, insert on books.* to  Bob; 
取消Bob在books數據庫中的所有權限: 
REVOKE all on books.* from Bob; 
注:需要指出的是,REVOKE all...僅僅是回收用戶的權限,並不刪除用戶。在SQL中,用戶信息存放在sql.User中。SQL可以通過DROP USER來徹底刪除一個用戶,其用法為: 
DROP USER user_name;  
例如,要刪除用戶Bob,可以用: 
DROP USER Bob; 

三、事務控制(commit, rollback, set transaction)

commit, rollback, set transaction來進行事務處理,保證數據庫不包括不完整的操作結果,只有全部語句都成功執行后,事務處理才算成功,若其中有一個語句執行失敗,則整個處理就算失敗,並恢復到處理前的狀態。

四、數據定義(create table, drop table, alter table, create view, drop view, create index, drop index,  create schema, drop schema, create domain, alter domain, drop domain)

Create table 語法:

Create table Tablename (

列名稱1, 數據類型,

列名稱2, 數據類型,

….

)

Drop table 語法:
Drop table Tablename ; 這樣做與delete,alter的區別是,drop table直接刪除了整張表,delete是刪除表里面的記錄值,alter是改變表結構。

刪除了這張表之后在想查找表中的記錄,則會有找不到目標文件的error。

Alter table語法:

Alter table語句用於在已有的表中添加、修改或刪除列。

1.添加列

Alter table tablename

Add column_name datatype

 

注意在新添加的列時,alter table允許null值添加,如果強制not null系統會報error:

ALTER TABLE only allows columns to be added that can contain nulls, or have a DEFAULT definition specified, or the column being added is an identity or timestamp column, or alternatively if none of the previous conditions are satisfied the table must be empty to allow addition of this column. Column 'test22' cannot be added to non-empty table 'VendorEntity' because it does not satisfy these conditions.

 

 

2、刪除列

Alter table tablename

Drop column column_name

 

3、改變列表的數據類型

Alter table tablename

Alter column column_name datatype

 

SQL server中的數據類型:

Character 字符串:

數據類型

描述

存儲

char(n)

固定長度的字符串。最多 8,000 個字符。

n

varchar(n)

可變長度的字符串。最多 8,000 個字符。

 

varchar(max)

可變長度的字符串。最多 1,073,741,824 個字符。

 

text

可變長度的字符串。最多 2GB 字符數據。

 

Unicode 字符串:

數據類型

描述

存儲

nchar(n)

固定長度的 Unicode 數據。最多   4,000 個字符。

 

nvarchar(n)

可變長度的 Unicode 數據。最多   4,000 個字符。

 

nvarchar(max)

可變長度的 Unicode 數據。最多   536,870,912 個字符。

 

ntext

可變長度的 Unicode 數據。最多   2GB 字符數據。

 

Binary 類型:

數據類型

描述

存儲

bit

允許 0、1   或 NULL

 

binary(n)

固定長度的二進制數據。最多 8,000 字節。

 

varbinary(n)

可變長度的二進制數據。最多 8,000 字節。

 

varbinary(max)

可變長度的二進制數據。最多 2GB 字節。

 

image

可變長度的二進制數據。最多 2GB。

 

Number 類型:

數據類型

描述

存儲

tinyint

允許從 0 到   255 的所有數字。

1   字節

smallint

允許從 -32,768 到   32,767 的所有數字。

2   字節

int

允許從 -2,147,483,648 到 2,147,483,647 的所有數字。

4   字節

bigint

允許介於 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之間的所有數字。

8   字節

decimal(p,s)

固定精度和比例的數字。允許從   -10^38 +1 到   10^38 -1 之間的數字。

p 參數指示可以存儲的最大位數(小數點左側和右側)。p 必須是 1 到 38 之間的值。默認是   18。

s 參數指示小數點右側存儲的最大位數。s 必須是 0 到 p 之間的值。默認是   0。

5-17 字節

numeric(p,s)

固定精度和比例的數字。允許從   -10^38 +1 到   10^38 -1 之間的數字。

p 參數指示可以存儲的最大位數(小數點左側和右側)。p 必須是 1 到 38 之間的值。默認是   18。

s 參數指示小數點右側存儲的最大位數。s 必須是 0 到 p 之間的值。默認是   0。

5-17 字節

smallmoney

介於 -214,748.3648 和 214,748.3647 之間的貨幣數據。

4 字節

money

介於   -922,337,203,685,477.5808 和   922,337,203,685,477.5807 之間的貨幣數據。

8 字節

float(n)

從 -1.79E + 308 到 1.79E + 308 的浮動精度數字數據。 參數   n 指示該字段保存 4 字節還是   8 字節。float(24) 保存   4 字節,而 float(53) 保存   8 字節。n 的默認值是   53。

4 或   8 字節

real

從 -3.40E + 38 到 3.40E + 38 的浮動精度數字數據。

4 字節

Date 類型:

數據類型

描述

存儲

datetime

從 1753 年   1 月 1 日 到   9999 年 12 月   31 日,精度為 3.33 毫秒。

8   bytes

datetime2

從 1753 年   1 月 1 日 到   9999 年 12 月   31 日,精度為 100 納秒。

6-8   bytes

smalldatetime

從 1900 年   1 月 1 日 到   2079 年 6 月   6 日,精度為 1 分鍾。

4   bytes

date

僅存儲日期。從 0001 年   1 月 1 日 到   9999 年 12 月   31 日。

3   bytes

time

僅存儲時間。精度為 100 納秒。

3-5   bytes

datetimeoffset

與 datetime2 相同,外加時區偏移。

8-10   bytes

timestamp

存儲唯一的數字,每當創建或修改某行時,該數字會更新。timestamp 基於內部時鍾,不對應真實時間。每個表只能有一個 timestamp 變量。

 

其他數據類型:

數據類型

描述

sql_variant

存儲最多 8,000 字節不同數據類型的數據,除了 text、ntext   以及 timestamp。

uniqueidentifier

存儲全局標識符 (GUID)。

xml

存儲 XML 格式化數據。最多 2GB。

cursor

存儲對用於數據庫操作的指針的引用。

table

存儲結果集,供稍后處理。

 

未完待續。。。

博主:海寧

聯系:whnsspu@163.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM