MySQL表的操作

前言

在第一篇文章中,我们将所有的SQL语句分为三种,分别是DDL,DML,DCL。其分别对应的是数据定义语言,数据操作语言,数据控制语言。其中表的操作主要设计DDL与DML。DDL主要在建表、删表、修改表体现。而DML主要体现在插入表内容、删除表内容体现。

创建表

创建表的SQL如下:

复制代码
CREATE TABLE [IF NOT EXISTS] table_name(
	field1 datatype1 [COMMENT '注释信息'],
	field2 datatype2 [COMMENT '注释信息'],
	field3 datatype3  [COMMENT '注释信息']
)[CHARSET=charset_name] [COLLATE=collation_name] [ENGINE=engine_name];

说明:

  • field 表示列名。
  • datatype 表示列的类型。
  • character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准。
  • COMMENT用于对指定列添加注释信息。
  • ENGINE用于指定表所采用的存储引擎。

创建表案例

创建一个users表,其用于表示某位人的基本信息:id号、用户名、用户的密码、生日。每个元素后面都带上注释,搜索引擎使用MyISAM,字符集使用utf8。

不要忘记,在创建表之前要先创建数据库并且use该数据库。

其创建案例如下:

不同的存储引擎,创建表的文件不一样。其中users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:

  • users.frm:表结构
  • users.MYD:表数据
  • users.MYI:表索引

类似如下:

查看表结构

SQL语法如下:

复制代码
desc 表名;

查看我们刚才创建的表,查询结果如下:

  • Field表示该字段的名字。
  • Type表示该字段的类型。
  • Null表示该字段是否允许为空。
  • Key表示索引类型,比如主键索引为PRI。
  • Default表示该字段的默认值。
  • Extra表示该字段的额外信息说明。

如果想要查看更详细的细节,可以采用show create tables 表名。该SQL语句。

修改表

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。

复制代码
ALTER TABLE table_name ADD 新增列名 新增列的属性;

ALTER TABLE table_name MODIFY 列名 修改后的列属性;

ALTER TABLE table_name DROP 列名;

ALTER TABLE table_name RENAME [TO] 新表名;

ALTER TABLE table_name CHANGE 列名 新列名 新列属性;

这里我们还是采用刚才创建的users表。

ADD

在users表中新增一列用于保存用户的电话。如下:

除此之外还可以将新增的列指定在表的位置,需要使用SQL语句的after。比如我们再新增addr在name后。

补充:新增列的其他属性如果不指定全为系统默认。

MODIFY

我们将刚才新增的addr修改为varchar(128)。

结果如下:

DROP

我们将addr列删除。

RANAME

我们将users表名修改为employee。

CHANGE

我们刚修改表名后的employee表中的tel修改为email。

删除表

删除表的SQL如下:

复制代码
DROP [TEMPORARY] TABLE [IF EXISTS] table_name;

其中在创建表语句中加上TEMPORARY关键字,那么服务器将创建出一个临时表,该表会在你与服务器的会话终止时自动消失。TEMPORARY表的名字可以与某个已有的永久表相同,当有TEMPORARY表存在时,对应的永久表会隐藏起来(即无法访问)。为了避免重新连接后(TEMPORARY已经不存在),在未做检测的情况下调用DROP误删了对应永久表,因此在使用DROP删除临时表时需要带上TEMPORARY关键字。

将employee表删除。

相关推荐
刚入门的大一新生5 分钟前
Linux-进程池
linux·运维·服务器
用户62799471826211 分钟前
南大通用GBase 8a之基于审计日志的冷温热数据分析
数据库
万年咸鱼15 分钟前
HTTPS 是如何保证传输安全的?
网络协议·安全·https
数据库小学妹16 分钟前
数据库运维五级成熟度:监控、备份、高可用怎么串起来
运维·数据库·监控
一个天蝎座的程序猿23 分钟前
为了给报表提速,我把金仓KES的列存储折腾了个遍:聊聊KES的技术能力
数据库
飞越未来云城的霓虹飞猪23 分钟前
AI 数据库地图:从 PostgreSQL 到向量数据库,一次看懂 AI 时代的数据底座
数据库
不像程序员的程序媛28 分钟前
导出mysql数据结构
数据库·mysql
GlobalTradercrb28 分钟前
独立站SEO先写博客还是先优化产品页?看站点阶段
数据库·人工智能·google·pdf·go·seo
隐擎fox1 小时前
深入 Android 移动端风控与协议层对抗:内核级虚拟环境检测、网络堆栈特征伪装与住宅 IP 协同实战
android·网络·python·网络协议·tcp/ip
鱼很腾apoc1 小时前
【MySQL】第4期 用户管理与 C 语言连接编程详解
linux·服务器·c语言·mysql·connector/c