Sql小白入门(三)管理数据库对象

来源:互联网 发布:哥白尼式革命 知乎 编辑:程序博客网 时间:2024/06/15 03:41

    前面两篇文章都是概念性的,全部文字描述!看起来比较费劲!有的读者在看文章时是不是会睡着呢!偷笑今天我们就正式进入到数据库和表的实战中!开始下文吧!

一、概念。

1、什么是数据库对象

    数据库对象是数据库里定义的、用于存储或引用数据的对象,比如表、视图、促,序列、索引和异名。本章的内容以表为主,因为它是关系型数据库里最主要、最简单的数据存储形式。

2、什么是规则

   规则是与数据库某个用户名相关联的数据库对象结婚。相应的用户名被称为规则所有人,或是关联对象组的所有人。数据库里可以有一个或多个规则。用户至于同名规则相关联,通常情况下反之亦然。一般来说,当用户创建一个对象时,就是在自己的规划里创建了它,除非明确指定在另一个规划里创建它。因此,根据在数据库里的权限,用户可以创建、操作和删除对象。规划可以只包含一个表,也可以包含无数个对象,其上限由具体的Sql实现决定。

假设我们从管理员获得了一个数据用户名和密码,用户名是USER1,我们登录到数据库并创建一个名为EMPLOYEE_TBL的表,这时对于数据库来说,表的实际名称是USER1.EMPLOYEE_TBL,这个表的规划名是USER1,也就是这个表的所有者。这样,我们就为这个规划创建了第一个表。

当我们访问自己所拥有的表时(在级的规划里),不必引用规划名称。举例来说,使用下面两种方式都可以引用刚才创建的表:

MPLOYEE_TBL

USER1.MPLOYEE_TBL

我们当然喜欢使用第一种方法,因为它简单,需要敲击键盘的次数比较少。如果其他用户要访问这个表,就必须知道规划名称,如下所示;

USER1.MPLOYEE_TBL

3.表,数据的主要存储方式

表是关系型数据库里最主要的数据存储对象,其最简单形式是由行和列组成,分别都包含着数据。表在数据库占据实际的物理空间,可以是永久的或是临时的。

(1).列

字段在关系型数据库也被称为列,它是表的组成部分,被设置为特定的数据类型。数据类型觉得了什么样的数据尅保存在相应的列中,从而确保了数据的完整性。

每个数据库表都至少要包含一列、列元素在表里用于保存特定类型的数据,比如人名或地址。举例来说,姓名就可以作为顾客表里一个有效的列。

一般来说,列的名称应该是连续的字符串,其长度在不同的Sql实现中都是由明确的规定。我们一般使用下划线作为分隔符,比如表示顾客姓名的列可以命名为CUSTOMER_NAME更好一些。这样做可以提高数据库对象的可读性。读者也可以使用其他命名规则,例如驼峰匹配,以满足特定的需求。对于一个数据库开发团队来说,明确一个命名规则,并在开发过程中严格遵守这一规则,是非常重要的。

列中最常见的数据类型是字符串。这一数据可以保存为大写或小写字符,应该根据数据的使用方式具体选择。在大多数情况下,出于简化和一致的目的,数据是以大写存储的。如果数据库里存储的数据具有不同的大小写,我们可以根据需要利用函数把数据转化为大写或小写。

列也可以指定为NULl或NOT NULL,当设置为NOT NULL时,表示其中必须包含数据;这是为NULL是,就表示不包含数据。NULL不是空白,而是类似一个空的字符串,在数据库中占据了一个特殊的位置。因此,如果某一个位置缺少数据,就尅使用NULL。

(2).行

行是数据库表里的一条记录。举例来说,顾客表里的一行数据可能包含顾客的标识号码、姓名、地址、电话号码、传真号码等。行由字段组成,表最少可以包含一行数据,也可以包含数以百万计的记录。

二、表。

1.CREATE TABLE命令。

Sql里的CREATE TABLE语句用于创建表。虽然创建表的实际操作十分简单,但在执行CREATE TABLE命令之前,应该花更多的时间和精力来设计表的结构,这样可以节省反复修改表结构而浪费的时间。

在创建表时,需要考虑以下一些基本问题。

(1).表里会包含什么类型的数据;

(2).表的名称是什么;

(3).哪个(或哪些)列组成主键;

(4).列(字段)的名称是什么;

(5).每一列的数据类型是什么;

(6).每一列的长度是多少;

(7).表里的哪些列可以是NULL;

在考虑了这些问题之后,实际的CREATE TABLE命令就很简单了!

创建表的基本语法如下所示:

CREATE TABLE table_name(

field1 data_type [ not null],

field2 data_type [ not null],

field3 data_type [ not null],

);

2.命名规范

在为对象选择名称时,特别是表和列的名称,应该让名称反应出所保存的数据。比如说,保存雇员信息的表可以命名为EMPLOYEE_TBL。列的名称也是如此,比如说,保存雇员电话号码的列,显然命名为PHONE_NUMBER是比较合适的。

3.ALTER TABLE命令

在表被创建之后,我们可以使用ALTER TABLE命令对其进行修改。可以调节列、删除列、修改列定义、添加和去除约束,在某些实现中可以修改表的值。ALTER TABLE命令的

(1).修改表的元素。

列的属性是其所包含数据的规则和行为。利用ALTER TABLE命令修改列的属性,在此“属性”的含义是:

列的数据类型,列的长度、有效位或标度,列值能否为空。

下面的范例是使用ALTER TABLE命令修改表EMPLOYEE_TBL的EMP_ID列,

ALTER TABLE EMPLOYEE_TBL MODIFY EMP_ID VARCHAR(10)

这一列定义的数据类型没有变,但是长度从9变为10。

(2).添加列。

如果表已经包含数据,这是添加的列就不能定义为NOT NULL,这是一条基本规则。NOT NULL意味着这一列在每条记录里都是必须包含数据。所以,在添加一条定义为NOT NULL的列时,如果现有的记录没有包含新的列所需的数据,我们就会陷入到自相矛盾的境地。

因此,强行向表添加一列的方法如下:

添加一列,把它定义为NULL(这一行不一定要包含数据),

给这个新列在每条记录里都插入数据,

把列的定义修改为NOT  NULL.

(3).添加自动增加的列。

有时我们需要一列的数据能够自动增加,从而让每一行都具有不同的序号。在很多情况下都需要这样做,比如数据中如果没有适合充当主键的值,或是我们想利用序列号对数据进行排序。创建自动增加的列是相当简单的。MySql提供了SERIAL方法为表生成真正的唯一值,如下所示:

CREATE TABLE TEST_INCREMENT(

 ID SERIAL,

TEST_NAME VARCHAR(20)

);

PS:列的默认属性是NULL,所以在CREATE TABLE语句里不必明确设置。但NOT NULL必须明确指定。

(4).修改列

在修改现有表里的列时,需要考虑很多因素。下面是修改列的一些通用规则:

列的长度可以增加到特定数据类型所允许的最大长度;

如果想缩短某列的长度,则长度要求这一列在表里所有数据的长度都小于或等于新长度;

数值数据的位数可以增加;

如果要缩短数值数据的位数,则必须要求这一列在表里所有数值的位数小于或等于新指定的位数;

数值里的小数位数可以增加或减少;

列的数据类型一般是可以改变的。于其它表的列,或是被其它表的列所引用,在撤销这一列时就可能发生问题。

有些实现会限制用户使用ALTER TABLE的某些选项。举例来说,可能不允许从表里撤销列。为了绕过这种限制,我们可以撤销整个表,然后重建新的表。如果某一列是依赖于其它表的列,或是被其它表的列所引用,在撤销这一列时就可能发生问题。

4.删除表

删除表示一种相当简单的操作。如果使用了RESTRICT选项,并且表被视图或约束所引用,DROP语句就会返回一个错误。当使用了CASCADE选项时,删除操作会成功执行,而且全部引用视图和约束都被删除。删除表的语句如下所示:

drop table  table_name

PS:删除表的操作务必指向准确,在删除表时,在提交命令之前要确保指定了表的规划名或所有者,否则可能误删除其它的表。如果使用多用户账户,在删除表之前一定要确定使用了适当的用户名链接数据库。

三、完整性约束。

完整性约束用于确定关系型数据库里数据的准确性和一致性。在关系型数据库里,数据完整性是通过引用完整性的概念实现的,而在引用完整性里包含了很多类型。

1.主键约束

主键是表里一个或多个用于实现记录唯一性的字段。虽然主键通常是由一个字段构成的,但也可以由多个字段组成。举例来数,雇员的社会保险号码或雇员被分配的标识号码都可以再雇员表里作为主键。主键的作用在于表里每条记录都具有唯一值。由于在雇员表里一般不会出现多条记录表示一个雇员的情况,所以雇员的标识号码可以作为主键。主键是在创建表时指定的。

2.唯一性约束

唯一性约束要求表里某个字符的值在每条记录里都是唯一的,这一点与主键类似。即使我们对一个字段设置了主键约束,也可以对另一个字段设置唯一性约束,尽管它不会被当做主键使用。

3.外键约束

外键是子表里的一个字段,引用父表里的主键。外键约束是确保表与表之间引用完整性的主要机制。一个被定义为外键的字段用于引用另一个表里的主键。

4. NOT NULL 约束

NOT NULL是一个可以用于字段的约束,它不允许字段包含NULL值;话句话时候,定义NOT NULL的字段在每条记录里都必须有值。在没有指定NOT NULL时,字段默认为NULL,也就是可以是NULL值。

5.检查约束

检查约束用于检查输入到特定字段的数据的有效性,可以提供后端的数据库编辑,虽然编辑通常是在前端程序里完成的。一般情况下,编辑功能限制了能够输入字段或对象的值,无论这个功能是在数据库还是在前端程序里实现的。检查约束为数据提供了另一层保护。

7.去除约束

利用ALTER TABLE命令的DROP CONSTRAINT选项可以去除已经定义的约束。

PS: 有效实现允许终止约束,这样我们可以选择暂时中止它,而不是从数据库里去除它,稍后还尅再启动它。

四、实战操作

    本系列博文中使用的数据库是MySql,有关MySql的下载和安装就不多说了,直接百度就知道了!并且在实际开发中,还使用了数据库可视化工具,例如SQLyog,使用这个工具可以快速开发、管理MySql数据库。在MySql命令行中输入的命令,目前只在MySql中验证有效,其他数据库没有验证过!有关SQLyog有问题,找度娘!偷笑

安装完MySql后,打开SQLyog,新建一个连接,输入密码,如果显示如下图所示,就表示成功了,


1.创建数据库。

创建数据库有两种方式。

(1).在mySQL命令提示符下,输入如下所示命令:
MySQL>create datebase dbname;

其中dbname是数据库名称。一定要记得命令最后还有“;”!

(2).在SQLyog中,在左侧列表的空白处单击鼠标右键,弹出的菜单中,选择“创建数据库”,接着会弹出如下图的对话框,填写数据库名的选项框,我们这里填写“studensManager”,其中两个选择项选择默认值即可,接着单击“创建”按钮,“studensManager”数据库就创建成功了,在左边的数据库列表里会出现“studensManager”数据库。


创建数据库成功后,接着就可以创建表了!

PS:

(1).在MySql命令行中,如果我们想查看目前都有哪些数据库?该使用什么命令呢?

show databases; 一定要记得命令最后还有“;”!可以试试不输入“;”,是什么结果!

便会显示目前MySql中有哪些数据库。例如我本机上显示如下图所示,


(2).如何选择进入哪个数据库呢?

命令: use  数据库名;

例如,我本机显示如下,

(3).那么如何查看当前使用的数据库
命令:mysql> select database();

例如,我本机显示如下,

(4).查看数据库的表信息
命令:mysql> show tables;


2.创建表。

还记得创建表的命令吗?CREATE TABLE TABLE_NAME(...);

(1).使用命令创建。
CREATE TABLE studens(sno INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,sname VARCHAR(20),INT(3) age,sex CHAR(2),birth DATE);

(2).在SQLyog中,左侧的导航中选择所要操作的数据库,单击鼠标右键,从弹出的快捷菜单中选择创建表命令,创建新表。


创建表成功后,就会在Tables目录下看到表students,


3.修改表。

如果我们要对已经创建成功的表的列进行修改,该如何操作呢?还记得前面说的吗?

().使用Alter命令!

(2).在SQLyog中,选中要修改的表,选择更改表选项,就会显示类似一个创建表的窗口,接着在这个窗口中就可以修改表了!添加或者删除某一列,


修改完后,点击Alter按钮!


再次刷新表,就可以看到表多了一列!修改成功!

五、小结。

1.创建数据库命令。

CREATE DATABASE database_name
现在我们希望创建一个名为 "mserver_db" 的数据库。
我们使用下面的 CREATE DATABASE 语句:
CREATE DATABASE mserver_db

2.创建表命令。

CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)

例如创建一个Persons表,

CREATE TABLE Persons
(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
3.修改列。

如需在表中添加列,请使用下列语法:
ALTER TABLE table_name
ADD column_name datatype
要删除表中的列,请使用下列语法:
ALTER TABLE table_name
DROP COLUMN column_name
注释:某些数据库系统不允许这种在数据库表中删除列的方式 (DROP COLUMN column_name)。
要改变表中列的数据类型,请使用下列语法:
ALTER TABLE table_name
ALTER COLUMN column_name datatype

今天就到这里!下篇文章,我们继续表的操作!详情请看,Sql小白入门(四)CRUD!
















0 0
原创粉丝点击