SQL Serverのテーブル(テーブル)
- 12-09-2022
- Toanngo92
- 0 Comments
SQL Serverのテーブルには、行と列に配置されたデータが含まれています。各列には、特定のデータ型とサイズのデータを含めることができます
Mục lục
高度なデータ型
int、float nvarchar …などの基本的なデータ型に加えて、SQLServerは次のようないくつかの高度なデータ型もサポートしています。
名前 | 説明 |
hiearachyid | 階層(階層化)の位置を表すために使用される可変長の体系的なデータ型です。 |
ジオメトリ | 幾何学的空間データの一種であり、フラットな座標系でオブジェクトを表すために使用されます |
地域 | 地理空間データタイプであり、緯度と経度の座標(latlotとも呼ばれます)をシミュレートします。 SQL Serverは、地理データ型を操作するための一連のメソッドをサポートしています。 |
xml | XMLデータを格納できるデータ型(タグとテキストノードを含み、階層があります) |
カーソル | ポインタへの参照を含む、変数またはストアドプロシージャの出力に使用されるデータ型ですか |
テーブル | 値の一時テーブルを格納するのに特に役立つデータ型。このデータは、後の処理に使用でき、関数、ストアドプロシージャ、バッチで使用できます。 |
行バージョン | このデータ型は自動的に生成され、データベース内に一意の2進数を生成します |
テーブルの作成、編集、削除
テーブルの作成(テーブルの作成)
テーブルを作成するための構文:
ドキュメント: https ://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql?view = sql-server-ver15
-- Simple CREATE TABLE Syntax (common if not using options) CREATE TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name } ( { <column_definition> } [ ,...n ] ) [ ; ]
説明:
- database_name:テーブルを作成するデータベースの名前
- table_name:作成するテーブルの名前(最大128文字)
- column_name:テーブル内の列の名前。最大128文字。注:列のデータ型がタイムスタンプの場合、列名に名前を付ける必要はありません。タイムスタンプデータ型の列のデフォルトの列名は「timestamp」です。
- data_type:列のデータ型(データ型)を定義します
例えば:
USE AdventureWorks2019 CREATE TABLE dbo.CustomerInfo( CustomerID int NOT NULL, CustomerName nvarchar (40) NOT NULL ) GO
短い構文:
USE AdventureWorks2019 CREATE TABLE CusInfo( CusID int identity NOT NULL, CusName varchar(40) NOT NULL )
スキーマ(スキーマ)を定義せずにデフォルトが初期化されている場合、SQLServerは暗黙的にスキーマをdboとして解釈することに注意してください。
テーブルの変更(テーブルの変更)
構文:
ドキュメント: https ://docs.microsoft.com/en-us/sql/t-sql/statements/alter-table-transact-sql?view = sql-server-ver15
ALTER TABLE [[dabase_name.[schema_name].|schema_name.]table_name ALTER COLUMN ([<column_name>] [data_type] NULL/ NOT NULLm); | ADD ([<column_name>] [data_type] NULL/NOT NULL); | DROP COLUMN ([<column_name>]);
説明:
- ALTER TABLE:テーブルを編集する
- ALTER COLUMN:編集する列を定義します
- 追加:1つ以上の列をテーブルに追加します
- DROP COLUMN(<column_name>):テーブルから削除される<column_name>という名前の列名を定義します
列を追加するステートメントの例:
ALTER TABLE [dbo].[CustomerInfo] ADD [ContactNumber] [numberic](12,0) NOT NULL;
列を編集するコマンドの例:
ALTER TABLE [dbo].[CustomerInfo] ALTER COLUMN [CustomerID] numberic[12,0] NOTNULL
列を削除するステートメントの例:
ALTER TABLE [dbo].[CustomerInfo] DROP COLUMN [ContactNumber];
注:列を削除する前に、列に制約がなく、削除できることを確認する必要があります。一部の制約では、列を削除できません。たとえば、列が制約CHECK、FOREIGN KEY、UNIQUE、PRIMARY KEYを使用している場合、または列がデフォルト(DEFAULT)で定義されている場合(次のセクションで説明します)。次の部分)。
ドロップテーブル(ドロップテーブル)
DROP TABLeステートメントは、テーブル定義全体、そのデータ、およびインデックス、トリガー、contrainst、テーブルのアクセス許可仕様など、テーブルに関連付けられているすべてのオブジェクトを削除します。
構文:
DROP TABLE <table_name>
テーブルの削除の例:
DROP TABLE dbo.CustomerInfo
データを変更するコマンド
テーブル内のデータを変更するために、このジョブを実行するINSERT、UPDATE、DELETEステートメントがあります。
SQL ServerでのINSERTに関する記事を参照してください: https ://web888.vn/lenh-insert-trong-sql-server/
SQL ServerのUPDATEに関する記事を参照してください: https ://web888.vn/lenh-update-trong-sql-server/
SQL ServerでのDELETEに関する記事を参照してください: https ://web888.vn/lenh-delete-trong-sql-server/
デフォルトの定義
製品の詳細をSQLServer2019テーブルに格納する必要があるが、データの挿入時でも製品の詳細のすべての値がわからない場合がある状況を考えてみます。ただし、データの整合性と整合性のルールに従って、レコードの列には通常、値が含まれている必要があります。データの正確な値がわからないようにnull値を列に格納すると、いくつかの望ましくない問題が発生する可能性があります。
このような場合、作成時に値が指定されていない場合は、列にDEFAULT定義を指定して、列をデフォルト値として割り当てることができます。たとえば、数値列のデフォルトとしてゼロを指定するのが一般的です。
列のDEFAULT定義は、テーブルの作成時に作成することも、後の段階で現在のテーブルに追加することもできます。 DEFAULT定義がテーブルの既存の列に追加されると、SQL Serverは、テーブルに追加されたデータの新しい行にのみ新しいデフォルトを適用します。
たとえば、CREATE TABLEステートメントはDEFAULTキーワードを使用して、Price。列のデフォルト値を定義します。
CREATE TABLE StoreProduct (ProductID int NOT NULL, Name varchar(40) NOT NULL, Price money NOT NULL DEFAULT(100))
以下のコマンドラインを使用して行を追加すると、値が入力されていない場合、[価格]列のデフォルト値は100になります。
INSERT INTO dbo.StoreProduct (ProductID,Name) VALUES (111,'Laptop Dell 5450') SELECT * FROM dbo.StoreProduct GO
一部の列タイプは、DEFAULT定義を定義できません。
- タイムスタンプデータ型
- IDENTITYまたはROWGUIDCOLの属性を持つ列
IDENTITYプロパティ(IDENTITYプロパティ)
SQL Server IDENTITYプロパティは、テーブルの各行を一意に識別する自動生成された順次値を含むことができるID列を作成するために使用されます。たとえば、ID列を作成して、Studentsテーブルに新しい行が挿入されるたびに一意の学生登録番号を自動的に生成できます。テーブルに挿入された最初の行の識別子は、シード値と呼ばれます。 Identity Incrementプロパティとも呼ばれる増分がシードに追加され、シードに増分を追加することによってSQLServerによって自動的に生成される追加の識別子が作成されます。 ID列は、通常、主キー値に使用されます。
IDENTITY属性を使用する列は、整数データの列である必要があります。
- 10進数
- int
- 数値
- smallint
- bigint
- tinyint
IDENTITY属性を持つ列をSEED(シード)値に設定して増分値(増分)を指定する必要はありません。指定しない場合、SEED値とINCREMENT値はデフォルトで1になります。
構文:
CREATE TABLE <table_name> (column_name data_type IDENTITY(seed_value,increment_value) NOT NULL)
説明:
- seed_value:シード値はIDの値の初期化を開始します
- incremental_value:データベースに新しいレコードがあるたびに増分される値
例えば:
CREATE TABLE HRContactPhone (Person_ID int IDENTITY(500,1) NOT NULL, MobileNumber bigint NOT NULL)
テーブルにデータを挿入して選択する場合:
INSERT INTO HRContactPhone(MobileNumber) VALUES (0911222334) INSERT INTO HRContactPhone(MobileNumber) VALUES (0934333123) SELECT * FROM HRContactPhone GO
グローバルに一意の識別子
SQL Serverは、 IDプロパティに加えて、グローバルに一意の識別子もサポートしています。通常、ネットワーク環境では、複数のテーブルに、グローバルに共通の一意の値を含む列が必要になる場合があります。銀行データベースなどの複数のデータベースシステムからのデータを1つの場所に統合する必要がある状況を考えてみます。世界中のデータが集計とレポートのために中央機関で照合される場合、グローバルに一意の値を使用することで、さまざまな国の顧客が同じ口座番号の銀行または顧客IDを持つことを防ぎます。これを回避するために、SQLサーバーはグローバルに一意の識別子列を提供します。それらは、ネットワーク内のすべてのコンピューターにわたって一意の値を含むテーブルごとに作成できます。各テーブルに対して作成できるのは、ID列とグローバルに一意の識別子列のみです。グローバルに一意の識別子を生成して操作するには、 ROWGUIDCOL 、 uniqueidentifier 、およびNEWID()関数の組み合わせを使用して識別子を生成します。
例えば:
CREATE TABLE Emp_CellularPhone(Person_ID uniqueidentifier DEFAULT NEWID() NOT NULL, PersonName varchar(60) NOT NULL)
次に、データをテーブルに配置します。
INSERT INTO Emp_CellularPhone(PersonName) VALUES ('William Smith') SELECT * FROM Emp_CellularPhone GO