| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 创建、修改和删除表 -> 正文阅读 |
|
[大数据]创建、修改和删除表 |
表是数据库存储数据的基本单位。一个表包含若干个字段或记录。表的操作包括创建新表、修改表和删除表。这些操作都是数据库管理中最基本,也是最重要的操作。 1、创建表创建表是指在已存在的数据库中建立新表。这是建立数据库最重要的一步,是进行其他表操作的基础。 1.1 创建表的语法形式MySQL 中,创建表是通过SQL语句CREATE TABLE实现的。其语法形式如下:
其中,“表名”参数表示所要创建的表的名称;“属性名”参数表示表中字段的名称;“数据类型”参数指定字段的数据类型;“完整性约束条件”参数指定字段的某些特殊约束条件。 !!!在使用CREATE TABLE语句创建表时,首先要使用USE语句选择数据库。选择数据库语句的基本格式为“USE 数据库名”。如果没有选择数据库,创建表时会出现“ERROR 1046 (3D000): No database selected”错误。 表名不能为SQL语言的关键字,如 create、updata和 order等都不能做表名。一个表中可以有一个或多个属性。定义时,字母大小写均可,各属性之间用逗号隔开,最后一个属性后不需要加逗号。 1.2 设置表的主键主键是表的一个特殊字段。该字段能唯一地标识该表中的每条信息。主键和记录的关系,如同身份证和人的关系。主键用来标识每个记录,每个记录的主键值都不同。身份证是用来标明人的身份,每个人都具有唯一的身份证号。设置表的主键指在创建表时设置表的某个字段为该表的主键。 1、单字段主键主键是由一个字段构成时,可以直接在该字段的后面加上 PRIMARY KEY来设置主键。语法规则如下:
“属性名”参数表示表中字段的名称;“数据类型”参数指定字段的数据类型。 下面在example1表中设置stu_id 作为主键,SQL代码如下: ?2、多字段主键?主键是由多个属性组合而成时,在属性定义完之后统一设置主键。语法规则如下:
下面在example2表中设置stu_id 与 course_id两个字段为主键,SQL代码如下: ?1.3 设置表的外键外键是表的一个特殊字段。如果字段sno是一个表A的属性,且依赖于表B的主键。那么,称表B为父表,表A为子表,sno为表A的外键。通过sno字段将父表B和子表A建立关联关系。设置表的外键指在创建表设置某个字段为外键。 设置外键的原则就是必须依赖于数据库中已存在的父表的主键;外键可以为空值。外键的作用是建立该表与其父表的关联关系。父表中删除某条信息时,子表中与之对应的信息也必须有相应的改变。例如,stu_id 是 student表的主键,stu_id是 grade表的外键。当stu_id为‘123’同学退学了,需要从student 表中删除该学生的信息。那么,grade表中 stu_id为‘123’的所有信息也应该同时删除。这样可以保证信息的完整性。
其中,“外键别名”参数是为外键的代号;“属性1”参数列表是子表中设置的外键;“表名”参数是指父表的名称;“属性2”参数列表是父表的主键。 下面在example3表中设置stu_id和 course_id为外键。与之相关联的是example2表中的主键stu_id和 course_id。SQL代码如下: 代码运行后,example3表中包含3个字段。其中,id字段是主键; stu_id和 course_id字段为外键;c_fk 是外键的别名; example2表称为example3表的父表;example3表的外键依赖于父表example2的主键stu_id和 course_id。 !!!!子表的外键关联的必须是父表的主键。而且,数据类型必须是一致。例如,两者都是INT类型,或者都是CHAR类型。如果不满足这样的要求,在创建子表时,就会出现“ERROR1005 (HY000): Can't create table”错误。 1.4 设置表的非空约束非空性是指字段的值不能为空值(NULL)。非空约束将保证所有记录中该字段都有值。如果用户新插入的记录中,该字段为空值,则数据库系统会报错。例如,在id字段加上非空约束,id字段的值就不能为空值。如果插入记录的id字段的值为空,该记录将不能插入。设置表的非空约束是指在创建表时为表的某些特殊字段加上NOT NULL约束条件。 设置非空约束的基本语法规则如下:
下面在example4表中设置字段id和name的非空约束。SQL代码如下: 代码运行后,example4表中包含3个字段。其中,id字段为主键; id和name字段为非空字段,这两个字段的值不能为空值(NULL) ; stu_id字段为外键; d_fk为外键的别名;example1表为example4表的父表;example4的外键依赖于父表的主键stu_id。 1.5 设置表的唯一性约束唯一性是指所有记录中该字段的值不能重复出现。设置表的唯一性约束是指在创建表时,为表的某些特殊字段加上UNIQUE约束条件。唯一性约束将保证所有记录中该字段的值不能重复出现。例如,在 id字段加上唯一性约束,所以记录中 id字段上不能出现相同的值。例如,在表的id字段加上唯一性约束,那么每条记录的id 值都是唯一的,不能出现重复的情况。如果一条的记录的id为‘0001’,那么该表中就不能出现另一条记录的id为‘0001’。 设置唯一性约束的基本语法规则如下:
下面在example5表中设置字段id和 stu_id的唯一性约束.SQL代码如下: 代码运行后,example5表中包含4个字段。其中,id字段为主键;stu_id字段为唯值,该字段的值不能重复;name字段为非空字段,该字段的值不能为空值(NULL)。 1.6设置表的属性值自动增加auto_increment 是mysql数据库中的一个特殊的约束条件。其主要用于为表中插入的新记录自动生成唯一的ID。一个表只能有一个字段使用AUTO_INCREMENT约束,且该字段必须为主键的一部分。AUTO_INCREMENT 约束的字段可以是任何整数类型(TINYINT、SMALLINT、INT和 BIGINT等)。默认情况下,该字段的值是从1开始自增。 设置属性值字段增加的基本语法规则如下:
下面在example6表中设置字段id的值自动增加。SQL代码如下: 代码运行后,example6表中包含3个字段。其中,id字段为主键,且每插入一条新纪录id的值会自动增加; stu_id字段为唯一值,该字段的值不能重复;name字段为非空字段,该字段的值不能为空值(NULL)。 在插入记录时,默认的情况下自增字段的值从1开始自增。例如,example6表中的id字段被设置成自动增加,默认情况第一条记录的id值为1。以后每增加一条记录,该纪录的id值都会在前一条记录的基础上加1。 如果第一条记录设置了该字段的初值,那么新增加的记录就从初值开始自增。例如,如果example6表中插入的第一条记录的id值设置为8,那么再插入记录的id值就会从8开始往上增加。 加上AUTO_INCREMENT约束条件,那么字段的每个值都是自动增加的。因此,这个字段不可能出现相同的值。通常情况下,AUTO_INCREMENT都是作为ID字段的约束条件,而且将ID字段作为表的主键。 1.7 设置表属性的默认值在创建表时可以指定表中字段的默认值。如果插入一条新的记录时没有为这个字段赋值,那么数据库系统会自动为这个字段插入默认值。默认值是通过DEFAULT关键字来设置的。 设置默认值的基本语法规则如下:
下面在example7表中设置字段id的值自动增加。SQL代码如下: 代码运行后,example7表中包含6个字段。其中,id字段为主键,且每插入一条新纪录id的值会自动增加: stu_id字段为唯一值,该字段的值不能重复; name字段为非空字段,该字段的值不能为空值(NULL) ; English字段的默认值为zero;Math字段和Computer字段的默认值为0。如果没有使用DEFAULT关键字指定字段的默认值,也没有指定字段为非空,那么字段的默认值为空(NULL)。 2、查看表结构查看表结构是指查看数据库中已存在的表的定义。查看表结构的语句包括DESCRIBE语句和SHOW CREATE TABLE语句。通过这两个语句,可以查看表的字段名、字段的数据类型和完整性约束条件等。 2.1 查看表基本结构语句describeMySQL中,DESCRIBE语句可以查看表的基本定义。其中包括,字段名、字段数据类型、是否为主键和默认值等。 DESCRIBE语句的语法形式如下:
?下面是用DESCRIBE语句查看example1表的定义,代码如下: 通过DESCRIBE语句,可以查出example1表包含stu_id、stu_name和 stu_sex字段。同时,结果中显示了字段的数据类型(Type)、是否为空(Null)、是否为主外键(Key)、默认值(Default)和额外信息(Extra) 。 DESCRIBE可以缩写成DESC。 下面直接使用DESC查看example1表的结构。代码如下: 2.2 查看表详细结构语句show create tableMySQL中,SHOW CREATE TABLE语句可以查看表的详细定义。该语句可以查看表的字段名、字段的数据类型、完整性约束条件等信息。除此之外,还可以查看表默认的存储引擎和字符编码。 SHOW CREATE TABLE语句的语法形式如下:
下面是用SHow CREATE TABLE语句查看example1表的定义,代码如下: 通过SHOW CREATE TABLE语句,可以查出 example1表中包含stu_id、stu_name和stu_sex字段。还可以查出各字段的数据类型、完整性约束条件。而且,可以查出表的存储引擎(ENGINE)为innoDB,字符编码(CHARSET)为utf8。该语句显示examplel表的信息,比 DESCRIBE语句的显示的信息全面。 3、修改表修改表是指修改数据库中已存在的表的定义。修改表比重新定义表简单,不需要重新加载数据,也不会影响正在进行的服务。MySQL中通过ALTER TABLE语句来修改表。修改表包括修改表名、修改字段数据类型、修改字段名、增加字段、删除字段、修改字段的排列位置、更改默认存储引擎和删除表的外键约束等。 3.1 修改表名表名可以在一个数据库中唯一的确定一张表。数据库系统通过表名来区分不同的表。例如,数据库 school中有student表。那么,student 表就是唯一的。在数据库 school 中不可能存在另一个名为student的表。 MySQL中,修改表名是通过SQL语句ALTER TABLE实现的。其语法形式如下:
下面是将example0表改名为user表,SQL代码如下: 执行修改表名的SQL代码之前,先用DES语句查看example0表,查看结果如下: 使用ALTER TABLE语句修改表名,并使用DESC语句检验,查看结果如下: ? ?3.2 修改字段的数据类型字段的数据类型包括整数型、浮点数型、字符串型、二进制类型、日期和时间类型等。数据类型决定了数据的存储格式、约束条件和有效范围。表中的每个字段都有数据类型。 MySQL 中,ALTER TABLE语句也可以修改字段的数据类型。其基本语法如下:
下面将修改user表中name字段的数据类型。SQL代码如下: ?3.3 修改字段名字段名可以在一张表中唯一的确定一个字段。数据库系统通过字段名来区分表中的不同字段。例如,student表中包含id字段。那么,id字段在student表中是唯一的。student表中不可能存在另一个名为“id”的字段。 MySQL 中,ALTER TABLE语句也可以修改表的字段名。其基本语法如下:
“旧属性名”参数指修改前的字段名;“新属性名”参数指修改后的字段名;“新数据类型”参数修改后的数据类型,如不需要修改,则将新数据类型设置成与原来一样。 1、只修改字段名使用ALTER TABLE语句可以直接修改字段名,不改变该字段的数据类型。 下面将example1表中 stu_name字段改名为name,且不改变数据类型。由于不改变该字段的数据类型,需要知道该字段现在的数据类型。 ? 2、修改字段名和字段数据类型?使用ALTER TABLE语句可以直接修改字段名和该字段的数据类型。 下面将example1表中stu_sex字段改名为sex,且数据类型改为INT(2)。SQL代码如下: 结果显示,example1表中已经不存在stu_sex字段,取而代之的是name字段。数据类型也从 TINYINT(1)变成了INT(2)。如果表中已经有记录,修改数据类型时应该特别小心。因为,修改数据类型时可能会影响表中的数据。特别值得注意的是,字符类型的字段最好不要改成整数类型、浮点数类型。 【区别】MODIFY 和CHANGE都可以改变字段的数据类型。不同的是,CHANGE可以在改变字段数据类型的同时,改变字段名。如果要使用CHANGE修改字段数据类型,那么CHANGE后面必需跟两个同样的字段名。 3.4 增加字段在创建表时,表中的字段就已经定义完成。如果要增加新的字段,可以通过ALTERTABLE语句进行增加。 在 MySQL中,ALTER TABLE语句增加字段的基本语法如下:
其中,“属性名1”参数指需要增加的字段的名称;“数据类型”参数指新增加字段的数据类型;“完整性约束条件”是可选参数,用来设置新增字段的完整性约束条件;“FIRST”参数也是可选参数,其作用是将新增字段设置为表的第一个字段;“AFTER属性名2”参数也是可选参数,其作用是将新增字段添加到“属性名2”所指的字段后。如果执行的SQL语句中没有“FIRST”“AFTER属性名2”参数指定新增字段的位置,新增的字段默认为表的最后一个字段。 1、增加无完整性约束条件的字段一个完整的字段包括字段名、数据类型和完整性约束条件。增加字段一般包括上述内容。根据实际情况,一些字段可以不用完整性约束条件进行约束。 下面将在user表中增加一个没有完整性约束条件约束的phone字段。SQL代码如下: 2、增加有完整性约束条件的字段增加字段时可以设置该字段的完整性约束条件,如设置字段是否为空(Null)、是否为主外键(Key) 、默认值(Default)和是否为自增类型等约束条件。 下面将在user表中增加一个有非空约束的age字段,SQL代码如下: !!!增加字段时,如果能够加上完整性约束条件,一定要加上。这样可以保证此字段的安全性,甚至可以提高整个表的数据的安全性。因此,使用ALTER语句增加字段时,一定要仔细考虑这个问题。 3、表的第一个位置增加字段默认情况下,新增字段为表的最后一个字段。如果加上FIRST参数,则可以将新增字段设置为表的第一个字段。 下面将在user表中第一个位置增加num字段,并设置num字段为主键。SQL代码如下: ? 4、表的指定位置之后增加字段在增加字段时,由于特殊原因需要在表的指定位置增加字段。如果加上“AFTER属性名2”参数,那么新增的字段插入在“属性名2”后面。 下面将在user表的 phone字段后增加 address字段,并设置 address字段为非空。SQL代码如下: ? 对于一个数据表而言,其中字段的排列顺序对表不会有什么影响。但是,对于创建的人来说,将有某种直接或者间接关系的字段放在一起,会更加好的理解这个表的结构。例如,grade表中的English字段、Math字段和Computer字段表示对应科目的成绩,那么放在一起就知道这些都是表示成绩。 3.5 删除字段删除字段是指删除已经定义好的表中的某个字段。在表创建完之后,如果发现某个字段需要删除,可以采用将整个表都删除,然后重新创建一张表的做法。这样做是可以达到目的,但必然会影响到表中的数据。而且,操作比较麻烦。 MySQL中,ALTER TABLE语句也可以删除表中的字段。其基本语法如下:
下面将从user表中删除id字段。SQL代码如下: ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 5:17:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |