SQL Server中的数据类型、数据库和数据表的创建
一、 SQL Server数据库数据类型
==字符串(string)类型==
数据类型 | 描述 |
---|---|
char(n) | 固定长度的字符串。最多8000个字符 |
varchar(n) | 可变长度的字符串。最多8000个字符 |
varchar(max) | 可变长度的字符串。最多1,073,741,824个字符 |
text | 可变长度的字符串。最多2GB文本数据 |
nchar() | 固定长度的Unicode字符串。最多4000个字符 |
nvarchar() | 可变长度的Unicode字符串。最多4000个字符 |
nvarchar(max) | 可变长度的Unicode字符串。最多536,870,912个字符 |
ntext() | 可变长度的Unicode字符串。最多2GB文本数据 |
bit | 允许0,1或NULL |
binary(n) | 固定长度的二进制字符串。最多8000字节 |
varbinary(n) | 可变长度的二进制字符串。最多8000字节 |
varbinary(max) | 可变长度的二进制字符串。最多2GB |
image | 可变长度的二进制字符串。最多2GB |
==数值(Number)类型==
数据类型 | 描述 |
---|---|
int | 允许介于-2,147,483,648至2,147,483,647之间的数字 |
tinyint | 允许介于0至225之间的数字 |
smallint | 允许介于-32768至32767之间的数字 |
bigint | 允许介于-9,223,372,036,854,775,808与-9,223,372,036,854,775,807之间的数字 |
decimal(p,s) | 固定精度和比例的数字。p表示可以存储的最大位数,取值于1-38之间,默认是18;s表示小数位数,取值0-p之间,默认是0 |
numeric(p,s) | 同 numeric(p,s) |
samllmoney | 介于-214,748.3648与-214,748.3647之间的货币数据 |
money | 介于-922,337,203,685,477.5808与-922,337,203,685,477.5807之间的的货币数据 |
float(n) | 浮动精度的数字。float(24)表示保存4字节,float(53)表示保存8字节。默认n为53 |
real | 从-3.40E+38到3.40E+38的浮动精度数字 |
==日期(Date)类型==
数据类型 | 描述 |
---|---|
date | 仅日期。从0001年1月1日到9999年12月31日 |
time | 仅时间。精度为100纳秒 |
datetime | 日期和时间。从1753年1月1日到9999年12月31日,精度为3.33毫秒 |
datetime2 | 日期和时间。从1753年1月1日到9999年12月31日,精度为100纳秒 |
smalldatetime | 日期和时间。从1900年1月1日到2079年12月31日,精度为1分钟 |
datetimeoffset | 与datetime2相同,外加时区偏移 |
timestamp | 存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp基于内部时钟,不对应于真实时间。每个表只能有一个timestamp变量 |
==其他数据类型==
数据类型 | 描述 |
---|---|
sql_variant | 存储最多8000字节不同类型数据,除了text,ntext以及timestamp |
uniqueidentifier | 存储全局唯一标识符(GUID) |
xml | 存储XML格式化数据,最多2GB |
cursor | 存储对用于数据库操作的指针的引用 |
table | 存储结果集,共稍后处理 |
二、SQL和数据库数据表的创建
SQL,指数据化查询语言,全称是Structured Query Language,是存取数据以及查询、更新和管理关系数据库的标准语言。
一些重要的SQL命令
CREATE DATABASE -创建新数据库
CREATE TABLE -创建新表
SELECT -从数据库中提取数据
UPDATE - 更新数据库中的数据
DELETE -从数据库中删除数据
INSERT INTO -向数据库中插入数据
ALTER TABLE -变更数据表
DROP TABLE -删除表
CREATE INDEX - 创建索引
DROP INDEX - 删除索引
CREATE VIEW - 创建视图
DROP VIEW -删除视图
==数据库的创建、修改和删除==
创建数据库
语法: CREATE DATABASE <数据库名>
SQL标识符不区分大小写,但一般建议大写
实例 :
CREATE DATABASE teaching;
修改数据库名称
ALTER DATABASE teaching MODIFY NAME=teaching1;
删除数据库
DROP DATABASE teaching1;
==创建数据表==
语法:
CREATE TABLE 表名
(
列名1 数据类型 [列约束1],
列名2 数据类型 [列约束2],
[,…n],
[表约束]
)
[ ]表示里面的内容是可选的,[,…n]表示前面的项可重复多次
所有内容可以写为一行,将不同意义的内容分多行写增加其可读性
实例:
--创建带有主键约束和其他约束的数据表
CREATE TABLE Student
(
sclass varchar(10) NOT NULL,
snumb varchar(10) PRIMARY KEY,
sname varchar(10) NOT NULL,
segender varchar(4) DEFAULT '男' CONSTRAINT consgender CHECK (sgender IN('男','女'))
sbirthday date,
sage int CONSTRAINT consage CHECK (sage>=0 AND sage<=150)
);
注:
1. NOT NULL -非空约束
2. PRIMARY KEY -主键约束,设置该字段为主键
3. 键/码是指数据库中能唯一标识一条记录的属性或属性集,分为主键和外键。一个表可以有多个键,但只能有一个主键,主键的取值不能重复,也不能为空。外键:在本表中不是主键,但在另一个表中是主键;外键的取值必须是另一表中对那个主键的取值之一。
4. DEFAULT -设置默认值
5. CONSTAINT 约束名 CHECK (条件) -设置列约束,
--创建带有组合主键和外键的数据表
CREATE TABLE Study
(
snumb varchar(20),
cnumb varchar(10),
score decimal(5,2),
PRIMARY KEY (snumb,cnumb),
FOREIGN KEY (snumb) REFERENCES student(snumb),
FOREIGN KEY (cnumb) REFERENCES course(cnumb)
);
注:
1. 创建组合主键,写在所有字段后面,PRIMARY KEY (字段名)
2. 创建外键:FOREIGN KEY (外键字段名) REFERENCES 对应表名(对应表主键名)
==向数据表中插入数据==
INSERT INTO 表名 (字段名表) VALUES (值列表)
字段名表:用逗号隔开的字段名或表达式
<值列表>的顺序和类型要和前面的<字段名表>对应,逗号分隔
--在Student表中插入数据
INSERT INTO Student
VALUES('电气','2016006001','王涛','男','1997-2-1',21);
INSERT INTO Student (snumb,sname,sclass)
VALUES ('2016006002','田园','电气');
==简单查询数据表中的数据==
--查询Student表中的所有字段
SELECT * FROM Student
==从数据库中批量导入导出数据==
在SQL SERVER数据库引擎中,选中数据库,鼠标右键——任务(task)——导入(导出数据),按照向导可批量导入导出数据
参考资料:
推荐阅读
-
mysql中数据库与数据表编码格式的查看、创建及修改
-
mysql中数据库与数据表编码格式的查看、创建及修改
-
理解SQL SERVER中的逻辑读,预读和物理读
-
SQL Server中通过扩展存储过程实现数据库的远程备份与恢复
-
sql server中通过查询分析器实现数据库的备份与恢复方法分享
-
SQL Server 日期函数CAST 和 CONVERT 以及在业务中的使用介绍
-
SQL Server遍历表中记录的2种方法(使用表变量和游标)
-
SQL Server数据库中批量导入数据的四种方法总结
-
在SQL Server 2005中创建CLR存储过程的详细介绍
-
在oracle 数据库中查看一个sql语句的执行时间和SP2-0027错误