SQLServerで一般的に使用される簡単な文と例

データベースを作成する

CREATE DATABASE 数据库名称
[ON
[FILEGROUP 文件组名称]
(NAME = 数据库文件逻辑名,
 FILENAME = '路径 + 数据库文件名',
 SIZE = 数据文件初始大小,
 MAXSIZE = 数据文件最大容量,
 FILEGROWTH = 数据文件自动增长容量,)]
[LOG ON
(NAME = 日志文件逻辑名称,
 FILENAME = '路径 + 日志文件名',
 SIZE = 日志文件初始大小,
 MAXSIZE = 日志文件最大容量,
 FILEGROWTH = 日志文件自动增长容量)]
[COLLATE 数据库校验方式名称]
[FOR ATTACH]

例:新しいデータベースTeachを作成します。データファイルの論理名はTeach_Data、データファイルはEドライブのルートディレクトリに保存されます。ファイル名はTeach_Data.mdf、ログファイルの論理名はTeach_Log、ログファイルはEドライブのルートに物理的に保存されます。ディレクトリでは、ファイル名はTeachData.ldfです。

CREATE DATAVASE Teach
ON
(NAME = Teach_Data,
 FILENAME = 'E:\TeachData.mdf',
 SIZE = 10,
 MAXSIZE = 500,
 FILEGROWTH = 10)
LOG ON 
(NAME = Teach_Log,
FILENAME = 'E:\TeachData.ldf',
SIZE = 5,
MAXSIZE = 500,
FILEGROWTH = 5)

データベースを変更する

ALTER DATABASE 数据库名称
ADD FILE(具体文件格式) [,...n]
[TO FILEGROUP 文件组名]
[ADD LOG FILE(具体文件格式) [,...n]
|REMOVE FILE 文件逻辑名称
|MODIFY FILE(具体文件格式)
|ADD FILEGROUP 文件组名
|REMOVE FILEGROUP 文件组名
|MODIFY FILEGROUP 文件组名
{READ_ONLY|READ_WRITE,
 |DEFAULT,
 |NAME = 新建文件组名}
]

例:TeachデータベースのTeach_Dataファイル拡張メソッドを変更して、一度に20MBずつ増やす

ALTER DATABASE Teach
MODIFY FILE
(NAME = Teach_Data,
 FILEGROWTH = 20)

例:SQLコマンドを使用してデータベースTeachを変更し、セカンダリデータファイルを追加します。論理名はTeach_Datanewで、Eドライブのルートディレクトリに保存されます。ファイル名はTeach_Datanew.ndfです。

ALTER DATABASE Teach
ADD FILE(
    NAME = Teach_Datanew,
    FILENAME = 'E:\Teach_Datanew.ndf',
   SIZE = 100,
   MAXSIZE = 200,
   FILEGROWTH = 10)

例:SQLコマンドを使用して、Teahデータベースからセカンダリデータファイルを削除する

ALTER DATABASE Teach
REMOVE FILE Teach_Datanew

データベースを削除する

DROP DATABASE 数据库名称[,...n]

例:データベースTeachを削除する

DROP DATABASE Teach

データベース情報を表示する

Sp_helpdb[[@dbname=]'name']
Sp_helpfile[[@filename=]'name']
Sp_helpfilegroup[[@filegroupname=]'name']

例:システムストアドプロシージャを使用してデータベース構造を表示する

EXEC Sp_helpdb AdventureWorks2012

例:システムストアドプロシージャを使用してファイル情報を表示する

EXEC Sp_helpfile Address

例:システムストアドプロシージャを使用してファイルグループ情報を表示する

USE AdventureWork2012
EXEC Sp_helpfilegroup

データテーブルを作成する

CREATE TABLE <表名>
(<列定义>[{, <列定义>|<表约束>}])

例:生徒用テーブルSを作成する

CREATE TABLE S
(SNo CHAR(6),
 SN VARCHAR(10),
 Sex NCHAR(1) DEFAULT '男',
 Age INT,
 Dept NVARCHAR(20))

データテーブルの変更

ALTER TABLE <表名>
ADD <列定义> | <完整性约束定义>

ALTER TABLE <表名>
ALTER COLUMN <列名> <数据类型>
[NULL | NOT NULL]

ALTER TABLE <表明>
DROP CONSTERAINT <约束名>

例:クラス番号列と住所列をSテーブルに追加する

ALTER TABLE S
ADD
Class_No VARCHAR(6),
Address NVARCHAR(20)

例:SCテーブルに整合性制約定義を追加して、スコアを0から100の間にする

ALTER TABLE SC
ADD 
CONSTRAINT Score_Chk CHECK(Score BETWEEN 0 AND 100)

例:SテーブルのSN列を12文字に広げる

ALTER TABLE S
ALTER COLUMN
SN NVARCHAR(12)

例:Sテーブルの主キーを削除する

ALTER TABLE S
DROP CONSTRAINT S_Prim

データテーブルを削除

DROP TABLE <表名>

クエリデータテーブル

SELECT [ALL|DISTINCT][TOP N [PERCENT][WITH TIES]]
<列名> [AS 别名1][{, <列名>[AS 别名2]}]
FROM <表名> [[AS]表别名]
[WHERE <检测条件>]
[GROUP BY <列名1>[HAVING <条件表达式>]]
[ORDER BY <列名2>[ASC|DESC]]

例:すべての学生情報をクエリする

SELECT * FROM S

例:選択したコースの学生IDをクエリする

SELECT DISTINCT SNo FROM SC

例: "Liu Wei"先生が担当するコースをクエリするには、先生番号、先生名、コース番号をリストする必要があります

SELECT T.TNo, TN, CNo 
FROM T, TC
WHERE (T.TNo = TC.TNo) AND (TN = '刘伟')

例:すべての選択的な学生の学生ID、名前、コース名、およびスコアを照会します

SELECT S.SNo, SN, CN, Sore
FROM S, C, SC
WHERE S.SNo = SC.SNo AND SC.CNo = C.CNo

例:すべての学生の学生ID、名前、コース名、およびスコアをクエリする

SELECT S.SNo, SN, CN, Score
FROM S
LEFT OUTER JOIN SC
ON S.SNo = SC.SNo
LEFT OUTER JOIN C
ON C.CNo = SC.CNo

例:学生テーブルSとカリキュラムテーブルCのクロスクエリ

SELECT * FROM S CROSS JOIN C

例:「Liu Wei」と同じタイトルの教師にクエリを実行する

SELECT TNo, TN FROM T 
WHERE Prof = ( SELECT Prof
               FROM T
               WHERE TN = '刘伟')

例:EXISTSを含むステートメントを使用して、コース番号がC5である教師の名前を照会します

SELECT TN
FROM T
WHERE EXISTS ( SELECT * 
               FROM TC
               WHERE TNo = T.TNo AND CNo = 'C5')

例:コース番号C5を教えていない教師の名前を照会する

SELECT TN
FROM T
WHERE (NOT EXISTS (SELECT * FROM TC 
                   WHERE TNo = T.TNo = T.TNo AND CNo = 'C5'))

例:SCデータテーブルから学生番号S1を持つ学生の学生番号と合計スコアをクエリし、SCデータテーブルから学生番号S5を持つ学生の学生番号と合計スコアをクエリして、2つのクエリ結果をマージします。結果セット

SELECT SNo AS 学号, SUM(Score) AS 总分
FROM SC
WHERE (SNo = 'S1')
GROUP BY SNo
UNION
SELECT SNo AS 学号, SUM(Score) AS 总分
FROM SC
WHERE (SNo = 'S5')
GROUP BY SNo

例:SCデータテーブルから全学生の学生番号と合計スコアをクエリし、クエリ結果を新しいデータテーブルCal_Tableに保存します。

SELECT SNo AS 学号, SUM(Score) AS 总分
INTO Cal_Table
FROM SC
GROUP BY SNo

データを追加する

INSERT INTO <表名>[(<列名1>[, <列名2>])] 子查询

例:選択的レコードをSCテーブル( 'S7'、 'C​​1')に追加します。

INSERT INTO SC(SNO, CNo) VALUES('S7', 'C1')

例:各学部の校長の平均給与を調べ、その結果を新しいAvgSalに保存する

CREATE TABLE AvgSal
(Department VARCHAR(20),
 Average SMALLINT)

データを更新する

UPDATE <表名> SET <列名> = <表达式> [, <列名> = <表达式>]...
[WHERE <条件>]

例:Liu Wei教師を情報部門に転送する

UPDATE T
SET Dept = '信息'
WHERE SN = '刘伟'

例:すべての学生の年齢を1歳上げる

UPDATE S SET Age = Age + 1

例:教師リストで給与が1,000元以下の講師の給与を20%増やす

UPDATE T SET Sal = 1.2 * Sal
Where (Prof = '讲师')
AND Sal <= 1000

ビューを作成

CREATE VIEW view_name[(column[,...n])] AS select_statement

例:コンピューターの教員の状況のSub_Tビューを作成する

CREATE VIEW Sub_T
AS SELECT TNo, TN, Prof
FROM T WHERE Dept = '计算机'

例:生徒の状況ビューS_SC_Cを作成する

CREATE VIEW S_SC_C(SNo, SN, CN, Score)
AS SELECT S.SNo, SN, CN, Scroe
FROM S, C, SC WHERE S.SNo = SC.SNo
AND SC.CNo = C.CNo

例:学生の平均スコアのビューS_Avgを作成する

CREATE VIEW S_Avg(SNo, Avg)
AS SELECT SNo, Avg(Score) FROM SC GROUP BY SNo

ビューを編集

ALTER VIEW <视图名>[(<视图列表>)] AS <子查询>

例:生徒の状況ビューS_SC_Cを変更する

ALTER VIEW S_SC_C(SN, CN, Score)
AS SELECT SN, CN, Score
FROM S, C, SC
WHERE S.SNo = SC.SNo AND SC.CNo = C.CNo

ビューを削除

DROP VIEW <视图名>

例:コンピュータ科の教師のシチュエーションのビューSub_Tを削除する

DROP VIEW Sub_T

インデックスを作成

CREATE [UNIQUE][CLUSTERED|NONCLUSTERED] INDEX index_name
ON table_or_view_name(column_name[ASC|DESC][,...n])
[WITH <index_option>[,...n]]
[ON {filegroup_name|"default"}]

例:テーブルSCのSNoおよびCNoに一意のインデックスを作成します。

CREATE UNIQUE INDEX SCI ON SC(SNo, CNo)

例:TNの教師テーブルTにクラスター化インデックスを作成する

CREATE CLUSTER INDEX TI ON T(TN)

インデックスを変更

ALTER INDEX {index_name | ALL}
ON table_or_view_name
{REBUILD
  [[PARTITION = ALL]
    [WITH(<rebuild_index_option[,...n]>)]
    |[PARTITION = partition_number
      [WITH(<single_partition_rebuild_index_option>
       [,...n])
    ]]]
 |DISABLE
 |REORGANIZE
  [PARTITION = partition_number]
  [WITH(LOB_COMPACTION = {ON | OFF})]
 |SET(<set_index_option>[,...n])
}[;]
  1. REBUILD:インデックスを削除し、インデックスを再生成します
  2. PARTITION:インデックスの1つのパーティションのみを再構築または再編成することを指定します
  3. DISABLE:インデックスを無効としてマークし、データベースエンジンで使用できないようにします。
  4. REORGANIZE:インデックスを再編成します

インデックスを削除

DROP INDEX <table or view name><index name>
DROP INDEX <index name> ON <table or view name>

クエリインデックス

Sp_helpindex [@objname=]'name'

例:クエリテーブルSCのインデックス

EXEC Sp_helpindex SC

インデックスを変更

Sp_rename'数据表名.原索引名','新索引名'

例:TテーブルのインデックスT1の名前をT_Indexに変更します。

EXEC Sp_rename 'T.T1','T_Index'

データベースユーザーアカウントを作成する

CREATE USER user_name
[{FOR|FROM}
 {LOGIN login_name
  |CERTIFICATE cert_name
  |ASYMMETRIC KEY asym_key_name}
 |WITHOUT LOGIN]

ルール

例:学生の年齢ルールを作成する

CREATE RULE age_rule
AS @age >= 18 AND @age <= 50
  • バインドルール
Sp_bindrule[@rulename=]'rule'.[@objname=]'object_name'[,'futureonly']

例:ルールage_ruleをフィールドAge of the S tableにバインドする

EXEC Sp_bindrule'age_rule'.'S.Age'
  • バインドを解除
Sp_unbindrule[@objname=]'object_name'[,'futureonly']

例:Age of the Sテーブルにバインドされているルールage_ruleを削除します。

EXEC Sp_unbindrule 'S.Age'
  • 削除コマンド
DROP RULE{rule_name}[,...n]

例:age_ruleルールを削除する

DROP RULE age_rule
  • デフォルトで作成
CREATE DEFAULT default_name AS constant_expression

例:誕生日の日付をデフォルトで作成するbirthday_defa

CREATE DEFAULT birthday_defa AS '1987-1-1'
  • デフォルトの
    例を表示デフォルトのbirthd_defaを表示
EXEC Sp_helptext birthday_defa
  • デフォルトをバインドして削除する
Sp_bindefault[@defname=]'default'
[@objname=]'object_name'[,'futureonly']

Sp_unbindefault[@objname=]'object_name'[,'futureonly']

例:デフォルトのbirthd_defaをデータテーブルSの誕生日列にバインドします。

EXEC Sp_bindefault 'birthday_defa,' 'S.Birthday'

例:テーブルSの誕生日列からデフォルトのbirthd_defaをアンバインドします

EXEC Sp_unbindefault 'S.Birthday'
  • デフォルトを削除
DROP DEFAULT{default_name}[,..n]

例:学生の誕生日のデフォルトのbirthd_defaを削除する

DROP DEFAULT birthday_defa
元の記事を1件公開しました 高く評価しました0 訪問数5

おすすめ

転載: blog.csdn.net/qq_43687253/article/details/105500990
おすすめ