SQL server 2012之使用T-SQL语句对表和索引的操作

1基本表

1.1创建基本表

SQL语言使用create table 语句定义基本表,其基本格式如下:

create table <表名> 
(
	<列名><数据类型>[列级完整性约束条件]
	[,<列名><数据类型>[列级完整性约束条件]]
	...
	[,<表级完整性约束条件>];
)

例1、建立一个“学生”表student

create table <表名> 
(
	sno char(9) primary key,     //把sno设置为主键
	cno char(4)
	sname char(20) unique,		//sname取唯一值
	ssex char(2),
	sage smallint,
)

这里需要注意的是,如果snocno同时设置为主键,则SQL语句为:primary key(sno,cno);外键设置是:foreign key (列名) references 表名1(列名)(列名是外码,两个列名是一样的,被参照表是表名1)

1.1.1在某个模式下创建表

每一个基本表都属于某一个模式,一个模式包含多个基本表。当定义基本表时一般有三种定义它所属的模式的方法:

方法一:在表名中明显的给出模式名。

create table "S-T".student (...)			//表student所属的模式时S-T

方法二:在创建模式语句中同时创建表。

create schema test authorization liu
create table <表名> 
(
	...
)

方法三:设置所属的模式,这样在创建表时表名中不必给出模式名。

//先设置搜索路径:
set search_path to "S-T",public;

//然后,定义基本表:
create table student
(
	...
)

1.2修改基本表

使用T-SQL语句修改基本表,其一般格式为:

alter table <表名>
[add [column]<新列名><数据类型>[完整性约束]]
[add <表级完整约束>]
[drop [column] <列名>[cascade|restrict]]
[drop constraint <完整性约束名>[cascade|restrict]]
[alter column<列名><数据类型>];

例2、将年龄的数据类型由字符型(假设原来的数据类型是字符型)改为整型

alter table student 
alter column sage int;

1.3删除基本表

使用T-SQL语句删除基本表,其一般格式为:

drop table <表名>[restrict|cascade];

这里需要说一下restrictcascade和上一个博客中删除模式是一样的,这里就不做详细介绍,不明白的可以参考上一个博客-模式的删除。

1.4表中数据类型

数据类型 含义
char(n),character(n) 长度为n的定长字符串
nchar(n) 长度为n的定长字符串
varchar(n) 最大长度为n的变长字符串
nvarchar(n) 可变长度的 Unicode 数据,最大长度为n的变长字符串
clob 字符串大对象
tinyint 允许从 0 到 255 的所有数字(1字节)
int,integer 长整型(4字节)
smallint 短整型(2字节)
bigint 大整数(8字节)
numeric(p,d) 定点数,有p位数字(不包括符号、小数点)组成,小数点后面有d位数字
decimal(p,d),dec(p,d) 同numeric
real 取决于机器精度的单精度浮点数
double precisionl 取决于机器精度的双精度浮点数
float(n) 可选精度的浮点数,精度至少为n位数字
boolean 逻辑布尔值
date 日期,包括年、月、日,格式为 YYYY-MM-DD
time 时间,包括一日的时、分、秒,格式为 HH:MM:SS
timestamp 时间戳类型
interval 时间间隔类型

这里我需要说明一下char(n),nchar(n),varchar(n),nvarchar(n)的区别:

  1. char(4):不论你存储的数据是否达到了4个字节,都要占去4个字节的空间;
  2. nchar(4):一般情况下一个汉字是占用两个字节,而使用nchar(4),可以输入4个字节;
  3. varchar(4):如果一个字段可能的值是不固定长度的,我们只知道它不可能超过4个字符,把它定义为 VARCHAR(4)是最合算的;
  4. nvarchar(4):把2、3结合在一起就是nvarchar(4)了,判断字符串的时候可以不需要考虑中英文两种字符的差别,输入几个字符就可以输入几个中文。

索引

2.1 建立索引

建立索引使用create index 语句,其一般格式为:

create [unique][cluster] index <索引>
on <表名>(<列名>[<次序>][,<列名>[<次序>]]...)

其中,<表名>就是建索引的基本表的名字。索引可以建立在该表的一列或多列上,各列名之间用逗号分隔。每个<列名>后面还可以用<次序>指定索引值得排列次序,可选asc(升序)或者desc(降序)默认是asc;
unique 表示此索引的每一个索引值只对应唯一的数据记录。
cluster 表示要建立的索引是聚簇索引。

例3、为student数据库中的sc表按学号降序,课程号升序建立唯一索引

create unique index scno 
on sc (sno desc,cno asc);

2.2修改索引

如果需要对已经建立好的索引进行重新命名,可以使用alter index 语句。其一般格式如下:

alter index <旧索引名> rename to <新索引名>

2.3删除索引

在SQL中,删除索引使用drop index 语句,其一般格式为:

drop index <索引名>

这里需要注意一下,有时如果使用该语句删除不了索引时就使用: drop index <索引名> on <表名>进行删除。

猜你喜欢

转载自blog.csdn.net/ITrumenshaonian/article/details/89335132