【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;

结果如下:

相关推荐
AI绘画小339 分钟前
渗透测试数据库判断卡壳?分类 + 方法 + SQL/NoSQL 脚本速用
服务器·数据库·sql·mysql·web安全·nosql
启明真纳1 小时前
Logstash 从 MySQL 同步数据到 Kafka
mysql·kafka·linq
无敌最俊朗@1 小时前
01-总结
java·jvm·数据库
think2cat1 小时前
图书馆的"备份书库"与"时光机":MongoDB副本集深度揭秘
数据库·mongodb
清风6666661 小时前
基于单片机的多模式智能洗衣机设计
数据库·单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
武子康1 小时前
Java-167 Neo4j CQL 实战:CREATE/MATCH 与关系建模速通 案例实测
java·开发语言·数据库·python·sql·nosql·neo4j
Fency咖啡2 小时前
redis进阶 - 底层数据结构
数据结构·数据库·redis
Java水解2 小时前
MySQL 正则表达式:REGEXP 和 RLIKE 操作符详解
后端·mysql
The Sheep 20232 小时前
MicroService(Redis)
数据库·redis·c#