欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-15 16:33:19
...

一、 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)