前者数据库数据表,约束及修改数据表

前边的话

  mysql数据库中的数据存款和储蓄在被称为表(tables)的数据库对象中。表是相关的数量项的集结,它由列(字段)和行(记录)组成。上面将详细介绍数据表操作

 

前者学数据库之数据表操作,前端数据库数据表

×

前面的话

  mysql数据库中的数据存储在被称为表(tables)的数据库对象中。表是相关的多寡项的集结,它由列(字段)和行(记录)组成。下边将详细介绍数据表操作

 


准备干活

  在进展数据表操作从前,需求首先登场6mysql服务器,创造一个数据库,并应用创设好的数据库

997755.com澳门葡京 1

 

目录

[1]准备工作 [2]创建数量表
[3]翻开数据表[4]笔录操作[5]笔录约束[6]列操作[7]封锁操作[8]修改列[9]数据表更名

预备干活

  在打开数据表操作在此以前,必要首先登场陆mysql服务器,成立2个数据库,并应用成立好的数据库

997755.com澳门葡京 2

 

1、约束概述

自律的目标是为了保险数据的完整性与1致性。

依据约束的限制划分:
列级约束:只对二个数据列建立约束。既能够在列定义时宣称,也足以在列定义后宣称;
表级约束:对七个数据列建立约束。只可以在列定义后声称;

遵循约束的功能划分:
非空约束——NOT NULL
主键约束——P奥迪Q5IMALacrosseY KEY
唯1约束——UNIQUE KEY
默许约束——DEFAULT
外键约束——FOREIGN KEY

在实质上开拓中,表级约束很少用到,更加多的会采用列级约束;除却,在拥有的自律中,并不一定每个效率的约束都存在着表级或列级之分。当中,非空约束和暗许约束就不设有表级约束,它们唯有列级约束;而对于主键约束、唯一约束、外键约束都能够当作表级约束或列级约束。


创建数据表

  下边在db1数据库中开创数量表tb一

CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type,...)

  在下边包车型地铁多寡表tb第11中学,创建三个VAHavalCHA昂Cora(20)的变长字符型的username字段;创设一个TINYINT
UNSIGNED的多少个字节长度的无符号(0-255)整型的age字段;创设3个salary
FLOAT(八,贰)
UNSIGNED的数字总委员长度为八,小数位数为2的无符号浮点数的salary字段

997755.com澳门葡京 3

 

前方的话

  mysql数据库中的数据存款和储蓄在被称为表(tables)的数据库对象中。表是相关的数额项的聚合,它由列(字段)和行(记录)组成。下边将详细介绍数据表操作

 

开创数据表

  上面在db1数据库中开创数量表tb一

CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type,...)

  在底下的数目表tb第11中学,成立一个VAKugaCHA途乐(20)的变长字符型的username字段;创建1个TINYINT
UNSIGNED的3个字节长度的无符号(0-255)整型的age字段;创制三个salary
FLOAT(8,二)
UNSIGNED的数字总司长度为八,小数位数为贰的无符号浮点数的salary字段

997755.com澳门葡京 4

 

二、外键约束的渴求解析

前各样约束的用法及功用可参见操作数据表,今后来看一下外键约束:外键约束即“FOREIGN
KEYp”,可以保险数据的完整性与一致性,完毕数量表1对1或一对多的涉及,那也是数不胜数数据库被称为“关系型数据库”的根本原因。

创造外键约束需求知足如下要求:

  1. 父表(包涵参照列)和子表(包括外键列)必须运用同样的积存引擎,且存款和储蓄引擎只好为InnoDB,而且不准选用权且表;
  2. 外键列和参照列必须具备相似的数据类型,当中:数字的长短或是不是有记号位必须一致,而字符的则长度能够不一样;
  3. 外键列和参照列必须创设索引,尽管外键列不存在索引,MySQL将电动创立索引。

创办父表“provinces”,并检讨其储存引擎:

997755.com澳门葡京 5

开创子表“users”,此表的指标是记录用户的省区新闻,在使用外键约束后,只须求父表的“id”就足以获得相应的省区,不过依照供给对于数字的长短必须一致,由此在采取数据类型“BIGINT”后,系统提醒错误:

997755.com澳门葡京 6

  此时已将数据类型修改为同样的“SMALLINT”,但系统依旧提醒错误,原因是父表中注解“UNSIGNED”,即无符号位,而子表中并未评释,因而出错:

997755.com澳门葡京 7

  最后成就子表的创办:

997755.com澳门葡京 8

输入“SHOW INDEXES FROM tbl_name”可查阅该表的目录情状:

997755.com澳门葡京 9

  由于“id”字段使用了主键,而主键会自行创制索引,因而参照列已经颇具了目录,再来看外键列:

997755.com澳门葡京 10

  可知具有多少个目录,叁个是“id”字段,另一个则是外键列“p_id”字段,查看该数据表的结构能够窥见:

997755.com澳门葡京 11

  系统已自行为其创制了目录。

注意:
父表——子表所参照的表“provinces”
子表——含有外键“FOREIGN KEY”的表“users”
参照列——父表中“id”字段列
外键列——子表中“p_id”字段列


翻看数据表

SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr]

翻开数据表的列项

SHOW COLUMNS FORM tbl_name

997755.com澳门葡京 12

 

准备工作

  在伸开数据表操作在此以前,须求先登入mysql服务器,创造八个数据库,并接纳创建好的数据库

997755.com澳门葡京 13  

翻开数据表

SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr]

翻看数据表的列项

SHOW COLUMNS FORM tbl_name

997755.com澳门葡京 14

 

三、外键约束的参照操作

外键约束的参照操作,轻易明了正是在开立外键约束之后,更新父表时,子表是还是不是开始展览一样的操作,共有如下四种:

  1. CASCADE:从父表删除或更新且自动删除或更新子表中格外的行;
  1. SET
    NULL:从父表删除或更新行,并安装子表中的外键列为“NULL”。尽管应用该选项,必须保险子表列未有点名“NOT
    NLUU”;
  2. RESTLANDICT:拒绝对父表的删除或更新操作;
  3. NO ACTION:标准SQL的基本点字,在MySQL中与“RESTBMWX三ICT”功用同样。

以“CASCADE”为例实行出现说法,创制子表“users一”:

997755.com澳门葡京 15

在创造外键时增加“ON DELETE CASCADE”

  之后,必要在两张数据表中增添记录,要注意,必须先在父表中增加记录,子表工夫具备参照:

997755.com澳门葡京 16

在父表中增加八个省区音讯,之后向子表中增加用户音信,只须要写入用户名及父表中省份的“id”就可以:

997755.com澳门葡京 17

  之所以在增进“John”用户时出错,是因为父表中常有不设有“id”为九的省份,因此报错。查看该数据表的构造可窥见:

997755.com澳门葡京 18

“id”排列未有序号三是因为,尽管以前输入记录时“‘约翰’,玖”报错未有计入,但是编号已经自行递增1人,因而最后的用户“id”为一、二、四、5。此时去除父表中“id”为3的省份,看子表是或不是也会发出更改:

997755.com澳门葡京 19

足见父表中“id”为三的省区已被剔除,而子表中“p_id”为三的用户“罗丝”也同步被去除了。

注意:
  关于外键约束,在实际上的开荒进度中,其实很少使用物理性的外键约束,越来越多的会去选拔逻辑性的外键约束,因为物理性的外键约束唯有InnoDB那种斯特林发动机才会援救,不过另一种MyISAM引擎则不补助。换句话说,倘诺创制一张数据表,其储存引擎为MyISAM,但又想利用那种物理性的外键约束的话,其实是不容许达成的,因而,在事实上的档次开销中,不会去定义物理性的外键。所谓的逻辑性外键指的就是在开创数据表在此以前,已经定义好些个张数据表的组织,而不去行使“FOREIGN
KEY”这么些第1词。


笔录操作

  记录操作的首先步是写入记录

  在写入记录时,要留意的是,假如未有简单的字段,则根据参数顺序直接赋值就可以;如果有简短的字段,则字段名和参数值都亟待写出来

INSERT [INTO] tbl_name [(col_name,...)] VALUES(VAL,...)

997755.com澳门葡京 20

  上面来查找记录

SELECT EXPR,...FROM tbl_name

997755.com澳门葡京 21

 

成立数据表

  上边在db1数据库中开创数量表tb1

CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type,...)

  在上边包车型地铁多寡表tb第11中学,创造多个VAEnclaveCHA福特Explorer(20)的变长字符型的username字段;成立叁个TINYINT
UNSIGNED的八个字节长度的无符号(0-255)整型的age字段;创设贰个salary
FLOAT(八,二)
UNSIGNED的数字总秘书长度为8,小数位数为二的无符号浮点数的salary字段

997755.com澳门葡京 22  

笔录操作

  记录操作的第二步是写入记录

  在写入记录时,要专注的是,假如未有简单的字段,则遵照参数顺序直接赋值就能够;假诺有简短的字段,则字段名和参数值都必要写出来

INSERT [INTO] tbl_name [(col_name,...)] VALUES(VAL,...)

997755.com澳门葡京 23

997755.com澳门葡京,  上边来搜索记录

SELECT EXPR,...FROM tbl_name

997755.com澳门葡京 24

 

4、修改数据表——增多/删除列

丰富单列
ALTER TABLE tbl_name ADD [COLUMN] col_name columan_definition
[FIRST | AFTER col_name]
** “FIRST col_name”指所插入的列位于钦赐列在此之前;“AFTEKugacol_name”指所插入的列位于钦赐列之后;假设都轻松,则暗中认可在全数列之后插入该列。**

率先查看“users1”的数据结构,之后插入数据列“age”,且不点名其岗位,再一次翻开该表结构可窥见,新加上的列“age”确实位于全数列之后,排在末尾:

997755.com澳门葡京 25

增多一列“password”,钦点其任务在“username”列之后:

997755.com澳门葡京 26

再加多一列“truename”,钦命其岗位在全体列从前:

997755.com澳门葡京 27

充分多列
ALTER TABLE tbl_name ADD [COLUMN] (col_name columan_definition ,
……)
添加多列时,列名与概念信息要放在小括号内,且无法内定地方,只好放在已有列的末梢

三遍性向数据表“users1”中添增多列:

997755.com澳门葡京 28

删除列
ALTER TABLE tbl_name DROP [COLUMN] col_前者数据库数据表,约束及修改数据表。name , ……
能够去除壹列,能够去除多列,还足以在剔除的同时新添列

删除“username”列:

997755.com澳门葡京 29

删除“age”列同时,新增“username”列:

997755.com澳门葡京 30

二遍性删除多列:

997755.com澳门葡京 31


记录约束

空值

NULL         字段值可以为空
NOT NULL     字段值禁止为空

  首先,创立二个数额表tb贰,username字段禁止为空,而age字段可以为空。插入记录时,如若username字段为空,则提醒错误

997755.com澳门葡京 32

主键

  每张数据表只可以存在多少个主键(PKoleosIMAOdysseyY
KEY),主键保证记录的唯一性,且自动为NOT NULL

  主键能够写为KEY或P翼虎IMARubiconY KEY

997755.com澳门葡京 33

机关编号

  自动编号(AUTO_INCREMENT)必须与主键组合使用,暗中认可情形下,初始值为1,每回增量为一

997755.com澳门葡京 34

唯一

  唯一约束(UNIQUE
KEY)是指选定的笔录中不得以存在一样值的场所,那样能够保证记录的唯壹性,唯一约束的字段可认为空值NULL,每张数据表可以存在多个唯1约束

  上边记录中对username字段进行唯一约束限制,增加username为’汤姆’记录后,不允许再加多username为’Tom’记录

997755.com澳门葡京 35

默认值

  当插入记录时,若是未有分明为字段赋值,则自动赋予默许值(DEFAULT)

997755.com澳门葡京 36

外键

  外键约束(FOREIGN
KEY)用来保持数据一致性和完整性,完成1对1或一对多的涉嫌

  外键列是指进入(FOREIGN
KEY)的列,外键列参照的那一列叫做参照列,外键列和参数列必须持有相似的数据类型。个中数字的尺寸或是或不是有标记位必须1致;而字符的长短则能够区别

  索引是1种越发的文本,在InnoDB数据表上的目录是表空间的贰个组成部分,它们含有着对数码表中全部记录的引用指针。外键列和参照列必须成立索引,假设参照列不存在索引的话,MySQL将电动创设索引

  子表指有外键列的表,子表所参照的表叫做父表。父表和子表必须运用同一的存款和储蓄引擎,而且不准行使权且表。数据表的蕴藏引擎只好是InnoDB

  所以,首先须要修改mysql配置文件my.ini中的暗中同意存款和储蓄引擎

default-storage-engine = INNODB

  创设父表provices,参照列为id

997755.com澳门葡京 37

  创造子表users,外键列为pid

997755.com澳门葡京 38

  父表provices的参考列id为主键列,主键在创建的同时,会自行创设索引

  上面来查阅父表provices的目录

997755.com澳门葡京 39

  上边来查看子表users的目录

997755.com澳门葡京 40

  外键约束的参考操作中,1共存在四个选项。用来设置更新父表时,子表是还是不是也进展相应操作

  一、CASCADE: 从父表删除或更新且活动删除或更新子表中相称的行

  贰、SET NULL:
从父表删除或更新行,并安装子表中的外键列为NULL。假使应用该选项,必须保障子表列未有点名NOT
NULL

  叁、REST奥迪Q7ICT: 拒相对父表的删除或更新操作

  四、NO ACTION: 标准SQL的重中之重字,在MYSQL中与REST福特ExplorerICT一样

  首先,创造父表provinces

997755.com澳门葡京 41

  创立子表users1,并安装选项cascade

997755.com澳门葡京 42

  在父表中插入记录’A’、’B’、’C’

997755.com澳门葡京 43

  在子表中,插入名字’a①’、’a二’、’a3’、’a四’

997755.com澳门葡京 44

  删除父表中id为二的记录,并查阅删除后父表和子表的结果

997755.com澳门葡京 45

  在实质上的开采进度中,大家很少使用物理的外键约束,诸多都去行使逻辑的外键约束,因为物理的外键约束只有INNODB那种内燃机才会协助,像大家别的的一种引擎MYISAM则不协理,反过来说,假诺要成立的数据表,就算存款和储蓄引擎为MYISAM,而且又想利用外键约束的话,其实是不容许达成的,所以说,在事实上的品类开销中,并不去定义物理的外键,所谓的逻辑外键指的是在概念两张表的构造的时候,依照存在的某种结构的方法去定义,不过不去行使FOREIGN
KEY那么些重大词来定义

【表级约束和列级约束】

  约束除了遵照效益,分为上边介绍过的三种约束外,也足以服从职能范围分为表级约束和列级约束

  对3个数据列建立的羁绊,称为列级约束,对两个数据列建立的牢笼,称为表级约束。列级约束既能够在列定义时宣称,也足以在列定义后宣称。而表级约束只可以在列定义后声称

  在其实支付中,用列级约束相比较多,表级约束很少用,除却,在装有的束缚中,并不是说每一种约束都设有着表级或列级约束,在那之中,NOT
NULL
非空约束,DEFAULT约束那三种约束就不设有表级约束,它们只有列级约束,而对此其余的三种,像主键、唯1、外键约束,它们都得以存在表级和列级约束

 

查看数据表

SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr]

翻看数据表的列项

SHOW COLUMNS FORM tbl_name

997755.com澳门葡京 46  

笔录约束

空值

NULL         字段值可以为空
NOT NULL     字段值禁止为空

  首先,创立3个数量表tb二,username字段禁止为空,而age字段可感觉空。插入记录时,假使username字段为空,则提示错误

997755.com澳门葡京 47

主键

  每张数据表只好存在一个主键(PRAV四IMA奥迪Q伍Y
KEY),主键保险记录的唯一性,且活动为NOT NULL

  主键能够写为KEY或POdysseyIMA奥迪Q5Y KEY

997755.com澳门葡京 48

自动编号

  自动编号(AUTO_INCREMENT)必须与主键组合使用,暗中认可情状下,发轫值为1,每趟增量为1

997755.com澳门葡京 49

唯一

  唯1约束(UNIQUE
KEY)是指选定的笔录中不可能存在同样值的情景,那样能够确定保证记录的唯一性,唯一约束的字段可感觉空值NULL,每张数据表能够存在多个唯壹约束

  下边记录中对username字段实行唯一约束限制,加多username为’汤姆’记录后,不容许再增多username为’汤姆’记录

997755.com澳门葡京 50

默认值

  当插入记录时,假若未有明显为字段赋值,则自动赋予默许值(DEFAULT)

997755.com澳门葡京 51

外键

  外键约束(FOREIGN
KEY)用来保持数据一致性和完整性,达成一对一或一对多的关联

  外键列是指参与(FOREIGN
KEY)的列,外键列参照的那1列叫做参照列,外键列和参数列必须持有相似的数据类型。个中数字的长短或是或不是有标识位必须一律;而字符的尺寸则足以不一致

  索引是1种独特的公文,在InnoDB数据表上的目录是表空间的3个组成都部队分,它们含有着对数码表中全数记录的引用指针。外键列和参照列必须创立索引,如果参照列不设有索引的话,MySQL将活动成立索引

  子表指有外键列的表,子表所参照的表叫做父表。父表和子表必须运用同样的蕴藏引擎,而且不准使用暂时表。数据表的储存引擎只好是InnoDB

  所以,首先需求修改mysql配置文件my.ini中的暗中同意存款和储蓄引擎

default-storage-engine = INNODB

  创立父表provices,参照列为id

997755.com澳门葡京 52

  创设子表users,外键列为pid

997755.com澳门葡京 53

  父表provices的参考列id为主键列,主键在创立的同时,会自动创制索引

  下边来查看父表provices的目录

997755.com澳门葡京 54

  上边来查看子表users的目录

997755.com澳门葡京 55

  外键约束的参考操作中,一共存在多少个挑选。用来安装更新父表时,子表是或不是也展开对应操作

  一、CASCADE: 从父表删除或更新且活动删除或更新子表中至极的行

  贰、SET NULL:
从父表删除或更新行,并设置子表中的外键列为NULL。假设使用该选项,必须保证子表列未有点名NOT
NULL

  三、REST大切诺基ICT: 拒相对父表的删减或更新操作

  四、NO ACTION: 标准SQL的重大字,在MYSQL中与REST奥迪Q伍ICT一样

  首先,创制父表provinces

997755.com澳门葡京 56

  创立子表users一,并设置选项cascade

997755.com澳门葡京 57

  在父表中插入记录’A’、’B’、’C’

997755.com澳门葡京 58

  在子表中,插入名字’a一’、’a二’、’a叁’、’a四’

997755.com澳门葡京 59

  删除父表中id为2的笔录,并查阅删除后父表和子表的结果

997755.com澳门葡京 60

  在其实的支付进程中,大家很少使用物理的外键约束,诸多都去选择逻辑的外键约束,因为物理的外键约束唯有INNODB那种斯特林发动机才会支持,像我们其余的一种引擎MYISAM则不协理,反过来讲,假诺要开创的数据表,就算存款和储蓄引擎为MYISAM,而且又想利用外键约束的话,其实是不容许完毕的,所以说,在实质上的品种开销中,并不去定义物理的外键,所谓的逻辑外键指的是在概念两张表的构造的时候,遵照存在的某种结构的办法去定义,可是不去行使FOREIGN
KEY那么些首要词来定义

【表级约束和列级约束】

  约束除了依据效益,分为上边介绍过的八种约束外,也能够依照职能范围分为表级约束和列级约束

  对2个数据列建立的约束,称为列级约束,对三个数据列建立的束缚,称为表级约束。列级约束既能够在列定义时表明,也能够在列定义后宣称。而表级约束只可以在列定义后声称

  在骨子里开采中,用列级约束相比较多,表级约束很少用,除却,在具备的自律中,并不是说每一种约束都留存着表级或列级约束,个中,NOT
NULL
非空约束,DEFAULT约束这几种约束就不存在表级约束,它们唯有列级约束,而对此其余的二种,像主键、唯壹、外键约束,它们都足以存在表级和列级约束

 

伍、修改数据表——增多/删除约束

丰盛主键约束
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY
[index_type] (index_col_name,……)
里头“CONSTRAINT”关键字能够自定义主键名,而“index_type”索引类型后边会讲到。

开革新的数据表“users2”,且不设置主键:

997755.com澳门葡京 61

新增加一列“id”,且为其丰盛主键,主键名称叫“PK_users2_id”:

997755.com澳门葡京 62

增进唯一约束
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE
[INDEX|KEY] [index_name] [index_type] (index_col_name,……)

为“username”增多唯1约束:

997755.com澳门葡京 63

增加外键约束
ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY
[index_name] (index_col_name,……) reference_definition

为“p_id”增添外键约束:

997755.com澳门葡京 64

加多私下认可约束
ALTER TABLE tbl_name ALTER [COLUMN] col_name SET DEFAULT literal

为新建字段“age”加多暗许约束:

997755.com澳门葡京 65

去除主键约束
ALTER TABLE tbl_name DROP PRIMARY KEY

997755.com澳门葡京 66

除去唯一约束
ALTER TABLE tbl_name DROP {INDEX|KEY} index_name
**鉴于一张数据表能够有四个唯1约束,由此删除时必要增加索引名 **

率先查看“username”字段上绝无仅有约束的索引名:

997755.com澳门葡京 67

“Key_name”即索引名

剔除的“username”是索引名即唯1约束,而不是字段:

997755.com澳门葡京 68

删去外键约束
ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol
**专注删除时须要增添外键约束名 **

首先查看“p_id”字段上的外键约束名:

997755.com澳门葡京 69

系统活动抬高的外键约束名“users2_ibfk_1”

删除“p_id”字段上的外键约束:

997755.com澳门葡京 70

  可知曾经远非“FOREIGN KEY”等音讯:

997755.com澳门葡京 71

去除默许约束
ALTER TABLE tbl_name ALTER [COLUMN] col_name DROP DEFAULT

删去字段“age”的暗中认可约束:

997755.com澳门葡京 72


列操作

加上单列

ALTER TABLE tb!_name ADD[COLUMN] col_name column_definition [FIRST|AFTER col_name];

  增添单列有多少个岗位选拔,位于发轫处,位于钦赐列的背后和位于最后

  first插手的放在整张表最前边,after放在内定列前面,不填则放在整张表最后

997755.com澳门葡京 73

添扩充列

ALTER TABLE tb1_name ADD[COLUMN] (col_name column_definition,...);

  添增多列只好放在最终

除去单列

ALTER TABLE tb1_name DROP [COLUMN] col_name

997755.com澳门葡京 74

删去多列

ALTER TABLE tb1_name DROP col1_name, DROP col2_name, ...

997755.com澳门葡京 75

 

记录操作

  记录操作的率先步是写入记录

  在写入记录时,要留心的是,假使未有轻易的字段,则根据参数顺序直接赋值就能够;假若有大致的字段,则字段名和参数值都亟待写出来

INSERT [INTO] tbl_name [(col_name,...)] VALUES(VAL,...)

997755.com澳门葡京 76

  下边来探索记录

SELECT EXPR,...FROM tbl_name

997755.com澳门葡京 77  

列操作

拉长单列

ALTER TABLE tb!_name ADD[COLUMN] col_name column_definition [FIRST|AFTER col_name];

  加多单列有多少个任务选择,位于发轫处,位于钦定列的末尾和位于最终

  first加入的位于整张表最终边,after放在内定列后边,不填则放在整张表最后

997755.com澳门葡京 78

丰裕多列

ALTER TABLE tb1_name ADD[COLUMN] (col_name column_definition,...);

  添增添列只可以放在最后

删除单列

ALTER TABLE tb1_name DROP [COLUMN] col_name

997755.com澳门葡京 79

剔除多列

ALTER TABLE tb1_name DROP col1_name, DROP col2_name, ...

997755.com澳门葡京 80

 

陆、修改数据表——修改列定义/更名操作

修改列定义
ALTER TABLE tbl_name MODIFY [COLUMN] col_name col_definition
[FIRST|AFTER col_name]

修改字段“id”的数据类型为“TINYINT”并将其挪至数据表起先地点:

997755.com澳门葡京 81

注意:
  由范围较大的数据类型(例如“SMALLINT”)修改成范围较小的数据类型(例如“TINYINT”),恐怕会促成数据的不见。

修改列名称
ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name
col_definition [FIRST|AFTER col_name]
使用“CHANGE”关键字不仅带有“MODIFY”关键字的作用,还足以修改字段名称。

修改字段“p_id”的称谓为“pid”,数据类型为“TINYINT”并将其挪至“age”字段的前面:

997755.com澳门葡京 82

修改数据表名称
方法一:
ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name
方法二:
RENAME TABLE tbl_name TO new_tbl_name [, tbl_name TO
new_tbl_name]……

行使方式壹将数据表“users二”名称修改为“users3”:

997755.com澳门葡京 83

应用方法2将数据表“users3”名称修改为“users2”:

997755.com澳门葡京 84

注意:
  实际上应尽量少的行使数据列及数据表的更名操作,因为当创建了目录或选用过视图、存款和储蓄进度之后,在表名或列名被引述的气象下,修改其名目或然会促成视图或存款和储蓄进度等不能符合规律办事。


封锁操作

加上主键约束

ALTER TABLE tb1_name ADD [CONSTRAINT[symbol]] PRIMARY KEY [index_type](index_col_name,...)

  在未增多主键前,表users二有’username’、’pid’和’id’五个田野同志

997755.com澳门葡京 85

  向字段’id’增多主键约束

997755.com澳门葡京 86

拉长唯一约束

  唯一约束与主键约束的不相同之处在于,唯1约束能够存在多少个字段,而主键约束只好有3个

ALTER TABLE tb1_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type]

997755.com澳门葡京 87

加上外键约束

ALTER TABLE tb1_name ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition

997755.com澳门葡京 88

增多或删除默许约束

ALTER TABLE tb1_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

997755.com澳门葡京 89

997755.com澳门葡京 90

997755.com澳门葡京 91

去除主键约束

ALTER TABLE tbl_name DROP PRIMARY KEY

997755.com澳门葡京 92

除去唯一约束

ALTER TABLE tbl_name DROP {INDEX|KEY} index_name

997755.com澳门葡京 93

997755.com澳门葡京 94

删除却键约束

ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol

997755.com澳门葡京 95

997755.com澳门葡京 96

  删除却键约束后,假若索引也无须,能够跟着删除之索引

997755.com澳门葡京 97

 

笔录约束

空值

NULL         字段值可以为空
NOT NULL     字段值禁止为空

  首先,创制一个数目表tb2,username字段禁止为空,而age字段可感到空。插入记录时,如若username字段为空,则提醒错误

997755.com澳门葡京 98

主键

  每张数据表只好存在多少个主键(P瑞虎IMAEvoqueY
KEY),主键保障记录的唯1性,且活动为NOT NULL

  主键能够写为KEY或P凯雷德IMALacrosseY KEY
997755.com澳门葡京 99

机动编号

  自动编号(AUTO_INCREMENT)必须与主键组合使用,暗许情形下,起头值为①,每一回增量为壹

997755.com澳门葡京 100

唯一

  唯一约束(UNIQUE
KEY)是指选定的记录中无法存在同样值的情事,那样能够确定保证记录的唯一性,唯一约束的字段可认为空值NULL,每张数据表能够存在三个唯一约束

  上面记录中对username字段进行唯一约束限制,增添username为’汤姆’记录后,不允许再增添username为’汤姆’记录

997755.com澳门葡京 101

默认值

  当插入记录时,假若未有了解为字段赋值,则自动赋予私下认可值(DEFAULT)

997755.com澳门葡京 102

外键

  外键约束(FOREIGN
KEY)用来保持数据一致性和完整性,完结一对一或壹对多的关系

  外键列是指进入(FOREIGN
KEY)的列,外键列参照的那一列叫做参照列,外键列和参数列必须持有相似的数据类型。当中数字的尺寸或是还是不是有号子位必须一致;而字符的长短则足以差别

  索引是1种分外的文本,在InnoDB数据表上的目录是表空间的二个组成都部队分,它们含有着对数据表中全数记录的引用指针。外键列和参照列必须创立索引,假如参照列不设有索引的话,MySQL将机关创造索引

  子表指有外键列的表,子表所参照的表叫做父表。父表和子表必须选择同一的储存引擎,而且不准行使一时半刻表。数据表的贮存引擎只可以是InnoDB

  所以,首先供给修改mysql配置文件my.ini中的私下认可存款和储蓄引擎

default-storage-engine = INNODB

  成立父表provices,参照列为id

997755.com澳门葡京 103

  创造子表users,外键列为pid

997755.com澳门葡京 104

  父表provices的参考列id为主键列,主键在成立的同时,会自动成立索引

  上面来查看父表provices的目录

997755.com澳门葡京 105

  上边来查看子表users的目录

997755.com澳门葡京 106

  外键约束的参阅操作中,一共存在八个挑选。用来安装更新父表时,子表是或不是也拓展对应操作

  一、CASCADE: 从父表删除或更新且活动删除或更新子表中相配的行

  贰、SET NULL:
从父表删除或更新行,并设置子表中的外键列为NULL。假使选择该选项,必须保障子表列未有点名NOT
NULL

  3、RESTBMWX三ICT: 拒相对父表的删减或更新操作

  四、NO ACTION: 标准SQL的重中之重字,在MYSQL中与REST途观ICT一样

  首先,创立父表provinces

997755.com澳门葡京 107

  创造子表users壹,并设置选项cascade

997755.com澳门葡京 108

  在父表中插入记录’A’、’B’、’C’

997755.com澳门葡京 109

  在子表中,插入名字’a一’、’a二’、’a3’、’a四’

997755.com澳门葡京 110

  删除父表中id为二的笔录,并查看删除后父表和子表的结果

997755.com澳门葡京 111

  在其实的支付进程中,我们很少使用物理的外键约束,诸多都去选取逻辑的外键约束,因为物理的外键约束唯有INNODB那种发动机才会协助,像大家其余的1种引擎MYISAM的引擎则不帮助,反过来讲,假诺本人想创建的数据表,假设存款和储蓄引擎为MYISAM,而且又想利用外键约束的话,其实是不容许完成的,所以说,大家在实质上的体系支付中,大家不去定义物理的外键,所谓的逻辑外键指的是正是大家在概念两张表的布局的时候,大家是遵照存在的某种结构的方法去定义,不过不去行使FOREIGN
KEY那个关键词来定义

【表级约束和列级约束】

  约束除了遵照效益,分为上面介绍过的多样约束外,也足以服从职能范围分为表级约束和列级约束

  对3个数据列建立的约束,称为列级约束,对几个数据列建立的束缚,称为表级约束。列级约束既能够在列定义时评释,也能够在列定义后宣称。而表级约束只可以在列定义后声称

  在骨子里付出中,用列级约束比较多,表级约束很少用,除了那几个之外,在享有的束缚中,并不是说各种约束都留存着表级或列级约束,个中,NOT
NULL
非空约束,DEFAULT约束那三种约束就不存在表级约束,它们只有列级约束,而对此别的的三种,像主键,唯壹,外键,它们都能够存在表级和列级约束

 

自律操作

充分主键约束

ALTER TABLE tb1_name ADD [CONSTRAINT[symbol]] PRIMARY KEY [index_type](index_col_name,...)

  在未增加主键前,表users二有’username’、’pid’和’id’四个田野(field)

997755.com澳门葡京 112

  向字段’id’增添主键约束

997755.com澳门葡京 113

增多唯一约束

  唯一约束与主键约束的不一样之处在于,唯1约束能够存在八个字段,而主键约束只可以有3个

ALTER TABLE tb1_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type]

997755.com澳门葡京 114

加上国外贸高校键约束

ALTER TABLE tb1_name ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition

997755.com澳门葡京 115

加多或删除私下认可约束

ALTER TABLE tb1_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

997755.com澳门葡京 116

997755.com澳门葡京 117

997755.com澳门葡京 118

剔除主键约束

ALTER TABLE tbl_name DROP PRIMARY KEY

997755.com澳门葡京 119

去除唯1约束

ALTER TABLE tbl_name DROP {INDEX|KEY} index_name

997755.com澳门葡京 120

997755.com澳门葡京 121

删去外键约束

ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol

997755.com澳门葡京 122

997755.com澳门葡京 123

  删除了那些之外键约束后,倘若索引也绝不,能够跟着删除之索引

997755.com澳门葡京 124

 

7、修改数据表的SQL语句汇总:

  • 添加/删除列
    累加单列:ALTEEscort TABLE tbl_name ADD [COLUMN] col_name
    columan_definition [FIRST | AFTER col_name];
    拉长多列:ALTEMurano TABLE tbl_name ADD [COLUMN] (col_name
    columan_definition , ……);
    删除列:ALTER TABLE tbl_name DROP [COLUMN] col_name , ……;

  • 加上/删除约束
    加多主键约束:ALTE牧马人 TABLE tbl_name ADD [CONSTRAINT [symbol]]
    PRIMARY KEY [index_type] (index_col_name,……);
    丰裕唯壹约束:ALTE奥迪Q7 TABLE tbl_name ADD [CONSTRAINT [symbol]]
    UNIQUE [INDEX|KEY] [index_name] [index_type]
    (index_col_name,……);
    累加外键约束:ALTEKuga TABLE tbl_name ADD [CONSTRAINT [symbol]]
    FOREIGN KEY [index_name] (index_col_name,……)
    reference_definition;
    加多暗许约束:ALTE汉兰达 TABLE tbl_name ALTER [COLUMN] col_name SET
    DEFAULT literal;
    除去主键约束:ALTE酷威 TABLE tbl_name DROP PRIMARY KEY;
    删除唯1约束:ALTE翼虎 TABLE tbl_name DROP {INDEX|KEY} index_name;
    删去外键约束:ALTE福睿斯 TABLE tbl_name DROP FOREIGN KEY fk_symbol;
    去除暗中认可约束:ALTERubicon TABLE tbl_name ALTER [COLUMN] col_name DROP
    DEFAULT;

  • 修改列定义/更名操作
    修改列定义:ALTEGL450 TABLE tbl_name MODIFY [COLUMN] col_name
    col_definition [FIRST|AFTER col_name];
    修改列名称:ALTE本田UR-V TABLE tbl_name CHANGE [COLUMN] old_col_name
    new_col_name col_definition [FIRST|AFTER col_name];
    修改数据表名称
    方法一:ALTER TABLE tbl_name RENAME [TO|AS] new_tbl_name;
    方法二:RENAME TABLE tbl_name TO new_tbl_name [, tbl_name TO
    new_tbl_name]……;


版权声明:欢迎转载,欢迎扩散,但转载时请标明作者以及原文出处,谢谢合作!             ↓↓↓

修改列

修改列定义

  修改列定义指修改列的品种或地方

ALTER TALBE tb1_name MODIFY [COLUMN] col_name column_definition [FIRST|AFTER col_name]

997755.com澳门葡京 125

  上面将字段’id’的位置调整到第一个

997755.com澳门葡京 126

  下边,将字段’id’的类型由smallint转变为tinyint

  [注意]在由大范围的类型转换为小范围类型时,恐怕会导致数据丢失

997755.com澳门葡京 127

修改列名称

  使用上面包车型客车CHANGE语法,比MODIFY语法尤其有力,能够在修改列名称的同时,修改列类型

ALTER TABLE tb1_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]

997755.com澳门葡京 128

 

列操作

丰硕单列

ALTER TABLE tb!_name ADD[COLUMN] col_name column_definition [FIRST|AFTER col_name];

  增多单列有多个职位采取,位于开首处,位于钦赐列的前面和位于最后

  fisrt参加的位于整张表最终面,after放在内定列前边,不填则位于整张表最终

997755.com澳门葡京 129

加上多列

ALTER TABLE tb1_name ADD[COLUMN] (col_name column_definition,...);

  添增多列只可以放在最后

删除单列

ALTER TABLE tb1_name DROP [COLUMN] col_name

997755.com澳门葡京 130

去除多列

ALTER TABLE tb1_name DROP col1_name, DROP col2_name, ...

997755.com澳门葡京 131  

修改列

修改列定义

  修改列定义指修改列的种类或地方

ALTER TALBE tb1_name MODIFY [COLUMN] col_name column_definition [FIRST|AFTER col_name]

997755.com澳门葡京 132

  下边将字段’id’的职位调控到第壹个

997755.com澳门葡京 133

  下边,将字段’id’的花色由smallint转变为tinyint

  [注意]在由大范围的类型转变为小范围类型时,大概会导致数据丢失

997755.com澳门葡京 134

修改列名称

  使用下边包车型大巴CHANGE语法,比MODIFY语法尤其有力,能够在改换列名称的还要,修改列类型

ALTER TABLE tb1_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]

997755.com澳门葡京 135

 

数据表更名

方法一 

ALTER TABLE tb1_name RENAME [TO|AS] new_tb1_name

997755.com澳门葡京 136

方法二

  使用RENAME方法可以为多张数据表更名

RENAME TABLE tb1_name TO new_tbl_name [,tbl_name2 TO new_tbl_name2] ...

997755.com澳门葡京 137

  [注意]永不轻便改换数据列和数据表的名字

封锁操作

累加主键约束

ALTER TABLE tb1_name ADD [CONSTRAINT[symbol]] PRIMARY KEY [index_type](index_col_name,...)

  在未增加主键前,表users2有’username’、’pid’和’id’三个田野

997755.com澳门葡京 138

  向字段’id’增多主键约束

997755.com澳门葡京 139

丰硕唯1约束

  唯一约束与主键约束的差异之处在于,唯1约束能够存在几个字段,而主键约束只可以有三个

ALTER TABLE tb1_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type]

997755.com澳门葡京 140

累加外键约束

ALTER TABLE tb1_name ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition

997755.com澳门葡京 141

增加或删除暗中同意约束

ALTER TABLE tb1_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

997755.com澳门葡京 142
997755.com澳门葡京 143
997755.com澳门葡京 144

去除主键约束

ALTER TABLE tbl_name DROP PRIMARY KEY

997755.com澳门葡京 145

除去唯一约束

ALTER TABLE tbl_name DROP {INDEX|KEY} index_name

997755.com澳门葡京 146
997755.com澳门葡京 147

删除了这一个之外键约束

ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol

997755.com澳门葡京 148
997755.com澳门葡京 149

  删除此而外键约束后,如果索引也无须,能够跟着删除之索引

997755.com澳门葡京 150  

数据表更名

方法一 

ALTER TABLE tb1_name RENAME [TO|AS] new_tb1_name

997755.com澳门葡京 151

方法二

  使用RENAME方法可以为多张数据表更名

RENAME TABLE tb1_name TO new_tbl_name [,tbl_name2 TO new_tbl_name2] ...

997755.com澳门葡京 152

  [注意]不要任意改造数据列和数据表的名字

修改列

修改列定义

  修改列定义指修改列的门类或岗位

ALTER TALBE tb1_name MODIFY [COLUMN] col_name column_definition [FIRST|AFTER col_name]

997755.com澳门葡京 153

  上面将字段’id’的职责调控到第3个

997755.com澳门葡京 154

  上面,将字段’id’的类别由smallint转变为tinyint

  [注意]在由大范围的类型调换为小范围类型时,大概会促成数据丢失

997755.com澳门葡京 155

修改列名称

  使用上边包车型客车CHANGE语法,比MODIFY语法更压实大,能够在修改列名称的还要,修改列类型

ALTER TABLE tb1_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]

997755.com澳门葡京 156  

数据表更名

方法一 

ALTER TABLE tb1_name RENAME [TO|AS] new_tb1_name

997755.com澳门葡京 157

方法二

  使用RENAME方法可以为多张数据表更名

RENAME TABLE tb1_name TO new_tbl_name [,tbl_name2 TO new_tbl_name2] ...

997755.com澳门葡京 158

  [注意]不用轻巧改变数据列和数据表的名字

目录
[1]预加防备工作 [2]创设数量表
[3]查看数据表[4]记录操作[5]记录约束[6]列操作[7]自律操作…

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website