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

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

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;

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm操作mysql数据库 创建表 向表中插入数据 操作mysql数据库查询 修改 删除数据

    pycharm操作mysql数据库 创建表 向表中插入数据 操作mysql数据库查询 修改 删除数据1 安装 PyMySQL 模块语法为 pipinstallPy 集成环境里面操作 MySQL 数据库创建表 导入 pymysqlimpor 创建连接 con pymysql connect host localhost user root password root database test port 3

    2025年7月22日
    4
  • 微信公众平台-微信服务号开发

    文章目录背景:一、微信各个平台介绍二、公众平台介绍三、开发前准备四、服务器配置五、服务器验证六、消息接收七、客服消息八、获取素材九、相关工具十、最终效果展示总结背景:近期接到了涉及微信开放平台和微信公众平台相关的开发需求,开发过程中踩了许多坑,把相关问题整理记录下来以便巩固记忆,并把总结的经验分享出来,本篇分享微信服务号开发,希望可以给大家提供帮助一、微信各个平台介绍1、微信开放平台:面向开发人员,为网站、App提供微信第三方登录功能,为App提供支付功能。2、微信公众平台:对应的是公众号,包括订

    2022年4月12日
    172
  • linux任务管理器_redhat和centos的区别

    linux任务管理器_redhat和centos的区别本文将向你介绍RedFlagDesktopLinux10(红旗Linux10)的新功能及新特性,让你对RedFlag的桌面版创新有一个了解,以下介绍6点和其他Linux发行版有着与众不同的地方。想获取该版本请看想要红旗桌面操作系统10(RedFlagDesktopLinux10)的请联系红旗官方一文。红旗Linux10的新功能/新特性介绍1、全新的UI设计全新的图标集和彩色表情包让用…

    2022年8月20日
    5
  • Dreamweaver2019版安装教程

    Dreamweaver2019版安装教程dreamweavercc2019新功能:1、CEF更新dreamweavercc2019现已与Chromium嵌入式框架的最新版本进行集成,这样设计人员和开发人员就可以构建与HTML5兼容的网站,并显示Flexbox元素、CSS网格等内容。2、ES6支持全新的EcmaScript6支持包括类、方法、箭头函数、生成器函数的快速输入列表,以及ES6代码的lint…

    2022年10月9日
    2
  • 后台管理系统登录思路「建议收藏」

    后台管理系统登录思路「建议收藏」一般来说我们不管是做后台管理,还是做普通项目,必不可少的其实就是登录。那么登录又是怎么实现的呢?废话不多说,上代码。首先我们把登录接口封装在一个文件里,如果这个接口有必备的参数,我们就得传参,然后在登录页引入调用。其次就是我们在登录页写登录框信息,这时候就需要接收接口必备的参数,那具体怎么接呢?先在data里设置两个放置参数的空数组。然后在登录信息框中外围prop接收,然后在信息框上v-model获取用户信息。在一个就是当我们填完用户信息的时候做什么逻辑:首先就是调用封装好的登录接口,其次在登录成功

    2022年5月8日
    75
  • python实现各大视频网站电影下载

    python实现各大视频网站电影下载一、前期准备有时候我们想下载自己喜欢的电影,但很多时候要么需要安装客户端才能下载,或者干脆不提供下载的服务,很是不爽,因此这里我们介绍使用python来实现网站的电影下载功能,凡是能在线观看的,都

    2022年7月3日
    26

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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