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

结果如下:

相关推荐
码农阿豪1 小时前
国产化替代新篇章:金仓数据库如何实现MongoDB平滑迁移
数据库·mongodb
彦偈1 小时前
Centos7 oracle 11G 搭建ADG
数据库·oracle
言德斐8 小时前
SQL性能优化的思路及策略
数据库·sql·性能优化
码界奇点8 小时前
Django视图从基础到高级的全面解析
数据库·django·sqlite·web·python3.11
Allan_20258 小时前
数据库学习
数据库·学习
fen_fen8 小时前
人大金仓数据库kingbase8创建表示例
数据库·oracle
一勺菠萝丶8 小时前
「您的连接不是私密连接」详解:为什么 HTTPS 证书会报错,以及如何正确配置子域名证书
数据库·网络协议·https
²º²²এ松9 小时前
蓝牙低功耗(BLE)通信的中心设备/外围设备(连接角色)、主机/从机(时序角色)、客户端/服务器(数据交互角色)的理解
运维·服务器·数据库
百锦再9 小时前
Vue Scoped样式混淆问题详解与解决方案
java·前端·javascript·数据库·vue.js·学习·.net
数据库知识分享者小北10 小时前
云栖重磅|瑶池数据库:从云原生数据底座向“AI就绪”的多模态数据底座演进
数据库·人工智能·云原生