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

相关推荐
SmartBrain2 小时前
Agent 知识总结
服务器·数据库·笔记
千寻技术帮2 小时前
10336_基于SSM的少数民族文化商城
mysql·毕业设计·ssm·非遗商城
yngsqq3 小时前
AndroidStudio汉化步骤
android
fenglllle3 小时前
MySQL explain format的差异
数据库·mysql
哈哈不让取名字4 小时前
用Pygame开发你的第一个小游戏
jvm·数据库·python
程序员敲代码吗4 小时前
Python异步编程入门:Asyncio库的使用
jvm·数据库·python
liux35284 小时前
MySQL主从复制技术全面解析:从基础原理到高级架构实践(八)
mysql
HyEISN4 小时前
Android 9 开启远程adb
android·adb
2501_944526424 小时前
Flutter for OpenHarmony 万能游戏库App实战 - 抽牌游戏实现
android·开发语言·python·flutter·游戏