从头到尾写SQL(二)

来源:互联网 发布:软件开发价格 上线价格 编辑:程序博客网 时间:2024/04/29 05:04

二 数据表的创建和管理

数据库是我们用的别人的。。数据表就该我们自己创建了吧。。

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变通解决方案

假如数据库不支持修改,可以重新创建一个表复制过去就可以。


0 0
原创粉丝点击