SQL server数据类型
整数型:
BIGINT
INT
SMALLINT
小数型:
FLOAT
DOUBLE
文本型:
CHAR
VARCHAR
NCHAR
NVARCHAR
TEXT
日期和时间类型
DATE
TIME
DATETIME
布尔型:
BIT
数据类型 | 含义 |
INT | 长整数(也可以写作INTEGER) |
SMALLINT | 短整数 |
CHAR(n) | 长度为n的定长字符串, 不足n个字符的空白部分用空格补齐 |
VARCHAR(n) | 最大长度为n的变长字符串,如果输入字符串长度不足n ,不足的部分不会使用空格补齐 |
TEXT | 文本输入 |
FLOAT(n) | 浮点数, 精度至少为小数点后n位数字 |
DOUBLE(n) | 双精度浮点数 |
DATE | 日期类型,包含年月日,格式为: YYYY-MM-DD |
TIME | 时间类型,包含一日的时分秒,格式为: HH:MM:SS |
DATETIME | 日期时间类型, 是日期类型和时间类型的结合 格式为: YYYY-MM-DD HH:MM:SS 日期数据和时间数据中间用空格隔开 |
BIT | 使用1/0 来表示 ture / false |
如何正确选择数据类型
一个属性该如何来选取对应的数据类型呢?
一般来说, 像年龄这种会经常改变的属性, 同时它还包含这运算, 排序的需求,就比如书按年龄排序, 求一个表的记录的平均年龄等, 这种情况一般采用整数类型.
对于char这种定长字符串, 一般用于学号, 性别等固定不变的数据,如果信息的某一个记录集合所记录的数据长度在某个范围变化,字符长度不统一, 不确定的时候, 就可使用VARCHAR来设置最大字符串长度来限定. 他能最大程度的节省空间是一个很高效的数据类型.. char和varchar都是存储ANSI格式的字符串, 而NCHAR和NAVRCHAR是使用unicode格式来存储的字符串.
其中text也是可变长度的字符串, 但是text不需要指定字符串长度, text将根据实际录入长度来决定占用空间大小
而date,time和datetime是用才表示日期时间的.按需求选取即可.
SQL server Management studio管理工具的使用
使用前提
启动SQL server服务:
在搜索框中搜索服务并打开, 显示如下:
打开对应的数据库服务即可
连接数据库
对象资源管理器
下载安装好之后, 打开Management studio管理工具, 可以看到其左侧边栏(对象资源管理器)显示如下:
就像MySQL一样, SQLserver管理工具也有一个命令窗口
新建数据库
分如下几步:
选中数据库, 然后右键呼出目录, 点击新建数据库
输入数据库名称
点击确认
新建查询
点击新建查询
就可以看到有如下的界面 :
可以在里面输入对应的SQL语句.
一个简单的使用案例
新建一个名为test的数据库:
选中test数据库:
使用use语句选中test数据库, 或者是左边下拉栏, 选中test, 就ok了
创建一个学生表数据库:
学生表包含基本信息, 包括但不限于: 姓名, 年龄, 性别, 学号, 身份证等等.
写好SQL语句之后,点击执行
执行完之后, 如果成功则会显示, 命令已成功完成
在test的资源管理器视图当中就可以看到student的表的数据*(这里的dbo为前缀, 这里不做过多讲解)
约束条件
常用的约束条件的表示和作用
名称 | 语法表示 | 约束作用 |
主键约束 | primary key | 输入值非空不重复 |
非空约束 | not null | 输入值非空 |
重复约束 | unique | 输入值是唯一的 |
默认值约束 | default | 没有输入值的时候,设置为默认值 |
检查约束 | check | 检查输入值是否满足设置的条件 |
单/多字段主键
单字段主键:
create table emp (
depid char(3) primary key,
depname varchar(20)
)
多字段主键
create table emp (
depid char(3) primary key,
depname varchar(20),
primary key(depid, depname)
)
创建表的时候增加约束
create table emp (
id char(10) primary key, /*primary key == unique && not null*/
depName varchar(20) not null,
address varchar(20) not null default 'xxxx',
sex char(3) check (sex = '男' or sex = '女'),
age int check (age in between 20 and 60)
)
其中id为主键约束, not null为非空约束等等.
创建表后增加约束字段
使用alter关键字, 使用语法:
alter table 表名 alter column 字段 数据类型 约束条件
创建表格:
create table emp (
id char(10) primary key, /*primary key == unique && not null*/
depName varchar(20) not null,
address varchar(20) not null default 'xxxx',
sex char(3) check (sex = '男' or sex = '女'),
age int check (age in between 20 and 60)
)
设置非空
语法为:
alter table emp alter column age int not null
我们查看对象资源管理器可以看到: age属性的 允许Null值 没有被勾选上了, 也就是不允许为null值
为不同字段增加不同条件的约束
语法:
alter table emp
constraint PK_depname primary key(depname),
constraint CK_address check(address like '%省%'),
constraint DF_address default('xx省xx市') for address
基本表的定义删除与修改
创建表
使用语法:
create table 表名 (
属性_1 数据类型 约束条件_1
属性_2 数据类型 约束条件_2
属性_3 数据类型 约束条件_3
属性_4 数据类型 约束条件_4
/* ......*/
)
对应的表的图形化表示可以参考Excel表格中的图形界面.例如:
例如, 建立一个属性包含学生学号(Sno), 姓名(Sname), 性别(Ssex), 年龄(Sage), 和所在系(Sdept)的学生表(Student):
create table Student (
Sno char(9) primary key, /*primary key 为一种约束条件*/
Ssex char(3) check (Ssex ='女' or Ssex ='男'),
Sname varchar(20),
Sage smallint,
Sdept char(20)
);
修改表
有时候我们已经创建好表格了, 但是随着应用和需求不断的变化, 这个时候就需要对已经建立好的基本表进行修改, SQL 用alter table来修改基本表, 一般格式为:
alter table 表名
add 新属性名 数据类型 完整性约束
drop 完整新约束名
alter column 属性名 数据类型
这个表名就是要修改的基本表, add用来增加新的属性, 也就是新的列, drop用来删除指定的完整性约束条件, alter column用于修改原有属性的定义(包括修改属性名和数据类型)
我们就以上面那张表为例子:
1.向Student表中增加"入学时间"属性, 数据类型为日期类型:
alter table Sutdent
add Sentrance date;
其中Sentrance为"入学时间"的列名, date为时间类型, 无论基本表中是否已经有数据, 新增加的属性一律为空值.
2.将Student表中年龄的数值类型改为字符型
alter table Student
alter column Sage varchar(10);
3. 为Student表中名字增加唯一性约束
alter table Student
add unique(Sname)
删除表
使用drop table来删除基本表;
drop table 表名 [restrict | cascade]
后面的restrict和cascade是选择删除模式, 如要选择restrict的话, 则该表的删除是有限制条件的, 想要删除这样的表, 就不能被其他表的约束所引用, 例如check和foreign key等, 不能有视图, 不能有触发器, 不能有存储过程和函数等, 如果存在依赖这个表的对象, 则删除会失败
若是选择cascade, 则该表的删除没有限制条件, 再删除表的同时, 相关的依赖对象(例如视图, 索引, 触发器等等)都会被一起删除.