数据库:创建与维护MySQL数据库

了解MySQL数据库

数据库管理的核心任务包括创建、操作和支持数据库。在MySQL中,每个数据库都对应存放在一个与数据库同名的文件夹中。MySQL数据库文件有.frm.MYD.MYI3种,其中“.frm”是描述表结构的文件,“.MYD”是表的数据文件,“.MYI”是表数据文件中的索引文件。

# 查看当前所有存在的数据库
show databases;

MySQL安装完成之后,将会在其data目录下自动创建以下4个数据库:

  • information_schema:保存关于MySQL服务器维护的所有其他数据库的信息,如数据库名、数据库的表、表栏的数据类型与访问权限等。

  • mysql:描述用户访问权限

  • performance_schema:主要用于收集数据库服务器性能参数

  • sys:通过视图的形式把information_schema和performance_dance结合起来,查询出更加容易理解的数据存储过程,可以执行一些性能方面的配置,也可以得到一些性能诊断报告内容。

不要随意删除系统自带的数据库,否则MySQL不能正常运行。

# 创建数据库
CREATE DATABASE database_name;

# 打开数据库
USE database_name;

# 删除数据库
DROP DATABASE database_name;

创建表

# 创建表
CREATE TABLE <表名>
(
    <字段1><数据类型1>[<列级完整性约束条件1>]
    [, <字段2><数据类型2>[<列级完整性约束条件2>] [,...]
    [, <表级完整性约束条件1>]
    [, <表级完整性约束条件2>] [,...]
);
完整性约束

在定义表结构的同时,还可以定义与该表相关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,当用户操作表中的数据时,由DBMS自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及该表的多个属性列,则必须定义在表级上,其他情况既可以定义在列级上,也可以定义在表级上。

列级完整性约束条件:

  • PRIMARY KEY:指定该字段为主键

  • NULL/NOT NULL:指定的字段允许为空/不允许为空,如果没有约束条件,则默认为NULL。

  • UNIQUE:指定字段取值唯一,即每条记录指定字段的值不能重复。如果指定了NOT NULL和UNIQUE,就相当于指定了PRIMARY KEY。

  • DEFAULT <默认值>:指定设置字段的默认值。

  • AUTO-INCREMENT:指定设置字段的值自动增加。

  • CHECK(条件表达式):用于检验输入值,拒绝接收不满足条件的值。

表级完整性约束条件:

  • PRIMARY KEY:用于定义表级主键约束。

  • FOREIGN KEY:用于设置参照完整性规则,即指定某字段为外键。

  • UNIQUE既可用于列级完整性约束,也可以用于表级完整性约束。

# 表级完整性约束

CONSTRAINT <约束名> PRIMARY KEY [CLUSTERED] (字段名1, 字段名2, ..., 字段名n)

CONSTRAINT <约束名> FOREIGN KEY <外键> REFERENCES <被参照表(主键)>

CONSTRAINT <约束名> UNIQUE (<字段名>)

表是数据库的组成对象,在创建表之前,先要通过命令USE打开操作的数据库。

USE database_name;

维护表

# 查看表的字段信息,包括字段名、字段数据类型、是否为主键、是否有默认值等。
DESCRIBE <表名>;

# 查看详细表结构,包括表名、创建该表的CREATE TABLE语句、存储引擎、字符集等信息。
# 加上参数“\G”后显示结构会更加直观
SHOW CREATE TABLE <表名>[\G];

# 显示当前数据库中表列表
SHOW TABLES;

修改表

# 修改指定表的结构
ALTER TABLE <表名>
{
    [ADD <新字段名> <数据类型> [<列级完整性约束条件>] [FIRST |AFTER 已存在字段名]]
    | [MODIFT <字段名1> <新数据类型> [<列级完整性约束条件>] [FIRST | AFTER 字段名2]]
    | [CHANGE <旧字段名> <新字段名> <新数据类型>]
    | [DROP <字段名> | <完整性约束名>]
    | [RENAME [TO]<新表名>]
    | [ENGINE=<更改后的存储引擎名>]
}

复制表

# 复制表结构及数据
CREATE TABLE 新表名 SELECT * FROM 旧表名;

# 只复制表结构
CREATE TABLE 新表名 SELECT * FROM 旧表名 WHERE 1=0;

删除表

# 删除表
DROP TABLE [IF EXISTS] <表名1>[, [表名2], ...];

通过DROP TABLE语句删除表,不仅会将表中的数据删除,还将删除表定义本身。如果只想删除表中的数据而保留表的定义,可以使用DELETE语句。

(最近更新:2019年09月03日)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值