首页 > 代码库 > 1月11日 数据库及表的操作
1月11日 数据库及表的操作
一、数据类型
1、二进制类型:(有长度限制,可放800个0、1)
格式:
binary[(n)] --固定长度的n个字节二进制数据
varbinary[(n)] --n个字节变长的二进制数据
2、字符数据
格式:
char[(n)] --固定长度为n的字符型数据
varchar[(n)] --最大长度为n的变长字符型数据
相同点:两者最多存8kb,相当于8000个英文字母或数字,也相当于4000个汉字,超过4000字的一般用text文本类型存储
区分char和varchar:
用 char(20)和 varchar(20)两个定义一个长度为10的量,char(20)会用null自动补全空余的10个位置,不用的10个空间不会释放。
而varchar(20)在现在就相当于char(10),剩余10个空间会自动释放,节省空间。 所以,一般选用varchar
3、日期时间数据
格式:
datetime 范围为1753.1.1-1999.12.31
smalldatetime 范围为1900.1.1-2079.6.6
注意:
(1)、日期时间有范围,定义时不要超出其范围
(2)、定义时间时用日期时间数据,尽量别用varchar()
(3)、日期时间类型长度固定
4、实型数据
(1)、定点型数据
格式:
decimal[(p[,s])] --其中p为总数,s为小数位数
numeric[(p[,s])] 若s缺省,则无小数部分
注意:
p包含小数点位数,小数点算一位
例:
若小数点前2为,小数点后4为,则p=7,s=4
(2)、浮点型数据
格式:
float(real)[(n)] --n用于记float尾数的位数
5、货币类型
6、特殊数据类型
bit 只包含0或1,可用于代表true,false
7、文本和图像数据类型
文本(text):用来处理可变长的大文本数据,可存储2GB
图像(image):用来处理图像数据,可存储2GB
二、数据库的创建和管理
SQL语言有3种:DDL(数据定义语言)、DML(数据操纵语言)、DCL(数据控制语言)
1、数据库的创建:
格式:
CREATE DATABASE 数据库文件名 --数据库起名 CREATE是创建的意思
ON [PRIMARY] --指定数据主文件名 若不加PRIMARY时,为次文件名
( NAME = logical_file_name,
FILENAME = ‘os_file_name‘,
SIZE=size, --初始化文件大小
MAXSIZE=maxsize, --指定文件的最大值
FILEGROWTH=growth_increment ) --指定文件增长的增量
LOG ON --日志文件
(
NAME = logical_file_name,
FILENAME = ‘os_file_name‘,
SIZE=size,
MAXSIZE=maxsize,
FILEGROWTH=growth_increment
)
2、修改数据库
ALTER DATABASE database
3、删除数据库
DROP DATABASE
注意:所删除的数据库一定不能处于使用状态
三、表的创建和管理
1、创建表
CREATE TABLE [[数据库名.]表所有者.]表名
( { 列名 数据类型}
[NULL | NOT NULL]
{列名 AS 列表达式} --可以通过其他表计算出来的列用列表达式表示
[,........] )
[ON {文件组名 | DEFAULT}]
2、指定默认值
格式:
[DEFAULT 常量表达式]
例:CREATE TABLE STUDENT
(
NAME CHAR(8),
COLLECE CHAR(20) DEFAULT ‘黑龙江八一农垦大学‘ --如果没填默认为 黑龙江八一农垦大学
)
3、标识列(自增长列)
格式
CREATE TABLE [[数据库名.]表所有者.]表名
( { 列名 数据类型}
[IDENTITY (种子值,增长值) NOT NULL] --种子值(意思是从几开始增) 增长值是(一次增长几个)
[.............,]
)
注意:
(1)、一个表只能有一列定义为IDENTITY 属性。该列必须以 decimal、int、numeric、smallint、bigint、tinyint数据定义。
(2)、若不定义种子值和增长值,二者默认为1
(3)、标识符列不允许为空值,也不能包含DEFAULT
*(4)、insert into 输入时,若有标识列,可自动省略。
例:表student有两 ID列、NAME列 两列 ,其中ID列为标识符列,
则输入时 insert into student values(‘刘明‘) --只需要输入一个数,到表内标识符列自动生成
*(5)、标识列用一个废一个,一旦用了就不能再用了
例:若一个三行的student表,ID列为标识列,NAME列为姓名列,删除第二行姓名,再添加一个是,ID列自动变为4。
如果发现ID4的名字填错了,改过来之后,ID会自动变为5
(6)若想从头开始填标识符列, truncate 表名 --truncate 是截断、清空的意思
4、CHECK检查约束
目的:主要是防止出现一模一样的数值,可作为区分。
操作:找到要操作的表——>右键——>设计——>找到想设CHECK约束的列名——>右键——>CHECK约束
5、定义主关键字
主键的特征:
(1)、唯一性。一个表只有一个主键
(2)、不为空。不能在主键列中输入NULL值
(3)、每一个表都应设主键
(4)、主键会自动排序
主键的类型:
(1)、一般设置一个主键
(2)、有时也会设置2个主键,也就是组合主键。组合主键的意思是唯一不重复的组合,其中一个每一个都可能重复,但组合起来就不可能重复了。
操作:找到要操作的表——>右键——>设计——>找到想设置的列名——>右键——>设置主键 //或者直接点击想设置的列,然后点击左上方的钥匙标记
6、定义外关键字
(1)、外键一般涉及两个表:主表和从表
主表:用来约束的表
从表:被约束的表 --外键一般建在从表上
(2)、找到要操作的表——>右键——>设计——>点击左上角与主键挨着的那个关系键——>添加——>然后在右边的栏里选择需要设置的项 --第一种
数据关系图——>右键——>新建关系图——>选择有关系的图——>钥匙指向的一方为主表 (可以在里面直接设置主键,有关系的直接连接起来即可)
注意:
INSERT 和UPDATE规范中有更新规则和删除规则:
(1)、删除规则的: 不执行任何操作 --从表已经使用的项主表不能删除、修改
级联 --主表删除,从表跟着删。
设置NULL --主表删除,从表变为NULL。
更新规则的: 不执行任何操作 --从表已经使用的项主表不能更新
级联 --主表更新,从表跟着更新。
设置NULL --主表更新,从表变为NULL。
7、候选键(主键以外的唯一不重复键)
UNIQUE 约束
特征:
(1)、不重复
(2)、可有多个 --UNIQUE 约束可以有多个
(3)、可为空 --UNIQUE 约束可以为空
(4)、不具备自动排序功能
操作:
找到要操作的表——>右键——>设计——>找到要约束的列——>添加——>类型 唯一键
8、添加列
ALTER TABLE 表名 --修改表
9、删除表
DROP TABLE 表名
1月11日 数据库及表的操作