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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...