2数据表的基本操作.docx

上传人:b****7 文档编号:16187579 上传时间:2023-07-11 格式:DOCX 页数:23 大小:24.78KB
下载 相关 举报
2数据表的基本操作.docx_第1页
第1页 / 共23页
2数据表的基本操作.docx_第2页
第2页 / 共23页
2数据表的基本操作.docx_第3页
第3页 / 共23页
2数据表的基本操作.docx_第4页
第4页 / 共23页
2数据表的基本操作.docx_第5页
第5页 / 共23页
2数据表的基本操作.docx_第6页
第6页 / 共23页
2数据表的基本操作.docx_第7页
第7页 / 共23页
2数据表的基本操作.docx_第8页
第8页 / 共23页
2数据表的基本操作.docx_第9页
第9页 / 共23页
2数据表的基本操作.docx_第10页
第10页 / 共23页
2数据表的基本操作.docx_第11页
第11页 / 共23页
2数据表的基本操作.docx_第12页
第12页 / 共23页
2数据表的基本操作.docx_第13页
第13页 / 共23页
2数据表的基本操作.docx_第14页
第14页 / 共23页
2数据表的基本操作.docx_第15页
第15页 / 共23页
2数据表的基本操作.docx_第16页
第16页 / 共23页
2数据表的基本操作.docx_第17页
第17页 / 共23页
2数据表的基本操作.docx_第18页
第18页 / 共23页
2数据表的基本操作.docx_第19页
第19页 / 共23页
2数据表的基本操作.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

2数据表的基本操作.docx

《2数据表的基本操作.docx》由会员分享,可在线阅读,更多相关《2数据表的基本操作.docx(23页珍藏版)》请在冰点文库上搜索。

2数据表的基本操作.docx

2数据表的基本操作

数据表的基本操作

一、创建数据表

在创建完数据库之后,接下来的工作就是创建数据表,所谓创建数据表,指的是在已经创建好的数据库中建立新表,创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性(包括实体完整性、引用完整性和域完整性等)约束的过程。

这里将介绍创建数据表的语法形式、如何添加主键约束、外键约束、非空约束等。

1、创建表的语法形式

数据表属于数据库,在创建数据库之前,应该使用语句“USE<数据库名>”指定操作是在哪个数据库中进行,如果没能选择数据库,会抛出“Nodatabaseselected”的错误。

创建数据表的语句为CREATETABLE,语法规则如下:

CREATETABLE<表名>

字段表1,数据类型[列级别约束条件][默认值]

字段表2,数据类型[列级别约束条件][默认值]

……

[表级别约束条件]

);

使用CREATETABLE创建表时,必须指定以下信息:

(1)要创建的表的名称,不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER、INSERT等。

(2)数据表中每一个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开。

【例1】创建员工表tb_emp1

选择创建表的数据库:

USEtest_db;

tb_emp1表结构

字段名称

数据类型

备注

id

INT(11)

员工编号

name

VARCHAR(25)

员工名称

deptld

INT(11)

所在部门编号

salary

FLOAT

工资

创建tb_emp1表:

CREATETABLEtb_emp1

idint(11),

namevarchar(25),

deptIdint(11),

salaryfloat

);

可以看到,test_db数据库中已经有了数据表tb_tmp1,数据表创建成功。

mysql>showcreatetabletb_emp1;

+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

|Table|CreateTable|

+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

|tb_emp1|CREATETABLE`tb_emp1`(

`id`int(11)defaultNULL,

`name`varchar(25)defaultNULL,

`deptId`int(11)defaultNULL,

`salary`floatdefaultNULL

)ENGINE=MyISAMDEFAULTCHARSET=utf8|

+---------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1rowinset(0.00sec)

2、使用主键约束

主键,又称主码,是表中一列或多列的组合,主键约束(PrimaryKeyConstraint)要求主键列的数据唯一,并且不允许为空,主键能够唯一地标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。

主键和记录之间的关系如同身份证和人之间的关系,它们之间是一一对应的。

主键分为两种类型:

单字段主键和多字段联合主键。

A、单字段主键

主键是由一个字段组成,SQL语句格式分类以下两种情况。

(1)在定义列的同时指定主键,语法规则如下:

字段名数据类型PRIMARYKEY[默认值]

【例2】定义数据表tb_emp2,其主键为id:

CREATETABLEtb_emp2

idint(11)PRIMARYKEY,

namevarchar(25),

deptIdint(11),

salaryfloat

);

(2)在定义完所在列之后指定主键。

[CONSTRINT<约束名>]PRIMARYKEY[默认值]

【例3】定义数据表tb_emp3,其主键为id:

CREATETABLEtb_emp3

idint(11),

namevarchar(25),

deptIdint(11),

salaryfloat,

PRIMARYKEY(id)

);

上述两个例子执行后的结果是一样的,都会在id字段上设置主键约束。

B、多字段联合主键

主键由多个字段联合组成,语法规则如下:

PRIMARYKEY[字段1,字段2,……,字段n]

【例4】定义数据表tb_emp4,假设表中间没有主键id,为了唯一确定一人员工,可以把name、deptId联合起来做为主键,SQL语句如下:

CREATETABLEtb_emp4

namevarchar(25),

deptIdint(11),

salaryfloat,

PRIMARYKEY(name,deptId)

);

语句执行后,便创建一个名称为tb_emp4的数据表,name字段和deptId字段组合在一起成为tb_emp4的多字段联合主键。

3、使用外键约束

外键用来在两上表的数据之间建立链接,它可以是一列或多列。

一个表可以有一个或多个外键,外键对应参照完整性,一个表的外键可以为空值,则每一个外键值必须等于另一个表中主键的某个值。

外键:

首先它是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键,外键主要作用是保证数据引用的完整性、定义外键后,不允许删除在另一个表中具有关系的行。

外键的作用是保持数据的一致性、完整性。

例如,部门表tb_dept的主键是id,在员工表tb_emp5中有一个deptId与这个id关联。

主表(父表):

对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。

从表(子表):

对于两个具有关联关系的表而言,相关联字段中的外键所在的那个表即是从表。

创建外键的语法规则如下:

[CONSTRAINT<外键名>]FOREIGNKEY字段名1[,字段名2,……]

REFERENCES<主表名>主键列1[,主键列2,……]

“外建名”为定义的外键约束的名称,一个表中不能有相同名称的外键;“字段名”表示子表需要添加外键约束的字段列:

“主表名”即被子表外键依赖的表的名称;“主键列”表示主表中定义的主键列,或者列组合。

【例5】定义数据表tb_emp5,并在tb_emp5表上创建外键约束

创建一个部门表tb_dept1:

CREATETABLEtb_dept1

idint(11)PRIMARYKEY,

namevarchar(22)NOTNULL,

locationvarchar(50)

);

tb_dept1表结构

字段名称

数据类型

备注

idI

NT(11)

部门编号

name

VRCHAR(22)

部门名称

location

VARCHAR(50)

部门位置

 

定义数据表tb_emp5,让它的键deptId作为外键关联到tb_dept1的主键id:

CREATETABLEtb_emp5

idint(11)PRIMARYKEY,

namevarchar(25),

deptIdint(11),

salaryfloat,

CONSTRAINTfk_emp_dept1FOREIGNKEY(deptId)REFERENCEStb_dept1(id)

);

以上语句执行成功之后,在表tb_emp5上添加了名称为tk_emp_dept1的外键约束,外键名称为deptId,其依赖于表tb_dept1的主键id。

4、使用非空约束

非空约束(NotNullConstraint)指字段的值不能为空。

对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。

非空约束的语法规则如下:

字段名称数据类型notnull

【例6】定义数据表tb_emp6,指定员工的名称不能为空,SQL语句为:

CREATETABLEtb_emp6

idint(11)PRIMARYKEY,

namevarchar(25)NOTNULL,

deptIdint(11),

salaryfloat,

CONSTRAINTfk_emp_dept2FOREIGNKEY(deptId)REFERENCEStb_dept(id)

);

执行后,在tb_emp6中创建一个Name字段,其插入值不能为空(NOTNULL)。

5、使用唯一性的约束

唯一性约束(UniqueConstraint)要求该列唯一,允许为空,但只能出现一个空值,唯一约束可以确保一列或者几列不出现重复值。

非空约束的语法规则如下:

(1)在定义完列之后直接指定唯一的约束,语法规则如下:

字段名数据类型UNIQUE

【例7】定义数据表tb_dept2,指定部门的名称唯一,SQL语句为:

CREATETABLEtb_dept2

idint(11)PRIMARYKEY,

namevarchar(22)UNIQUE,

locationvarchar(50)

);

(2)在定义完所有列之后指定唯一约束,语法规则如下:

[CONSTRAINT<约束名>]UNIQUE(<字段名>)

【例8】定义数据表tb_dept3,指定部门的名称唯一,SQL语句为:

CREATETABLEtb_dept3

idint(11)PRIMARYKEY,

namevarchar(22),

locationvarchar(50),

CONSTRAINTSTHUNIQUE(name)

);

UNIQUE和PRIMARYKEY的区别:

一个表中可以有多个字段声明为UNIQUE,但只能有一个PRIMARYKEY声明;声明为PRIMARYKEY的列不允许为空值,但是声明为UNIQUE的字段允许为空值(NULL)的存在。

6、使用默认约束

默认约束(DefaultConstraint)指定某列的默认值。

如男性同学较多,性别就可以默认为‘男’。

如果插入一条新的记录时没能有为这个字段赋值,那么系统会自动为这个字段赋值为‘男’。

默认约束的语法规则如下:

字段名数据类型DEFAULT默认值

【例9】定义数据表tb_emp7,指定员工的部门编号默认为1111,SQL语句为:

CREATETABLEtb_emp7

idint(11)PRIMARYKEY,

namevarchar(25)NOTNULL,

deptIdint(11)DEFAULT1111,

salaryfloat,

CONSTRAINTfk_emp_dept3FOREIGNKEY(deptId)REFERENCEStb_dept(id)

);

以上语句执行成功之后,表tb_emp7上的字段detpId拥有一个默认值1111,新插入的记录如果没有指定部门编号,则默认都为1111。

7、设置表的属性值自动增加

在数据库应用中,经常希望在每次插入新记录时,系统自动生成字段的主键值,可以通过为表主键添加AUTO_INCREMENT关键字来实现。

默认的,在MySQLkAUTO_INCREMENT的初始值是1,每新增一条记录,字段值自动加1。

一个表只能有一个字段使用AUTO_INCERMENT约束,且该字段必须为主键的一部分。

AUTO_INCREMENT约束的字段可以是任何整数类型(TINYINT、SMALLIN、INT、BIGINT等)。

设置唯一性约束的语法规则如下:

字段名数据类型AUTO_INCREMENT

【例10】定义数据表tb_emp8,指定员工的编号自动递增,SQL语句为:

CREATETABLEtb_emp8

idint(11)PRIMARYKEYAUTO_INCREMENT,

namevarchar(25)NOTNULL,

deptIdint(11),

salaryfloat,

CONSTRAINTfk_emp_dept5FOREIGNKEY(deptId)REFERENCEStb_dept(id)

);

上述例子执行后,会创建名称为tb_emp8中的id字段的值在添加记录的时候会自动增加,在插入记录的时候,默认的自增字段id的值从1开始,每次添加一条新记录,该值自动加1。

例如,执行如下插入语句:

INSERTINTOtb_emp8(name,salary)VALUES('Lucy',1000),('Lura',1200),('Kevin',1500);

语句执行完后,tb_emp8表中增加3条记录,在这里并没有输入id的值,但系统已经自动添加该值,使用SELECT命令查看记录。

提示:

使用INSERT声明表中插入记录的方法,美其名曰不是SQL的标准语法,这种语法不一定被其他的数据库支持,只能在MySQLQ中使用。

二、查看数据表结构

使用SQL语句创建好数据表之后,可以查看表结构的定义,以确定表的定义是否正确。

在MySQL中,查看表结构可以使用DESCRIBE和SHOWTABLE语句,本节将针对这两个语句分别进行详细的讲解。

1、查看表基本结构语句DESCRIBE

DESCRIBE/DESC语句可以查看表的字段信息,其中包括:

字段名、字段数据类型、是否为主键、是否有默认值等。

语法规则如下:

DESCRIBE表名;

或者简写为:

DESC表名;

查看表:

select*fromtb_emp8;

【例11】分别使用DESCRIBE和DESC查看表tb_dept和表tb_emp1的表结构,操作过程如下:

DESCRIBEtb_dept;

DESCtb_emp1;

其中,各个字段的含义分别解释如下:

NULL:

表示该列是否可以存储NULL值。

key:

表示该列是否已编制索引。

PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。

Default:

表示该列是否有默认值,如果有的话值是多少。

Extra:

表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

2、查看表详细结构语句SHOWCREATETABLE

SHOWCREATETABLE语句可以用来显示创建表时的CREATETABLE语句,语法格式如下:

SHOWCREATETABLE<表名\G>;

提示:

使用SHOWCREATETABLE语句,不仅可以查看表创建时候的详细语句,而且还可以查看存储引擎和字符编码。

如果不加‘\G’参数,显示的结果可能非常混乱,加上参数‘\G’之后,可使显示结果更加直观,易于查看。

【例12】使用SHOWCREATETABLE查看表tb_emp1的详细信息,SQL语句及相应的执行结果如下示:

SHOWCREATETABLEtb_emp1;

SHOWCREATETABLEtb_emp1\G;

mysql>SHOWCREATETABLEtb_emp1\G;

***************************1.row***************************

Table:

tb_emp1

CreateTable:

CREATETABLE`tb_emp1`(

`id`int(11)defaultNULL,

`name`varchar(25)defaultNULL,

`deptId`int(11)defaultNULL,

`salary`floatdefaultNULL

)ENGINE=MyISAMDEFAULTCHARSET=utf8

1rowinset(0.00sec)

三、修改数据表

修改表指的是修改数据库中已经存在的数据表的结构,MySQL使用ALTERTABLE语句修改,常用的修改表的操作有:

修改表名、修改字段数据类型或字段名、增加和删除字段、修改字段的排列位置,更改表的存储引擎,删除表的外键约束等。

本节将对和修改表有关的操作进行讲解。

alerttable

1、修改表名

MySQL是通过ALTERTABLE语句来实现表名的修改,具体的语法规则如下:

ALTERTABLE<旧表名>RENAME[TO]<新表名>;

其中TO为可选参数,使用与将不影响结果。

查看表:

mysql>SHOWTABLES;

【例13】将数据表tb_dept3改名为tb_deptment3

ALTERTABLEtb_dept3RENAMEtb_deptment3;

经过比较可以看到,数据列表中已经有了名称为了tb_deptmetnt3的表。

提示:

读者可以在修改表名称是使用DESC命令查看修改前后两个表的结构,修改表名并不修改表的结构,因此修必名称后和修改名称前的表的结构必然是相同的。

2、修改字段的数据类型

修改字段的数据类型,就是把字段的数据类型转换成另一种数据类型,在MySQL中修改字段数据类型的语法规则如下:

ALTERTABLE<表名>MODFIY<字段名><数据类型>

其中“表名”指要修改数据类型的字段所在表的名称,“字段名”指需要修改的字段,“数据类型”指修改后字段的新数据类型。

【例14】将数据表tb_dept1中name字段的数据类型由VARCHAR(22)的修改成VARCHAR(30)

可以看到现在name字段的数据类型为VARCHAR

(2),下面修改其类型。

输入SQL语句并执行:

ALTERTABLEtb_deptMODIFYnameVARCHAR(30);

再次使用DESC查看表:

mysql>DESCtb_dept1;

+--------+-------------+------+-----+---------+-------+

|Field|Type|Null|Key|Default|Extra|

+--------+-------------+------+-----+---------+-------+

|id|int(11)|YES||NULL||

|name|varchar(25)|YES||NULL||

|deptId|int(11)|YES||NULL||

|salary|float|YES||NULL||

+--------+-------------+------+-----+---------+-------+

4rowsinset(0.05sec)

语句执行之后,检验会发现表tb_dept表中name字段的数据类型已经修改成了VARCHAR(30)修改成功。

3、修改字段名

MySQL中修改表字段名的语法规则如下:

ALTERTABLE<表名>CHANGE<旧字段名><新字段名><新数据类型>

其中,“旧字段名”指修改前的字段名;“新字段名”指修改后的字段名;“新数据类型”指修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成与原来一样即可,如下:

【例15】将数据表tb_dept1中的location字段名称改为loc,数据类型保持不变。

ALTERTABLEtb_dept1CHANGElocationlocvarchar(50);

【例16】将数据表tb_dept1中的loc字段名称改为location,同时将数据类型保持变为varchar(60)。

ALTERTABLEtb_dept1CHANGEloclocationvarchar(60);

技巧:

CHANGE也可以只修改数据类型,实现和MODIFY同样的效果;方法是将SQL语句中的“新字段名”和“旧字段名”设置为相同的名称,只改变“数据类型”。

提示:

由于不同类型的数据在机器中存储的方式及长度并不相同,修改数据类型可能会影响到数据表中已有的数据记录。

因此,当数据表中已经有数据时,不要轻易修改数据类型。

4、添加字段

随着业务需求的变化,可能需要在已经存在的表中添加新的字段,一个完整字段包括字段名、数据类型、完整性的约束。

添加字段的语法格式如下:

ALTERTABLE<表名>ADD<新字段名><数据类型>

[约束条件][FLRST|AFTER已存在字段名];

新字段名为需要添加的字段的名称:

“FIRST”为可选参数,其作用是将新添加剂的字段设置为表的第一个字段;“FIRST”这可选参数,其作用是将添加到指定的“已存在字段”的后面。

提示:

“FIRST”或“AFTER已存在字段名”用于指定新增字段在表中的位置,如果SQL语句中没有这两个参数,则默认将新添加的字段设置为数据表的最后列。

A、添加完整性约束条件的字段

【例17】在数据表tb_dept中添加一个没有完整性约束的int类型的字段managerId(部门经理编号),输入SQL语句如下:

ALTERTABLEtb_deptADDmanagerIdint(10);

使用DESC查看表tb_dept1,会发现在表的最后添加了一个名为managerId的INT类型字段,结果如下:

mysql>DESCtb_dept1;

B、添加有完整性约束条件的字段

【例18】在数据表tb_dept1中添加一个不能为空的varchar(12)类型的字段column1。

输入如下SQL语句,并执行:

ALTERTABLEtb_dept1ADDcolumn1varchar(12)notnull;

使用DESC查看表tb_dept1。

C、在表的第一列添加一个字段

【例19】在数据表tb_dept中添加一个int类型的字段column2。

输入如下SQL语句,并执行:

ALTERTABLEtb_deptADDcolumn2in

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2