【SQL Serverラーニングノート】表の基礎:データ型、作成表、キー、制約、表変数、表と列に注釈を加える

9790 ワード

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、表
   --    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