【MySQL】表的操作

文章目录

    • [1. 创建表](#1. 创建表)
    • [2. 创建表案例](#2. 创建表案例)
    • [3. 查看表结构](#3. 查看表结构)
    • [4. 修改表](#4. 修改表)
      • [4.1 修改表名为 user](#4.1 修改表名为 user)
      • [4.2 在 user 表中添加两条记录](#4.2 在 user 表中添加两条记录)
      • [4.3 在 user 表中添加一个字段(新增一列)](#4.3 在 user 表中添加一个字段(新增一列))
      • [4.4 修改 name 字段的属性,将其长度改成 60](#4.4 修改 name 字段的属性,将其长度改成 60)
      • [4.5 删除 password 列](#4.5 删除 password 列)
      • [4.6 将 name 列修改为 xingming](#4.6 将 name 列修改为 xingming)
    • [5. 删除表](#5. 删除表)

1. 创建表

语法

sql 复制代码
CREATE TABLE table_name (
 	field1 datatype,
 	field2 datatype,
 	field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

说明:

  • field 表示列名
  • datatype 表示列的类型
  • character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
  • collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

2. 创建表案例

老规矩,在建表之前,我们先创建一个 user_db 的数据库:

sql 复制代码
// 建库
create database user_db;

// 使用库
use user_db;

结果如下:

建表的语法:

sql 复制代码
create  table  users (
 	id int,
 	name varchar(20) comment '用户名',
 	password char(32) comment '密码是32位的md5值',
 	birthday date comment '生日'
) character set utf8 engine MyISAM;

结果如下:

说明:不同的存储引擎,创建表的文件不一样。users 表存储引擎是 MyISAM,在数据目中有三个不同的文件,分别是:

  • users.frm:表结构
  • users.MYD:表数据
  • users.MYI:表索引

我们可以在 /var/lib/mysql/user_db 目录下查看:

此时,我们再建一个 engineinnodb 的数据库,观察存储目录:

此时可以看到存储引擎为 innodb 的表只有 2 个配置文件。

3. 查看表结构

查看表结构之前,先确认自己在哪一个数据库中:

sql 复制代码
select database();

结果如下:

再查看我当前所在的这个数据库里面有几张表:

sql 复制代码
show tables;

结果如下:

接着再查看表的详细信息:

sql 复制代码
desc 表名;

结果如下:

其中,每一列的含义如下:

除此之外,我们还可以查看表创建的时候的详细信息:

sql 复制代码
show create table user1 \G

结果如下:

4. 修改表

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。

语法如下:

sql 复制代码
ALTER TABLE  tablename ADD (column datatype [DEFAULT expr][,column datatype]...);

ALTER TABLE  tablename MODIfy (column datatype [DEFAULT expr][,column datatype]...);

ALTER TABLE  tablename DROP (column);

我们来看几个案例:

4.1 修改表名为 user

语法:

sql 复制代码
alter table users rename to employee;

结果如下:

注意: to 可以省掉。

4.2 在 user 表中添加两条记录

语法:

sql 复制代码
insert into user value (1, '张三', '123456', '2000-10-1');
insert into user value (2, '李四', '1234567', '2002-12-25');

结果如下:

4.3 在 user 表中添加一个字段(新增一列)

主要用于保存图片路径,并且把新增的列放到表的最后。

sql 复制代码
alter table user add image_path varchar(128) comment '用户的头像路径' after birthday;

结果如下,并且可以看到插入新字段后,对原来表中的数据没有影响:

4.4 修改 name 字段的属性,将其长度改成 60

sql 复制代码
alter table user modify name varchar(60);

结果如下:

4.5 删除 password 列

sql 复制代码
alter table user drop password;

结果如下:

注意:删除字段一定要小心,删除字段及其对应的列数据都没了。

4.6 将 name 列修改为 xingming

sql 复制代码
alter table user change name xingming varchar(60) comment '用户的名字';

结果如下:

5. 删除表

语法:

sql 复制代码
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

示例:

sql 复制代码
drop table user;

结果如下:

相关推荐
rising start7 小时前
二、全面理解MySQL架构
mysql·架构
星星也在雾里7 小时前
PgBouncer 解决 PostgreSQL 连接数超限 + 可视化监控
数据库·postgresql
bqq198610267 小时前
MySQL性能优化
mysql·mysql优化
雨辰AI9 小时前
SpringBoot3 + 人大金仓读写分离 + 分库分表 + 集群高可用 全栈实战
java·数据库·mysql·政务
长城20249 小时前
关于MySql的ONLY_FULL_GROUP_BY问题
数据库·mysql·聚合列
常常有9 小时前
MySQL 底层执行原理:输入SQL语句到两阶段提交
数据库·sql·mysql
Mr. zhihao10 小时前
深入解析redis基本数据结构
数据结构·数据库·redis
m0_7488394910 小时前
利用天正暖通CAD快速掌握风管数量统计的方法
数据库
随身数智备忘录10 小时前
什么是设备管理体系?设备管理体系包含哪些核心模块?
网络·数据库·人工智能
海市公约10 小时前
MySQL更新语句执行全流程:从Buffer Pool修改到二阶段提交
数据库·mysql·binlog·innodb·undo log·二阶段提交·update执行原理