【数据库初阶】Linux中表的基础操作
🎉博主首页:
有趣的中国人
🎉专栏首页:
数据库初阶
🎉其它专栏:
C++初阶 |
C++进阶 |
初阶数据结构
亲爱的小伙伴们,大家好!在这篇文章中,我们将深入浅出地为大家讲解 Linux中表的基础操作 帮助您轻松入门,快速掌握核心概念。
如果文章对您有所启发或帮助,请别忘了 点赞 👍、收藏 🌟、留言 📝 支持!您的每一份鼓励,都是我持续创作的源动力。让我们携手前行,共同进步!
文章目录
- @[toc]
- 1. 创建表
- 🎧1.1 创建语法🎧
- 🎧1.2 创建案例🎧
- 以默认存储引擎(InnoDB)创建表
- 以 MyISAM 为存储引擎创建表
- 区别
- 2. 查看表
- 🎧2.1 查看数据库中的所有表🎧
- 🎧2.2 查看表结构🎧
- 🎧2.3 查看创建表的语法🎧
- 3. 修改表
- 🎧3.1 向表中增删元素🎧
- 增加元素
- 删除表中的元素
- DELETE 关键字
- TRUNCATE 关键字
- 🎧3.2 重命名表🎧
- 🎧3.3 修改表的字段🎧
- 增加列
- 修改列的数据类型
- 修改列名称
- 删除列
- 改变列的位置
- 4. 删除表
文章目录
- @[toc]
- 1. 创建表
- 🎧1.1 创建语法🎧
- 🎧1.2 创建案例🎧
- 以默认存储引擎(InnoDB)创建表
- 以 MyISAM 为存储引擎创建表
- 区别
- 2. 查看表
- 🎧2.1 查看数据库中的所有表🎧
- 🎧2.2 查看表结构🎧
- 🎧2.3 查看创建表的语法🎧
- 3. 修改表
- 🎧3.1 向表中增删元素🎧
- 增加元素
- 删除表中的元素
- DELETE 关键字
- TRUNCATE 关键字
- 🎧3.2 重命名表🎧
- 🎧3.3 修改表的字段🎧
- 增加列
- 修改列的数据类型
- 修改列名称
- 删除列
- 改变列的位置
- 4. 删除表
上一篇文章中,博主介绍了 :
- 数据库基础知识;
- MySQL数据库的增删改查
建议将上一篇文章看完之后再来看这篇文章,链接如下:
【数据库初阶】Linux中库的基础操作那么接下来正文开始:
1. 创建表
🎧1.1 创建语法🎧
- 语法:
create table tb_name(
field1 datatype,
field2 datatype,
field3 datatype
) charset=字符集 collate=校验集 engine=存储引擎;
# 最后一行也可以这样写:
) character set 字符集 collate 校验集 engine 存储引擎;
- 语法说明:
field
表示列名;datatype
表示列的类型(关于类型下一篇文章会细讲);character set 和 charset
表示字符集,如果没有指定字符集,则以所在数据库的字符集为准;collate
校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准。
🎧1.2 创建案例🎧
- 我们可以先查看一下系统的默认存储引擎,进入
MySQL
中然后输入show engines;
- 可以看到系统默认的存储引擎是
InnoDB
,这也是可以更改的,在/etc/my.cnf
这个文件中更改即可,但是不推荐更改!!! - 那我们接下来创建两个表,其中一个是 默认的存储引擎(
InnoDB
),另外一个是以MyISAM
以存储引擎创建表。
以默认存储引擎(InnoDB)创建表
- 输入下面代码,创建
student
表:
mysql> create table student(
-> id int,
-> name varchar(20) comment '用户名',
-> password varchar(32) comment '密码',
-> birthday date comment '学生生日日期'
-> );
以 MyISAM 为存储引擎创建表
- 输入下面代码,创建
people
表:
mysql> create table people(
-> name varchar(20) comment '姓名',
-> age int comment '年龄',
-> hobbies varchar(128) comment '爱好'
-> )charset=utf8mb4 collate=utf8mb4_0900_ai_ci engine=MyIsam;
区别
- 我们可以在
/var/lib/test1
这个目录中查看一下创建两张不同的表之后,系统为我们创建了什么文件; - 进入之后,发现以
MyISAM
为存储引擎的表有三个文件,而InnoDB
为存储引擎的表只有一个文件;- 博主的这个
MySQL
版本是8.0
之后的,如果你是8.0
版本之前的,可能会有.frm
文件; - 这个文件表示的是表的框架;
- 但是在
8.0
版本之后,这个文件逐渐被.sdi
文件替代了 。
- 博主的这个
- 以
.MYD
为后缀的文件表示的是用MyISAM
引擎创建的表的数据(data
); - 以
.MYI
为后缀的文件表示的是用MyISAM
引擎创建的表的索引(index
); - 所以
MyISAM
引擎创建的表数据和索引是分开存的; - 以
.ibd
为后缀的文件表示的是用InnoDB
引擎创建的表的数据和索引; - 所以
InnoDB
引擎创建的表的数据和所以是一起存放的。 - 索引和数据以及框架在博主后面的文章会提及!
2. 查看表
🎧2.1 查看数据库中的所有表🎧
- 语法:
show tables;
(很easy) - 例如:
🎧2.2 查看表结构🎧
- 语法:
desc table_name;
(desc
可以理解为describe
) - 例如:
- 暂时只需要理解前两列即可。
🎧2.3 查看创建表的语法🎧
- 语法:
show create table table_name;
(这个和查看创建数据库的语法及其相似) - 例如:
- 我们查看到的语法是经过
mysqld
优化过的; - 还记得
mysqld
的层级吗,我们输入的语法就要在它的上层经过语法分析和词法分析等,将我们输入的语法变成他自己想要看到的; - 而我们现在看到的就是经过分析过的。
- 我们查看到的语法是经过
- 加上
\G
是让本身是表格形式的输出变成垂直形式的输出。
3. 修改表
- 实际开发中,我们需要向表中插入删除内容;
- 也会修改表的结构,例如字段名字、字段类型、字段大小;
- 也会修改表的字符集类型、校验集类型;
- 亦或是修改表的名称;
- 因此修改表的操作还是非常值得学习的。
🎧3.1 向表中增删元素🎧
增加元素
- 语法:
insert into table_name (column1, column2, column3, ...)
values(value1, value2, value3, ...),(value1, value2, value3, ...);
- 这里的括号可以省略,但是如果省略的话一定要按照你定义的顺序插入!
- 也就是说,只要你 指定了列名,就可以 按照你所给定的列依次插入元素;
- 例如:
删除表中的元素
- 有两种方法,第一种是
DELETE
关键字; - 第二种是
TRUNCATE
关键字。
DELETE 关键字
- 语法:
DELETE FROM table_name WHERE condition
; - 说明:
table_name
:目标表的名称。condition
:指定要删除的行的条件。
- 例如:
delete from student where id=1;
- 或者可以清空整个表:
- 语法:
DELETE FROM tb_name;
- 这样会清空表中的数据,但表结构仍然保留。
- 语法:
TRUNCATE 关键字
TRUNCATE
是一个更高效的方式,用于清空表中的所有数据,表结构仍然保留。- 语法:
TRUNCATE TABLE table_name;
- 特点:
- 比
DELETE
更快,因为它不会逐行删除数据,而是直接重置表; - 不支持
WHERE
条件,只能删除所有数据。
- 比
🎧3.2 重命名表🎧
- 语法:
ALTER TABLE tb_name RENAME TO new_tb_name;
- 这里的
TO
可以省略。
- 例如:
🎧3.3 修改表的字段🎧
增加列
- 语法:
ALTER TABLE tb_name ADD COLUMN column_name column_definition;
table_name
:要添加列的表名。column_name
:新列的名称。column_definition
:新列的定义,包括数据类型、大小等。
- 例如:
alter table students add column age int;
修改列的数据类型
- 语法:
ALTER TABLE table_name MODIFY COLUMN column_name new_column_definition;
column_name
:要修改的列名;new_column_definition
:新的列定义。
- 例如:
- 将
age
的数据类型改为bigint
。 alter table students modify column age bigint;
- 将
修改列名称
- 语法:
ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name column_definition;
- 例如:
alter table students change column birthday birthdate date;
- 这里一定要注意修改列名称的时候一定要把列的定义要加上去,不然会报错的!!!
删除列
- 语法:
ALTER TABLE table_name DROP COLUMN column_name;
- 例如:
alter table students drop column age;
改变列的位置
- 语法:
ALTER TABLE table_name MODIFY COLUMN column_name column_definition AFTER another_column;
- 例如,将
id
列移动到name
列之后:alter table students modify column id int after name;
- 这里也要注意要移动的那一列一定要加上列定义!!!
4. 删除表
- 语法:
DROP TABLE table_name;
- 例如:
- 删除
people
表 :drop table people;
;
- 删除