SQL Server中的数据类型、数据库和数据表的创建

时间:2021-08-28 04:36:12

一、 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)——导入(导出数据),按照向导可批量导入导出数据

参考资料:

SQL 用于各种数据库的数据类型

SQL Server数据库技术(Coursera)