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】数据定义语言。

相关推荐
唐青枫8 小时前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
吃糖的小孩8 小时前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
小满8788 小时前
5.Mysql事务隔离级别与锁机制
mysql
随遇丿而安8 小时前
第10周:Activity 基础功能与生命周期优化
android
alexhilton21 小时前
Android车载OS中的Remote Compose
android·kotlin·android jetpack
笃行3501 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3501 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行3501 天前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库
元Y亨H1 天前
技术笔记:MySQL 字符集排序规则与大小写敏感性问题解决方案
mysql