《老鸟python 系列》视频上线了,全网稀缺资源,涵盖python人工智能教程,爬虫教程,web教程,数据分析教程以及界面库和服务器教程,以及各个方向的主流实用项目,手把手带你从零开始进阶高手之路!点击 链接 查看详情

mysql字段操作和字段约束

阅读:378166838    分享到

字段的基本操作有增,删,改,查 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就成为了雇员表(子表)的外键。外键设置时有以下几点要求:

  • 外键所代表的字段必须依赖于已经存在的父表的主键。
  • 外键与相应的父表的主键可以不同名。
  • 外键可以为空(null)。

设置外键的语法用 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)
);

如果以上内容对您有帮助,请老板用微信扫一下赞赏码,赞赏后加微信号 birdpython 领取免费视频。


登录后评论