第三章《数据表的基本操作》

第三章《数据表的基本操作》

1.关于表
表示数据库存储数据的基本单位。一个表可以包含若干个字段或者是记录。表的操作包括创建表、修改表、删除表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整性约束的过程。
1.创建表:
数据表属于数据库,在创建数据表之前,应该使用“USE <数据库名>”移动到指定的数据库下。
如果没有选择数据库,创建表时会报错;
创建表的语法:
CREATE TABLE table_name
(
字段1 数据类型 [完整性约束条件],
字段2 数据类型 [完整性约束条件],

);

mysql> create table hahaha //创建表
-> (
-> id INT(10),
-> name VARCHAR(25),
-> sex VARCHAR(10)
-> );

mysql> show tables; //查看表
±————-+
| Tables_in_hy |
±————-+
| hahaha |
±————-+

mysql> desc hahaha; //查看表的结构
±——±————±—–±—-±——–±——+
| Field | Type | Null | Key | Default | Extra |
±——±————±—–±—-±——–±——+
| id | int(10) | YES | | NULL | |
| name | varchar(25) | YES | | NULL | |
| sex | varchar(10) | YES | | NULL | |
±——±————±—–±—-±——–±——+

2.什么是完整型约束条件?
完整性约束条件对字段进行限制,要求用户只能向字段中写入符合条件的数据,如果不满足约束条件数据库将不执行该数据的写入操作。

常用的约束条件:
PRIMARY KEY(primary key): 标识该字段为该表的主键,可以唯一的标识数据。(特点:非空、唯一);
FOREIGN KEY(foreign key): 表示该字段为该表的外键,是与之联系的某表的主键。
NOT NULL(not null): 非空,标识该字段的值不能为空;
UNIQUE(unique): 唯一,标识该字段的值是唯一的;
AUTO_INCREMENT(auto_increment): 自增,表示该字段的值自动增加。一般对应数据类型INT,默认从1开始递增
DEFAULT(default):为该字段设置默认值;
UNSIGNED(unsigned):无符号,值从0开始,无负数;
ZEROFILL(zerofill):零填充,当数据的显示长度不够的时候可以使用在前面补0的效果填充值指定长度,
字段会自动添加UNSIGNED约束;

2.1使用主键约束
主键是一个特殊字段,每一个表只能设置一个主键,主键约束要求主键列的数据唯一,可以唯一的标识表中的数据并且不能为空(非空且唯一)。
添加主键的语法:
1.在创建数据表的时候设置主键;
(1)单字段主键;
语法:字段名 数据类型 PRIMARY KEY
mysql> create table hahaha2
-> (
-> id int(11) PRIMARY KEY,
-> name VARCHAR(10),
-> sex VARCHAR(10)
-> );

mysql> desc hahaha2;
±——±————±—–±—-±——–±——+
| Field | Type | Null | Key | Default | Extra |
±——±————±—–±—-±——–±——+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(10) | YES | | NULL | |
| sex | varchar(10) | YES | | NULL | |
±——±————±—–±—-±——–±——+

语法:在所有字段都规定好了之后,在所有字段的最后面来设置主键
字段1 数据类型 [完整性约束],
字段2 数据类型 [完整性约束],
字段N 数据类型 [完整性约束],
[CONSTRAINT<主键名>] PRIMARY KEY (字段1,字段2,字段3,…)

在这里插入图片描述

2.用修改表的方法也可以添加主键:
ALTER TABLE 表名 ADD PRIMARY KEY (字段名)
在这里插入图片描述
2.3使用外键:
外键用来在两个数据表之间建立连接,它可以是一列,也可以是多列;
语法:
在创建表的时候添加
字段1 数据类型 [完整性约束],
字段2 数据类型 [完整性约束],
字段N 数据类型 [完整性约束],
[CONSTRAINT <外键名>]FOREIGN KEY (字段1,字段2,字段N) REFERENCES 主表(主键列)

在这里插入图片描述
修改表的方式添加外键:
ALTER TABLE 子表名 ADD CONSTRAINT 外键名 FOREIGN KEY (字段) REFERENCES 父表名 (父表主键列)

在这里插入图片描述

注意;
1.关联的父表列,一定是父表的主键列
2.关联的父表如果为联合主键是,先关联联合主键中的第一个字段
3.关联父表时,被关联的外键的数据类型要和父表主键的数据类型一致,否则关联失败
4.关联父表时,父表和子表的存储引擎必须为InnoDB,MyISAM引擎不支持外键功能。
5.要避免书写错误
6.如果两个表之间有外键关联,如果我们想要删除父表,必须先解除外键的关系,或者先删除掉子表,
否则无法删除父表

2.4使用非空约束
非空约束指字段的值不能为空
语法:
在创建表时
字段名 数据类型 NOT NULL
在这里插入图片描述

2.5 唯一约束:
给字段的值添加唯一属性,添加之后,该字段不能插入重复的值
语法;
1.直接在创建表时,再要设置唯一性的字段数据类型后添加UNIQUE
2.在所有字段后面添加:[CONSTRAINT 约束名] UNIQUE (字段);
在这里插入图片描述

2.6使用默认约束条件;
默认约束是给字段设置默认值,如果在插入数据的时候没有给改列赋值,则系统会自动将默认值插入到该列。
添加语法:
字段名 数据类型 DEFAULT(默认值)
在这里插入图片描述
2.7 设置自增约束
要求字段的数据类型为数字类型,
语法;
字段 数据类型 AUTO_INCREMENT
在这里插入图片描述
3.修改数据表;
3.1修改表名
一个数据库里的每一个数据表的名称都是唯一的。
语法:
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
例如:
在这里插入图片描述
注意:
还可以通过修改表名的语法把A库里面的teacher表移动到B库里。
ALTER TABLE teacher RENAME TO B.teacher
例子:
在这里插入图片描述
3.2 修改字段名;
语法;
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新的数据类型>;
mysql> DESC teacher;
±——±————±—–±—-±——–±——+
| Field | Type | Null | Key | Default | Extra |
±——±————±—–±—-±——–±——+
| name | varchar(20) | NO | PRI | | |
| sex | varchar(20) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
±——±————±—–±—-±——–±——+
3 rows in set (0.00 sec)

mysql> ALTER TABLE teacher CHANGE age id INT(11);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> DESC teacher;
±——±————±—–±—-±——–±——+
| Field | Type | Null | Key | Default | Extra |
±——±————±—–±—-±——–±——+
| name | varchar(20) | NO | PRI | | |
| sex | varchar(20) | YES | | NULL | |
| id | int(11) | YES | | NULL | |
±——±————±—–±—-±——–±——+
3 rows in set (0.00 sec)

3.3修改字段的数据类型:
语法:
ALTER TABLE 表名 MODIFY <字段名> <新数据类型>;
例子;
mysql> DESC teacher;
±——±————±—–±—-±——–±——+
| Field | Type | Null | Key | Default | Extra |
±——±————±—–±—-±——–±——+
| name | varchar(20) | NO | PRI | | |
| sex | varchar(20) | YES | | NULL | |
| id | int(11) | YES | | NULL | |
±——±————±—–±—-±——–±——+
3 rows in set (0.00 sec)

mysql> ALTER TABLE teacher MODIFY id VARCHAR(20);
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> DESC teacher;
±——±————±—–±—-±——–±——+
| Field | Type | Null | Key | Default | Extra |
±——±————±—–±—-±——–±——+
| name | varchar(20) | NO | PRI | | |
| sex | varchar(20) | YES | | NULL | |
| id | varchar(20) | YES | | NULL | |
±——±————±—–±—-±——–±——+
3 rows in set (0.00 sec)

3.4添加新的字段
语法;
ALTER TABLE <表名> ADD <新字段名> <数据类型> <约束条件> [first/after 已存在的字段名];
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.5修改字段的摆列位置;
语法:
alter table <表名> modify <字段名> <数据类型> first/after <字段2>

在这里插入图片描述
在这里插入图片描述
3.6删除字段:
语法:
alter table <表名> drop 字段名;
在这里插入图片描述
3.7 创建表的时候选择不同的存储引擎;
语法:
create table <表名>

字段1 数据类型 约束条件,
字段2 数据类型 约束条件,
。。。
)ENGINE=InnoDB/MyISAM;

查看表详细结构;
在这里插入图片描述

3.8更改表的存储引擎;
alter table <表名> ENGINE=更改后的引擎;
在这里插入图片描述
3.9 删除数据表;
语法 :
drop table 表1,表2,表N…
[IF EXISTS]:不加这个,如果我们要删除的表不存在就会报错,加上呢,不存在也会执行删除操作,不会返回错误信息

注意:如果我们要删除的表是另一个设置了外键的表的父表,无法直接删除,我们需要先删除外键或者是把子表删掉,才可以删除这个表;
在这里插入图片描述

3.10 删除表的外键约束:
语法:
alter table <表名> drop foreign key <外键名> ;
注意:如果没有设置外键名,外键名就是字段名;

3.11 删除表的主键约束;
语法:
alter table <表名> drop PRIMARY KEY;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101975.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 菲尼克斯电源模块的安装

    菲尼克斯电源模块的安装这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入菲尼克斯电源模块的安装QUINT4-PS/1AC/24DC/101.安全规范和安装注意事项警告:电击危险!仅有具备从

  • Hello CTP(一)——期货基础知识

    Hello CTP(一)——期货基础知识一、期货基础1、期货合约期货合约是指由期货交易所统一制定的、规定在将来某一特定的时间和地点交割一定数量和质量商品的标准化合约。期货合约是买方同意在一段指定时间后按特定价格接收某种资产,卖方同意在一段指定时间后按特定价格交付某种资产的协议。双方同意将来交易时使用的价格称为期货价格。双方将来必须进行交易的指定日期称为结算日或交割日。双方同意交换的资产称为标的。期货交易所严格区分平仓和平今,当天建仓只能用平今指令才能平掉。郑商所和大商所不做区分,大商所平今单不收手续费,鼓励作短线。2、开仓平仓

  • DFS 图遍历路径优化分析「建议收藏」

    DFS 图遍历路径优化分析「建议收藏」深度优先搜索是图的遍历的一种重要方法,在一些网络拓补结构、DNA网络等复杂图形分析中有很广泛的应用。传统的深度优先搜索,从某一节点开始,依次遍历此节点所有相邻且未被访问的节点,其下一跳节点的选择往往不是最优的。文章通过对当前节点所有未被访问的下一跳节点计算其到所有未访问节点路径总和,选择最优的一个节点作为下一跳节点,使得深度优先搜索在图的遍历过程中总的搜索路径大大减少。深度优先搜索算法对图的遍历分析图的遍历是指从图的某个节点开始,沿着某条路径对图中所有节点依次访问。解决图的遍历问题,目前主要.

  • ipad越狱有什么坏处吗?_平板越狱有什么好处

    ipad越狱有什么坏处吗?_平板越狱有什么好处1. iPad越狱是什么?iPad越狱有什么好处和坏处?不越狱又有啥缺点?越狱就是解除一些原版固件的限制。最大的好处是可以安装激活成功教程的软件和游戏,这些软件和游戏本来都是收费的。而且,有些功能很强大的软件,并不是花钱能在官方的App Store里能买到的(某些有米之人或许会说“我就不越狱,我都花钱买正版”,我只能客气地说他只知其一不知其二),比如SBSettings, OpenSSH, Lockd

  • Linux makefile 教程 很具体,且易懂

    Linux makefile 教程 很具体,且易懂

  • ShareSDK for iOS 2.9.0已经公布

    ShareSDK for iOS 2.9.0已经公布

    2021年11月16日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号