MySQL表的操作

创建表

语法:

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

说明:

  • field表示列名
  • datatype表示列的类型
  • character set字符集,如果不指定字符集,默认为当前数据库的字符集
  • collate校验规则
  • engine搜索引擎,如果不指定,则选用配置文件的引擎

创建表示例

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

此时在MySQL的默认存储路径/var/lib/mysql/,对应我们当前数据库user_db的路径/var/lib/mysql/user_db下就会新增三个文件:

  • .sdi是数据库镜像文件
  • .MYD是表数据
  • .MYI是表索引
  • 8.0以前的MySQL没有.sdi文件而是 .frm表结构

我们可以以默认形式创建一个表:

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

此时我们的搜索引擎就是InnoDB。

可以看到InnoDB引擎形式创建的表只会生成一个.ibd文件。

  • .ibd 文件是 MySQL InnoDB 存储引擎的独立表空间文件

查看表的结构

语法:

sql 复制代码
desc 表名;
  • Fileld 字段名字
  • Type 字段类型
  • Null 是否允许为空
  • Key 索引类型
  • Default 默认值
  • Extra 扩充

此外,我们还能用:

sql 复制代码
show create table 表名;

来显示创建语句:

有很多-妨碍我们,我们可以在show create table 表名后加上\G去掉这些字符:

此时\G后面就不用跟;了。

注意到我们的user2就是默认字符集,默认引擎。

修改表

我们可以修改表的名字,字段名字,字段大小之类的。

语法:

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

如我们先在users中插入两条数据:

sql 复制代码
insert into users values(1,'a','b','1982-01-04'),(2,'b','c','1984-01-04');
  1. 此时我们可以添加一个字段来存储图片保存路径:
sql 复制代码
alter table users add img_path varchar(100) comment '图片路径' after birthday;

这里的after就是指img_path这一列在birthday之后.

  1. 修改name的类型长度:
sql 复制代码
alter table users modify name varchar(60);

注意我们再查看创建语句:

细心的读者已经发现了,我们的comment描述被覆盖了。所以modify是覆盖式的修改,因此我们修改的时候要把类型打全哦,包括之前的comment。

  1. 删除password列:
sql 复制代码
alter table users drop password;

此时password的数据都丢失了,所以不要随意删除列。

4.修改表名

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

此时我们的文件名也会跟着一起修改:

5.将name列修改为xingming:

sql 复制代码
alter table employee change name xingming varchar(60);

注意把类型带上哦。

删除表

语法:

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

如:

以上我们对表操作,除了插入数据都是DDL【data definition language】数据定义语言。

相关推荐
alexhilton6 小时前
藏在设备上的秘密,终究藏不住
android·kotlin·android jetpack
Rain的Java大神之路7 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
十二同学啊8 小时前
向量数据库:从核心原理到 RAG 与 Java 实战
数据库
蓝速科技9 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
大海星辰7989 小时前
一次对账SQL“灵异事件”排查:NOT IN返回空集的坑
mysql
Linux-lucky10 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
一 乐11 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
SelectDB12 小时前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析
hai_android12 小时前
Kotlin / Android 常用函数使用示例手册
android·java·kotlin
这个DBA有点耶12 小时前
数据库集群与分布式架构:三条技术路线对比、金仓KES RAC实测数据与决策框架
数据库·程序员·架构