MySQL数据库,创建和管理表

209 阅读4分钟

 创建数据库:

方式一:创建数据库

CREATE DATABASE 数据库名;(使用的是默认的字符集)

方式二:创建数据库并指定字符集

CREATE DATABASE 数据库名 CHARACTER SET 字符集;

方式三:判断数据库是否已经存在,不存在则创建数据库

CREATE DATABASE IF NOT EXISTS 数据库名;

(也可以指定字符集:CREATE DATABASE IF NOT EXISTS 数据库名 CHARACTER SET 字符集)

如果MySQL中已经存在相关的数据库,则忽略创建语句,不再创建此名称的数据库。

管理数据库

查看当前连接中的数据库:

SHOW  DATABASES;

切换数据库:

USE 数据库名;

查看当前数据库中保存的数据表:

SHOW  TABLES;

查看当前使用的数据库:

SELECT  DATABASE( )  FROM  DUAL;

查看指定的数据库下保存的表:

SHOW  TABLE  FROM  数据库名;

修改数据库:

更改数据库字符集:

ALTER  DATABASE  数据库名  CHARACTER  SET  字符集;

删除数据库:

方式一:删除指定的数据库

DROP  DATABASE  数据库名;

方式二:删除指定的数据库(如果存在即删除,不存在即结束操作)

DROP  DATABASE  IF  EXISTS  数据库名;

数据类型:

​编辑

其中,常见的数据类型介绍如下:

​编辑

创建数据表:

创建数据表(方式一):

CREATE  TABLE  IF  NOT  EXISTS  表名(

字段名  数据类型  [约束条件] [默认值],

字段名  数据类型  [约束条件] [默认值],

……

[表约束条件]

); 

注:

[ ]中的内容表示约束,也可以没有。

如果创建表时没有指明使用的字符集,则默认使用表所在的数据库的字符集。

IF  NOT  EXISTS可以没有,但是建议要有。

查看表结构:

DESC  表名;

查看创建表的语句结构:

SHOW  CREATE  TABLE  表名;

创建数据表(方式二):基于现有的表

CREATE  TABLE  表名

AS

SELECT  字段……

FROM 现有的表的表名

……(查询的操作)

即将查询现有的表的查询结果来创建一个新的表。

注:若AS后面的查询操作中的字段起了别名,则该方法创建的表中的字段名即为相应的字段的别名。

修改表:

修改表使用 ALTER  TABLE  表名  ……

添加字段

ALTER  TABLE  表名

ADD  新字段名  数据类型  [约束条件];

新字段默认添加到表中的最后一个字段的位置后。

除此之外,还可以添加字段到指定位置:

ALTER  TABLE  表名

ADD  新字段名  数据类型  [约束条件]  FIRST;

表示添加新字段到首列

ALTER  TABLE  表名

ADD  新字段名  数据类型  [约束条件]  AFTER  字段名;

表示新字段在指定的字段名的位置后添加

修改一个字段

ALTER  TABLE  表名

MODIFY  字段名  数据类型  DEFAULT  默认值;

若要将字段的位置进行修改,可以在末尾加上FIRST/AFTER 字段名

注:数据类型一般不会做大更改,一般是将VARCHAR一类的数据类型的长度做修改

若不涉及更改默认值,DEFAULT的语句可省略。

重命名一个字段

ALTER  TABLE  表名

CHANGE  字段名 新字段名  数据类型;

注:可以在重命名时对字段的数据类型做修改。

删除一个字段

ALTER  TABLE  表名

DROP  COLUMN  字段名;

重命名表:

方式一:

RENAME  TABLE  表名

TO  新表名;

方式二:

ALTER  TABLE  表名

RENAME  TO   新表名;

删除表:

DROP  TABLE  IF  EXTSTS  表名;

清空表:

清空表中的所有数据,表本身还在。

TRUNCATE  TABLE  表名;

对比TRUNCATE  TABLE 和 DELETE  FROM

相同点:都可以实现对表中的所有数据的删除,同时保留表结构。

不同点:

TRUNCATE  TABLE:执行此操作,表中数据全部清除。同时,数据不能回滚。属于DDL。

DELETE  FROM:表中数据被指定删除,同时数据可以实现回滚。属于DML。

COMMIT 和 ROLLBACK

COMMIT:提交数据。执行COMMIT,数据就被永久的保存在数据库中,意味着数据不可回滚。

ROLLBACK:回滚数据。一旦执行ROLLBACK,则可以实现数据的回滚。

关于DDL和DML的说明:

DDL的操作一旦执行,就不可回滚。执行完后,会自动执行一次COMMIT,不受SET  autocommit  =  false的影响。

DML的操作默认情况下,一旦执行,也是不可回滚的。但是若在执行DML之前,执行了SET  autocommit  =  false的操作,则执行的操作就可以实现回滚。

TRUNCATE  TABLE 比 DELETE  FROM速度快,且使用的系统和事务日志资源少,但TRUNCATE无事务且不触发TRIGGER,有可能造成事故,故不建议在开发代码中使用此语句。