sql 基礎

来源:https://www.cnblogs.com/purple910/archive/2019/11/10/11830313.html
-Advertisement-
Play Games

去除資料庫登錄界面的所有用戶信息 查詢姓名中第二個字與第三個字相同: 用戶授權 1 創建用戶 2 增刪改查授權 3 創建表 4 存儲過程授權 5 禁止對錶授權 6 回收許可權 7 刪除表 8 修改列 9 創建一個簡單的登錄,登錄名為:newlogin;登錄密碼:123456;預設資料庫:master, ...


去除資料庫登錄界面的所有用戶信息

C:\Users\asus\AppData\Roaming\Microsoft\SQL Server Management Studio\14.0\SqlStudio.bin

查詢姓名中第二個字與第三個字相同:

select * from Student s2 where SUBSTRING(s2.sname,2,1)=SUBSTRING(s2.sname,3,1)

用戶授權

1 創建用戶

create login names with password='pwd' , default_database=test;
create user names for login names with default_schema=dbo;

2 增刪改查授權

grant select,insert,UPDATE,DELETE on 表 to names

3 創建表

grant create table to names 
GRANT ALTER ON SCHEMA::dbo TO names;

4 存儲過程授權

GRANT EXECUTE ON 存儲過程名 TO username

5 禁止對錶授權

DENY UPDATE ON 表 TO username CASCADE;

6 回收許可權

REVOKE DELETE ON 表 FROM username

7 刪除表

truncate table a
delete from dbo.a
drop table a

8 修改列

alter table a add sa nvarchar(10) not null
Alter Table a Add Constraint PK_Course_Cno Primary Key(id)
ALTER TABLE a ALTER COLUMN id int
ALTER TABLE a DROP CONSTRAINT PK_a
alter table a drop column sa

9 創建一個簡單的登錄,登錄名為:newlogin;登錄密碼:123456;預設資料庫:master,預設資料庫也可以不指定。

EXEC sp_addlogin 'newlogin','123456','master'

10 創建用戶

  • 創建一個簡單的用戶,如果不指定用戶名,則添加到當前資料庫登錄名中,如果不指定角色,則該用戶預設屬於public角色。下為添加newlogin登錄名。
EXEC sp_adduser 'newlogin'
  • 創建一個帶用戶名的用戶,用戶可以與登錄名相同(同上一種類似),也可以不同,但要設定當前登錄名,用戶角色可選,預設為public。下為將用戶newuser添加到newlogin登錄名中。
EXEC sp_adduser 'newlogin','newuser'
  • 創建角色
EXEC sp_addrole 'newrole'
  • 下為將用戶下為將用戶newuser添加到newlogin登錄名中。並指定newrole角色。
EXEC sp_adduser 'newlogin','newuser','newrole'
  • 為角色newrole賦予jobs表的所有許可權
GRANT ALL ON jobs TO newrole
  • 為角色newrole賦予sales表的查、改許可權
GRANT SELECT,UPDATE ON sales TO newrole
  • 禁止角色newrole使用employees表的插入許可權
DENY INSERT ON employees TO newrole
  • 另一種創建用戶和賦予角色的方式
  • 為登錄newlogin在資料庫中添加安全賬戶newuser
EXEC sp_grantdbaccess 'newlogin','newuser'
  • 添加newuser為角色newrole的成員
EXEC sp_addrolemember 'newrole','newuser'
  • 資料庫用戶、角色、登錄的刪除操作
  • 刪除當前資料庫用戶
EXEC sp_revokedbaccess 'newuser';
  • 刪除資料庫登錄
EXEC sp_droplogin 'newlogin'
  • 刪除資料庫角色
EXEC sp_droprole 'newrole'
  • 從資料庫角色(newrole)中刪除用戶(newuser)
EXEC sp_droprolemember 'newrole', 'newuser'
  • 用SQL代碼新建登錄、用戶.創建帶密碼的mylogin登錄名,MUST_CHANGE 選項需要用戶首次連接伺服器時更改此密碼。
CREATE LOGIN mylogin WITH PASSWORD = '123456' MUST_CHANGE;
  • 創建映射到憑據的登錄名。以下示例將創建mylogin登錄名。此登錄名將映射到mycredential憑據。
CREATE LOGIN mylogin WITH PASSWORD = '123456',
CREDENTIAL = mycredential;
  • 從Windows 域帳戶創建登錄名.如果從Windows 域帳戶映射登錄名,則登錄名必須用方括弧([ ]) 括起來。
CREATE LOGIN [jack\xiangzhao] FROM WINDOWS;
  • 如果指定用戶名,則不使用預設登錄名作為該資料庫用戶
CREATE USER myuser FOR LOGIN mylogin
  • 以下示例將創建用戶myuser擁有的資料庫角色myrole
CREATE ROLE myrole AUTHORIZATION myuser;
  • 以下示例將創建db_role固定資料庫角色擁有的資料庫角色myrole
CREATE ROLE myrole AUTHORIZATION db_role

規則

1 創建雇佣日期規則 hire_date_rule

CREATE RULE hire_date_rule
AS @hire_date>='1980-01-01' and @hire_date<=getdate()

2 創建性別規則sex_rule

CREATE RULE sex_rule
AS @sex in ('男','女')

3 -創建評分規則grade_rule

CREATE RULE grade_rule
AS @value between 1 and 100

4 創建字元規則my_character_rule

Create rule my_character_rule
As @value like '[a-z]%[0-9]' 

5 sp_helptext 查看規則,查看規則hire_date_rule的文本信息

EXECUTE sp_helptext hire_date_rule

6 sp_bindrule綁定規則

  • 將規則hire_date_rule綁定到employee表的hire_date列上
EXEC sp_bindrule hire_date_rule, 'employee.hire_date'
  • 定義用戶定義數據類型pat_char,將規則my_character_rule綁定到pat_var上
EXEC sp_addtype pat_char,'varchar(10)','NOT NULL'
EXEC sp_bindrule my_character_rule, pat_char, 'futureonly';

7 sp_unbindrule 解除規則的綁定

  • 解除綁定在employee表的hire_date列和用戶定義數據類型pat_char上的規則
EXEC sp_unbindrule 'employee.hire_date';
* DROP RULE語句刪除當前資料庫中的一個或多個規則
DROP RULE sex_rule,hire_date_rule 

分頁

select * from (
select * ,ROW_NUMBER() over(order by sid) as rowcindex --增加索引
from Student) as t
where t.rowcindex between 1 and 3;

分裂與合併

select s.sid,s.sname,
max(case c.cname when '語文' then sc.score end) as '語文',
min(case c.cname when '數學' then sc.score end) as '數學',
sum(case c.cname when '英語' then sc.score end) as '英語',
max(case c.cname when '化學' then sc.score else 0 end) as '化學'
from (Student as s inner join SC as sc on s.sid=sc.sid
inner join Course as c on c.cid=sc.cid)
group by s.sid,s.sname;

T-sql

1 全局變數

select @@VERSION --資料庫版本
insert into Course values('',''); select @@IDENTITY --獲取最近insert語句的標識
print @@servername --伺服器名稱
print @@rowcount--返回受影響的行數

2 選擇語句

declare @id int
set @id =10
if @id>5
begin
    print 'ok'
end
else
begin
    print 'no'
end

3 迴圈語句

declare @id int
set @id=1
while @id<10
begin 
    print @id
    set @id=@id+1
end

4 異常

begin try
    delete from SC--不能成功
end try
begin catch
    print @@error --判斷錯誤信息 0對
end catch

5 事務:回滾函數

begin try
    begin transaction --開啟事務
    --錯誤SQL
    commit tran --提交事務
end try
begin catch
    rollback tran --回退事務
end catch

6 鎖:同步

begin tran --鎖上
     --修改操作
rollback tran --開鎖 commit tran

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • >>>>>Ubuntu安裝和配置ssh教程 SSH分為客戶端 openssh-client 和伺服器 openssh-server,可以利用以下命令確認電腦 上是否安裝了客戶端和伺服器。如果只是想遠程登陸別的機器只需要安裝客戶端 (Ubuntu預設安裝了客戶端),如果要本機的SSH服務就需要安裝服務 ...
  • systemctl restart 服務名 重啟服務 systemctl start 服務名 啟動服務 systemctl stop 服務名 關閉服務 systemctl reload 服務名 更新服務參數 systemctl enable 服務名 加入開機啟動 systemctl status 服 ...
  • 查看防火牆systemctl status firewalld重啟防火牆systemctl start firewalld 1、mysql 首先關閉防火牆 systemctl stop firewalld 1.1 檢查系統是否已經安裝過mysql rpm -qa|grep mariadb 如果查詢到 ...
  • [TOC] 聲明:本文同步發表於 MongoDB 中文社區,傳送門: "http://www.mongoing.com/archives/27310" 背景 最近線上的一個工單分析服務一直不大穩定,監控平臺時不時發出資料庫操作超時的告警。 運維兄弟溝通後,發現在每天凌晨1點都會出現若幹次的業務操作失 ...
  • 上一篇筆記將開始定義的存儲結構處理了一下,將FormItems數組中的表單項都拿到mongodb document的最外層,和以前的關係型數據類似,之不過好多列都是動態的,不固定,不過這並沒有什麼影響。結果就是方便我們更好的查詢和統計;還有一點就是轉換之後從伺服器端返回客戶端的對象也是如此,這樣更加 ...
  • 背景 現在主流的資料庫系統的故障恢復邏輯都是基於經典的ARIES協議,也就是基於undo日誌+redo日誌的來進行故障恢復。redo日誌是物理日誌,一般採用WAL(Write-Ahead-Logging)機制,所以也稱redo日誌為wal日誌,redo日誌記錄了所有數據的變更,undo日誌是邏輯日誌 ...
  • 廢話少說,直接上SQL代碼(有興趣的測試驗證一下),下麵這個查詢語句為什麼將2008-11-27的記錄查詢出來了呢?這個是同事遇到的一個問題,個人設計了一個例子。 USE AdventureWorks2014;GOSELECT * FROM [Person].[Person]WHERE Modifi... ...
  • java連接sqlserver Spring中連接sqlserver C 連接sqlserver QT連接資料庫 ...
一周排行
    -Advertisement-
    Play Games
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...