首页  >  文章  >  数据库  >  MYSQL表操作

MYSQL表操作

齐天大圣
齐天大圣原创
2020-05-27 08:48:45163浏览

当一个库建立好,接下来就需要建立表了。建表不关要知道语法,还需要知道列类型、以及索引等。下面只讲建表的语法,关于列类型等就不陈述了。

建表

建表语法:

CREATE TABLE [IF NOT EXISTS] 表名 (
    字段名1 列类型 [属性] [索引],
    字段名2 列类型 [属性] [索引],
    字段名3 列类型 [属性] [索引],
    ......
) [表类型] [表字符集]

这里有个注意点,字段名不要和mysql的关键字一致,如果真要这么做的话,需要在字段名前后加上`符号,这个符号是在tab键的上面。

现在我们来建立一个user表,字段有:用户ID、用户名、用户密码、手机号、性别、生日。

create table if not exists users(
  user_id int(10) unsigned auto_increment primary key,
  username varchar(16) not null default '' collate utf8mb4_bin comment '用户名',
  userpass char(32) not null collate utf8mb4_bin default '',
  mobile char(11) not null default '' unique,
  gender enum('未知', '男', '女') default '未知',
  birth date not null default '1900-01-01',
  index username(username)
) engine=innodb default charset utf8mb4 collate utf8mb4_general_ci;

通常,我们都会为每个表建立以唯一标识字段,这里即user_id,方便以后的操作。这里username及userpass字段都设置了collate,这是因为,这两个字段和其他不一样,他们是区分大小写的。另外,我们给该表建立了两个索引,分别是mobile字段以及username字段。给mobile设置的是唯一索引,表示手机号不可以重复。给username建立一般索引,是为了加速通过username来查找的速度。

查看表及表结构

表建立完了后,我们想看看是不是真的建立成功了。可以通过show tables来查看当前库下所有表。

mysql> show tables;
+---------------+
| Tables_in_job |
+---------------+
| users      |
+---------------+
1 row in set

该表确实生成成功了,但如果想看看表里有哪些字段及属性呢,那么可以通过desc 表名来查看。

清空及删除表

注意:删除表是一个危险操作,谨慎操作!

删除表语法:DROP TABLE [IF EXISTS] 表名

这里就不做演示了。

清空表语法:TRUNCATE 表名

这里和大家重点讲下,通过truncate users和通过delete from users的区别。

  • truncate 相当于先将表给删除,然后再重新建立该表。表里所有数据都重置了。

  • 而delete只是删除表的数据,表的一些属性信息,如自增id不会被重置。

修改表

最后,我们来看看修改表是如何来做到的。把它放最后,是因为他的语法最繁杂,是表操作中难度最大的一部分。它的语法如下:

ALTER TABLE 数据表名 alter_spec[,alter_spec] ... table options

我把常用操作做了整理,常见的语法及功能如下:

  • 添加新字段: ALTER TABLE 表名 ADD 字段名 64a835d1e55ccb51d2672c017ff16693 [FISRT|ALTER 列名]

  • 修改字段: ALTER TABLE 表名 change|modify 列表 64a835d1e55ccb51d2672c017ff16693 注意:modify与change的区别,modify只能修改列类型,change除了修改列类型外还能改列名称。

  • 删除字段: ... DROP 列名

  • 添加索引名称: ... ADD INDEX [INDEX_NAME] (index_col1,index_col2,...)

  • 删除索引: ...DROP INDEX INDEX_NAME

  • 删除主键: ... DROP PRIMARY KEY

  • 添加主键: ... ADD PRIMARY KEY (INDEX_COL1,INDEX_COL2,...)

  • 添加唯一索引: ... ADD UNIQUE [index_name] (index_col1,index_col2,...)

  • 修改表名: RENAME newName

我们来实践看看

首先,添加新字段email,将它放在userpass后面。

ALTER TABLE users ADD email VARCHAR(255) NOT NULL DEFAULT '' AFTER userpass;

修改userpass,将长度改为64位

ALTER TABLE users MODIFY userpass CHAR(64) NOT NULL DEFAULT '' COMMENT '用户登录密码';

修改userpass改为auth

ALTER TABLE users CHANGE userpass `auth` char(32) NOT NULL DEFAULT '';

给email添加普通索引

ALTER TABLE users ADD INDEX eamil(email);

删除email索引

ALTER TABLE users DROP INDEX eamil;

删除唯一索引,和删除普通索引一样

ALTER TABLE users DROP INDEX mobile;

添加唯一索引

ALTER TABLE users ADD UNIQUE mobile(mobile);
或
ALTER TABLE users ADD UNIQUE (mobile);

删除主键,删除前需要先将aoto_increment删除才能删除;

ALTER TABLE users MODIFY user_id INT(10) NOT NULL;
ALTER TABLE users DROP PRIMARY KEY;

添加主键

ALTER TABLE users ADD PRIMARY KEY (user_id);

上面只是讲述了表操作的一些语法,关于列类型以及索引等,大家有兴趣的话可以翻阅相关资料。

以上是MYSQL表操作的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn