【SQL Serverラーニングノート】表の基礎:データ型、作成表、キー、制約、表変数、表と列に注釈を加える
1、表中のフィールドタイプ
SQL Serverのフィールドタイプは、次のように分類されます.
A、文字型:char、nchar、varchar、nvarchar
B、正確な数値型:bit、tinyint、smallint、int、bigint、smallmoney、money、numeric、decimal(numericと全く同じ)
C、非精確数値型:float、real
D、日時型:date、smalldatetime、datetime、datetime 2、datetimeoffset、time、timestamp
E、バイナリタイプ:binary、varbinary
G、以降のSQL Serverで削除されるタイプ:text、netxt、image
F、その他のタイプ:xml、hierarchyid、geography、geometry、uniqueidentifier、sql_variant、table(テーブル変数、テーブル値関数で定義された行の格納にのみ使用)
2、表
3、並べ替え規則
char、nchar、varchar、nvarcharタイプの列では、WindowsまたはSQLソート・ルールを指定できます.
戻る:Chinese-PRC,case-insensitive,accent-sensitive,kanatype-insensitive,width-insensitive.
意味:大文字と小文字が敏感ではなく、なまりが敏感で、仮名が敏感ではなく、幅が敏感ではない.
注:同じインスタンスの同じデータベースまたは複数のデータベースに対して異なるソート・ルールが定義されている場合、互換性額の問題がある場合があります.ソート・ルール間の関連付けが正しくない可能性があり、データ転送に損失やエラーが発生します.
4、キー
5、表変数
テーブル変数は、プライマリ・キー、一意制約、check制約を定義できますが、インデックス、外部キーは追加できません.バッチ、ストレージ・プロシージャ、関数で使用できます.その後goは使用できません.goを使用すると、その後はテーブル変数を参照できません.
6、拘束
7、表と列に注釈を追加し、拡張属性を追加することで実現する
これらの拡張情報は、試行中に問い合わせることができます.
SQL Serverのフィールドタイプは、次のように分類されます.
A、文字型:char、nchar、varchar、nvarchar
B、正確な数値型:bit、tinyint、smallint、int、bigint、smallmoney、money、numeric、decimal(numericと全く同じ)
C、非精確数値型:float、real
D、日時型:date、smalldatetime、datetime、datetime 2、datetimeoffset、time、timestamp
E、バイナリタイプ:binary、varbinary
G、以降のSQL Serverで削除されるタイプ:text、netxt、image
F、その他のタイプ:xml、hierarchyid、geography、geometry、uniqueidentifier、sql_variant、table(テーブル変数、テーブル値関数で定義された行の格納にのみ使用)
2、表
-- CREATE TABLE t (vid INT NOT NULL, v VARCHAR(20) NOT null, vidd int not null) -- ALTER TABLE t ADD vv INT NULL -- -- Null NOT NULL, -- , varchar、nvarchar、varbinary , ALTER TABLE t ALTER COLUMN v VARCHAR(10) -- NULL -- , NULL, ALTER TABLE t ALTER COLUMN v varchar(50) COLLATE Chinese_PRC_CI_AS -- /*================================================================================= : 1. Default 、Foreign key 2. ( ), 、 。 3. , ( , )、 ( )。 4. , , , , 。 、 ( ) ===================================================================================*/ alter table t add computeColumn as (vid * vidd) -- alter table t add persistedColumn as (vid * vidd) persisted -- alter table t alter column persistedColumn drop persisted -- alter table t alter column persistedColumn add persisted /*======================================================================== : 1. primary key ,foreign key , unique , check , default , 。 2. ==========================================================================*/ alter table t drop column v /*======================================================================== 、 , , : 1. 30000 , , image、ntext、text、timestamp、geometry、geography、 。 2. , NULL 。 2. 。 , , 。 A: COLUMN_SET FOR ALL_SPARSE_COLUMNS 。 B: . C: , , , , 。 D: DML , NULL 。 , , 。 ==========================================================================*/ -- create table tt (vvid int not null, v1 varchar(10) SPARSE null, v2 varchar(30) SPARSE null, v3 int SPARSE null, v4 numeric(10,2) SPARSE null, v5 datetime SPARSE null ) INSERT INTO tt(vvid,v1,v2) values(1,'spv2','spv2') -- alter table tt alter column v1 drop SPARSE -- alter table tt alter column v1 add SPARSE -- create table tx (id int not null, v1 varchar(10) SPARSE null, v2 varchar(20) SPARSE null, v3 varchar(30) SPARSE null, vX XML COLUMN_SET FOR ALL_SPARSE_COLUMNS) INSERT INTO tx(id,v1) VALUES(1,'XYZ') -- alter table TX alter column v1 DROP SPARSE -- 、 SELECT * FROM TX -- DML , NULL 。 select ID,v1,v2,v3,vx from tx -- , -- :COLUMN,DATABASE,INDEX,OBJECT( , , , , ),USERDATATYPE exec sp_name @objname = 'dbo.tt.v', @newname = 'wc', @objtype = 'column' -- exec sp_rename @objname = 'dbo.t', @newname = 't1', @objtype = 'object' -- sp_help 'dbo.tt' -- drop table tt,t1,t
3、並べ替え規則
char、nchar、varchar、nvarcharタイプの列では、WindowsまたはSQLソート・ルールを指定できます.
-- SQL Server select SERVERPROPERTY('Collation') -- :Chinese_PRC_CI_AS -- select DATABASEPROPERTYEX('test2','Collation') -- :Chinese_PRC_CI_AS -- , select description from sys.fn_helpcollations() where name = 'Chinese_PRC_CI_AS'
戻る:Chinese-PRC,case-insensitive,accent-sensitive,kanatype-insensitive,width-insensitive.
意味:大文字と小文字が敏感ではなく、なまりが敏感で、仮名が敏感ではなく、幅が敏感ではない.
-- NULL NOT NULL create table wc (vid int not null, v varchar(10) collate Chinese_PRC_CI_AS) -- alter table wc add v1 varchar(20) COLLATE Chinese_PRC_CI_AS, v2 varchar(30) COLLATE Chinese_PRC_CI_AS
注:同じインスタンスの同じデータベースまたは複数のデータベースに対して異なるソート・ルールが定義されている場合、互換性額の問題がある場合があります.ソート・ルール間の関連付けが正しくない可能性があり、データ転送に損失やエラーが発生します.
4、キー
-- create table t (id int primary key, idd int not null) -- 、 ( ), create table tt (id int not null, idd int not null, constraint pk_id_idd1 primary key clustered (id,idd)) -- 、 ( ) create table ttt (id int not null, idd int not null, constraint pk_id_idd2 primary key nonclustered (id,idd)) -- , create table tttt (id int not null, idd int not null, iddd int not null) alter table tttt add constraint pk_id_idd3 primary key clustered (id,idd) -- create table t1 (id int not null, idd int , iddd int, foreign key (idd) references t(id)) -- create table t2 (id int not null, idd int , iddd int, constraint fk_wc1 -- foreign key(iddd) references t(id), constraint fk_wc2 -- 2 , 2 foreign key(id,idd) references tt(id,idd)) -- , create table t3 (id int not null, idd int not null, constraint pk_wc3 primary key clustered(id), -- constraint fk_wc4 -- foreign key(idd) references t3(id)) -- , , create table t4 (id1 int , id2 int , id3 int , id4 int default 0, constraint fk_wc5 foreign key (id1) references t(id) on delete no action -- , on update no action, -- , constraint fk_wc6 foreign key (id2) references t(id) on delete cascade -- , on update cascade) -- , /* constraint fk_wc7 foreign key (id3) references t(id) on delete set null -- , NULL on update set null), -- , NULL constraint fk_wc8 foreign key (id4) references t(id) on delete set default -- , , on update set default -- , */ )
5、表変数
テーブル変数は、プライマリ・キー、一意制約、check制約を定義できますが、インデックス、外部キーは追加できません.バッチ、ストレージ・プロシージャ、関数で使用できます.その後goは使用できません.goを使用すると、その後はテーブル変数を参照できません.
6、拘束
-- -- create table tt(id int not null unique) -- alter table tt add idd int not null unique -- alter table tt add iddd int not null, idddd int not null -- alter table tt add constraint uq_tt1 unique(iddd,idddd)
-- check create table tt(id int not null check(id > 5 and id <=100)) -- check alter table tt add idd int not null check(idd >=100) -- check ,with check , -- , , alter table tt with check add constraint ck_tt check(id >=8 and idd >=120) -- check ,with check , alter table tt with nocheck add constraint ck_ttt check(id >=8 and idd >=120) -- ck_ttt alter table tt nocheck constraint ck_ttt -- insert into tt values(6,100) -- -- ck_ttt , -- alter table tt check constraint ck_ttt -- check、foreign key alter table tt nocheck constraint all -- check、foreign key alter table tt check constraint all
-- default create table t(id int not null default 1) -- alter table t add idd int not null default 2 -- alter table t add iddd int not null -- , : 2 default alter table t add constraint df_t default 123 for iddd
7、表と列に注釈を追加し、拡張属性を追加することで実現する
create table ttt (id int not null primary key, v varchar(100) ) -- -- , exec sp_addextendedproperty @name = 'ttt_desc1', -- @value = ' ', -- @level0type ='schema', -- 0 @level0name = 'dbo', -- @level1type = 'table', -- 1 @level1name = 'ttt' -- exec sp_addextendedproperty @name = 'ttt_desc2', -- @value = ' ', -- @level0type ='schema', -- 0 @level0name = 'dbo', -- @level1type = 'table', -- 1 @level1name = 'ttt', -- @level2type = 'column',-- 2 @level2name = 'id' -- -- exec sp_updateextendedproperty @name = 'ttt_desc2', -- @value = ' , ', -- @level0type ='schema', -- 0 @level0name = 'dbo', -- @level1type = 'table', -- 1 @level1name = 'ttt', -- @level2type = 'column',-- 2 @level2name = 'id' -- -- EXEC SP_DROPextendedproperty @name ='ttt_desc2', @level0type ='schema', -- 0 @level0name = 'dbo', -- @level1type = 'table', -- 1 @level1name = 'ttt', -- @level2type = 'column',-- 2 @level2name = 'id' --
これらの拡張情報は、試行中に問い合わせることができます.
--SQL Server 2000 select * from sysproperties --SQL Server 2005 select * from sys.extended_properties