二 数据表的创建和管理
数据库是我们用的别人的。。数据表就该我们自己创建了吧。。
1.数据基本类型
建表的时候,需要我们确定好这个表有多少字段,这些字段又都是什么类型的(其实创建完以后这些东西也能改)。那么数据库接纳的数据类型有哪些呢:
1.整数 2.浮点数 3.字符串 4.日期时间 5.二进制
其中整数假如是在32位系统中,可以表示-2147483648~2147483647之间的整数。一般整数可以用作主键~
字符串类型数据,一般分为固定长度char(),可变长度vchar(),国际化可变长度及大字符串nvchar()。固定长度和可变长度都只能存储基于ASCII的字符,对于其他使用中文、日文、韩文等Unicode字符集的程序,会造成存储问题,所以可以使用国际化可变程度字符串。前面三个的长度,都不能超过1024,在保存一些较大字符串时,我们可以使用大字符串,但是尽量少的使用大字符串。
一般使用日期类型,我们可以使用时间戳来保存,即since1970;
假如保存一张图片,或者视频,我们需要使用二进制数据保存。
2.通过SQL语句管理数据库
很多工具都支持图形化操作界面,可是使用SQL语句操作数据库将更加方便。
2.1创建数据表
CREATE TABLE 表名
(
字段名 1 字段类型,
字段名2 字段类型,
约束定义1,
约束定义2
)
CREATE语句就告诉了数据库,创建一张表,CREATE TABLE 后面紧跟着表名,这个表名不能跟数据库中已有的表重复。
括号内的是表定义,分为字段定义和约束定义,一张表至少要有一个字段定义,约束定义包括主键定义,外键定义,和唯一约束定义。
CREATE TABLE T_Person
(
FName VARCHAR(20),
FAge INT
)
这个例子就创建了一张Person表,里面有name,age等字段。
2.2定义非空约束
有时候,我们希望数据库中某些字段是必填的,比如网站注册的时候,我们需要用户账号,密码,那么就可以将这两个字段设置为非空约束:
CREATE TABLE T_Person
(
FName VARCHAR(20) NOT NULL ,
)
2.3定义默认值
我们可以在定义表的时候,给某个字段设置一个默认值,向这个字段插入数据时,假如没有值则默认使用这个默认值,可以使用
CREATE TABLE T_Person
(
FName VARCHAR(20) DEFAULT ‘xiaoming’,
)
2.4定义主键
上面说到可以将一个字段设置为主键,是在所有字段定义完以后设置:
CREATE TABLE T_Person
(
FNumber INT(20),
FName VARCHAR(20),
FAge INT,
PRIMARK KEY (FNumber)
)
这样就将FNumber这个字段设置为了主键,主键最好添加非空约束,这样保证了主键不为空。
有时候,一个字段是不能保证唯一确定一条记录的,这时需要联合主键,可以有两个或者多个字段作为联合主键:
CREATE TABLE T_Person
(
FNumber INT(20),
FName VARCHAR(20),
FAge INT,
PRIMARK KEY (FNumber,FName)
)
这样将FNumber,FName两个字段作为了主键,联合主键中每个字段必须也被设置为非空。但是联合主键有以下缺点:1.效率低2.使数据库设计结构变得脏乱差3.创建指向此表的外键关联关系变得非常麻烦4.增大开发难度。所以一般不使用联合主键。2.5定义外键
外键是非常关键的概念,也是数据库中 “关系的体现” ,在表定义中,使用FOREIGN KEY 外键字段名称 REFERENCES 目标表名(被关联的字段名称) 该语句,来体现外键关联关系。
CREATE TABLE T_Dog
(
FNumber INT(20),
FName VARCHAR(20),
FAge INT,
PRIMARK KEY (FNumber),
FOREIGN KEY (TNumber) REFERENCES T_Person(TName)
)
2.6修改已有数据表
有时候,我们需要修改已经创建好的Table表,比如添加字段,删除字段,修改表名,修改字段名称,修改字段类型等。这时候可以使用ALTER语句。关于sql语句总是用大写较多这件事呢,查了一下文档,主要是因为大写是变成规范吧,在执行的时候速度也有提升~
2.6.1添加字段
ALTER TABLE 待修改的表名 ADD 字段名 字段类型
例如:
ALTER TABLE T_Dog ADD FSex BOOL
2.6.2 删除字段
ALTER TABLE 待修改的表名 DROP 字段名
例如:
ALTER TABLE T_Dog DROP FSex
2.6.3 删除数据表
DROP TABLE 待删除的表名
例如:
DROP TABLE T_Dog
2.6.4变通解决方案
假如数据库不支持修改,可以重新创建一个表复制过去就可以。