字段的基本操作有增,删,改,查 4 种基本操作,而且字段还有约束功能,我们下面给大家一一介绍。
增加字段命令:ALTER TABLE table_name ADD column_name column_type;
。代表的意思是:在表
"table_name" 末尾,增加属性名为 column_name,数据类型为 column_type 的字段。比如我们想给 mybook 数据库中的
tab_books 表添加一个价格字段,我们可以使用如下命令:
ALTER TABLE tab_books ADD book_price INT;
删除字段命令:ALTER TABLE table_name DROP column column_name;
。代表的意思是:在表
中删除 column_name 字段,比如我们想删除 mybook 数据库中的
tab_books 表的 book_price 字段,我们可以使用如下命令:
ALTER TABLE table_name DROP column book_price;
修改字段属性:ALTER TABLE table_name MODIFY column_name New_column_type;
。代表的意思是:将属性名为
"column_name" 的字段的数据类型新设置为 "New_column_type"。比如我们发现有的书籍价格还有零头,我们想修改价格字段的属性为浮点数,可以是使用如下命令:
ALTER TABLE tab_books MODIFY book_price FLOAT;
修改字段名称:ALTER TABLE table_name CHANGE Old_column_name New_column_name
Old_column_type;
。比如我们修改字段 book_price 的名称为 price,可以使用如下命令:
ALTER TABLE tab_books CHANGE book_price price FLOAT;
修改字段名称和属性:ALTER TABLE table_name CHANGE Old_column_name New_column_name New_data_type;
。CHANGE
不但可以修改字段的名字还可以修改字段的属性,CHANGE 的功能包括 MODIFY 的功能。比如我们修改字段
book_price 的名称为 price,类型 FLOAT 为 INT,可以使用如下命令:
ALTER TABLE tab_books CHANGE book_price price INT;
查看表中所有字段属性:DESC table tab_books;
。这个命令我们上节课已经讲过了。比如查看
tab_books 表中所有字段的属性,可以使用如下命令:
DESC table tab_books;
表字段的约束是用来检验表中数据的完整性的,说的直白一些,就是检验表中的数据是否满足了规定的条件。以 tab_books 表举例来说,如果我不愿意令字段 ID 为空,就可以在建表时定义相关的约束。如果用户在插入数据时,违反了这样的约束条件,就会报错。当然可以定义的约束条件分很多种,下面会一一讲解。
我们可以在创建表的时候或者后期通过 CHANGE 或 MODIFY 命令设置字段约束,下面的例子中,我们使用 MODIFY 来设置字段约束。
设置字段非空约束:关键字 NOT NULL 用来约束某字段不能为空,下面的代码,将字段 "book_price" 的值设置为非空。语法形式如下:
ALTER TABLE tab_books MODIFY book_price INT NOT NULL;
设置字段的默认值:关键字 DEFAULT 用来设置字段的默认值。如果在插入数据时,没有为某个字段赋值,则 Mysql 会自动为这个字段赋值为默认值。下面代码将字段 "book_price" 的默认值设置为 80。其语法形式如下:
ALTER TABLE tab_books MODIFY book_price INT DEFAULT 80;
设置唯一约束:关键字 UNIQUE 用来设置对某个字段的唯一约束,唯一约束表示,插入的数据在这个字段上的值得是唯一的,不能重复(你可以类比一般编程语言中“键值对”的“键”)。以学生的信息系统为例,每个人的学号信息应该是唯一的,那么在录入数据时,如果这一项出现了重复,那必然是出错了。所以我们最好设置唯一值约束,如果出现重复,则报错。下面代码将字段 "book_price" 设置为唯一约束。其语法形式如下:
ALTER TABLE tab_books MODIFY book_price INT UNIQUE;
当然,我们可以给一字段设置多个约束,比如我们对字段 "book_price" 设置为:“非空”,“默认值”,“唯一”的约束:
ALTER TABLE tab_books MODIFY book_price INT NOT NULL DEFAULT 80 UNIQUE;
设置主键约束:主键的作用在于用某个字段唯一地标识所有记录,以便在数据库中快速地查找数据。比如我们一般用索引号来唯一标识每一条数据记录。由于主键可以是单一字段,也可以是多个字段,所以,下面分两种情况讨论:
单字段主键:用关键字 PRIMARY KEY 设置主键。比如,还是 tab_student 的例子,现在将学号设置为主键。
CREATE TABLE tab_student( ID VARCHAR(20) PRIMARY KEY, # 设置学生ID为主键 Score INT, Gender CHAR );
我们查看刚才建的表,如下图所示:
发现 ID 字段也是非空的,其实,设置了主键,则主键字段必然是非空且唯一的。
多字段主键:当主键由多个字段组合而成时,则需要关键字CONSTRAINT和PRIMARY KEY配合设置。其语法结构如下:
CREATE TABLE tab_student( ID VARCHAR(20), Name VARCHAR(20), Score INT, CONSTRAINT ID_Name PRIMARY KEY (ID, Name) );
在上面代码展示的例子中,语句 CONSTRAINT ID_Name PRIMARY KEY (ID, Name),将学生的 ID 和 Name 组合起来设置为主键。最后括号内表示的是主键涵盖的字段,而 CONSTRAINT 后面的 ID_Name 则是为这个约束起的名字(就设置主键约束来说,这个名字不要也没什么影响)。
例子最后生成的表信息如下:
设置字段值自动增加:往表中插入记录时,往往会遇到需要递增的字段。例如商品编号啊,等等。Mysql支持对这类字段设置字段值自动增加的约束。默认情况下,设置了自动增加的字段值为整数,从1开始,每次加1。又因为这种自动增加的字段肯定是唯一的,所以一般我们也把它设置为主键。
设置自动增加的关键字为 AUTO_INCREMENT:
CREATE TABLE tab_student( ID INT PRIMARY KEY AUTO_INCREMENT, # 将ID设置为整数类型,并且设置字段值自动增加 Name VARCHAR(20), Score INT );
现在这个表示这样的:
注意,如果要将某个字段设置为自动增加,那么必须将这个字段设置“唯一”的属性,即设置为主键或者唯一约束,否则会报错。
设置外键约束:上面的 5 种约束都是对于单表,而外键约束则是保证多个表之间的参照完整性。
设置外键约束的两个表之间具备父子关系,即子表中某个字段的取值依赖于父表。举例来说,现在有两个表:部门表和雇员表,部门表的主键为部门编号depNo,而雇员表中表示雇员所在部门编号的字段depno就成为了雇员表(子表)的外键。外键设置时有以下几点要求:
设置外键的语法用 FOREIGN KEY (attribute) + REFERENCES father_table_name (attribute) 的形式:
CREATE TABLE child_table_name( Att_name_1, DataType_1, Att_name_2, DataType_2, CONSTRAINT FK_name FOREIGN KEY (Att_name_1) REFERENCES father_table_name (Att_name) );