mysql创建数据库和表

在这里插## 标题入图片描述

大家好,我是程序员小羊!

前言:

一、MySQL数据库和表的基础概念

在深入讲解如何在MySQL中创建数据库和表之前,先了解一些基础概念。

1.1 数据库和表的概念
  • 数据库(Database):数据库是数据存储的容器,存储着相关数据集合。每个数据库可以包含多个表,并为这些表提供结构和组织。

  • 表(Table):表是数据库中的基本存储单位。它由行和列组成,每行表示一条记录,每列表示记录的某个属性。

1.2 关系型数据库的特点

MySQL是一种关系型数据库管理系统(RDBMS),其数据存储在表中,表与表之间可以通过外键关系建立联系。以下是关系型数据库的一些主要特点:

  • 结构化:数据以表格的形式存储,行表示记录,列表示属性。
  • 数据一致性:通过约束条件(如主键、外键)保证数据的完整性和一致性。
  • 数据独立性:逻辑结构与物理存储是分离的,可以通过不同的视图展现数据而不改变底层存储。

二、MySQL创建数据库

创建数据库是使用MySQL的第一步。以下将详细说明创建数据库的多种方式、选项和注意事项。

2.1 创建数据库的基本语法
CREATE DATABASE [IF NOT EXISTS] 数据库名
[DEFAULT CHARACTER SET 字符集]
[DEFAULT COLLATE 排序规则];
  • IF NOT EXISTS:可选项,表示如果数据库不存在则创建,存在则忽略创建。
  • DEFAULT CHARACTER SET:设置数据库的默认字符集,如utf8mb4
  • DEFAULT COLLATE:设置字符集的默认排序规则,如utf8mb4_general_ci
2.2 创建数据库的进阶选项
2.2.1 字符集和排序规则
  • 字符集(Character Set):字符集决定了数据库能存储的字符种类。常用的字符集有utf8(最多支持3个字节)和utf8mb4(最多支持4个字节,支持表情符号等更多字符)。

  • 排序规则(Collation):排序规则决定了字符集的比较和排序方式。utf8mb4_general_ci是一种不区分大小写的排序规则,而utf8mb4_bin则区分大小写。

示例

CREATE DATABASE my_database
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_general_ci;
2.2.2 数据库选项的持久化

MySQL中的数据库选项一旦设置,便会被持久化在数据库元数据中。创建数据库时的字符集和排序规则是数据库级别的配置,影响其所有表和列的默认字符集和排序规则。

2.3 数据库的管理

创建数据库后,您可以使用多种命令进行管理,如查看已有数据库、修改数据库选项、删除数据库等。

2.3.1 查看数据库
SHOW DATABASES;

该命令列出当前MySQL实例中的所有数据库。

2.3.2 查看数据库的字符集和排序规则
SHOW CREATE DATABASE my_database;

该命令显示数据库的创建语句,包括字符集和排序规则。

2.3.3 修改数据库的字符集和排序规则
ALTER DATABASE my_database
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci;

该命令允许您在数据库创建后修改其字符集和排序规则。

2.3.4 删除数据库
DROP DATABASE [IF EXISTS] my_database;

此命令会删除指定数据库及其所有表和数据。IF EXISTS选项防止因数据库不存在而报错。

三、MySQL创建表

在数据库中创建表是更为精细化的数据管理步骤。创建表时,您需要定义表的结构,包括列的名称、数据类型、约束条件等。

3.1 创建表的基本语法
CREATE TABLE 表名 (
    列名 数据类型 [约束条件],
    ...
) [表选项];
  • 列名:列表示表中数据的某一属性,如用户名、邮箱等。
  • 数据类型:定义列的数据存储类型,如INTVARCHARDATE等。
  • 约束条件:定义列的限制条件,如NOT NULLUNIQUEPRIMARY KEY等。
  • 表选项:包括存储引擎、字符集、注释等配置。
3.2 常见的数据类型

MySQL提供了多种数据类型,适用于不同类型的数据存储需求。

3.2.1 数值类型
  • 整数类型

    • TINYINT:1字节,范围-128到127或0到255(无符号)。
    • SMALLINT:2字节,范围-32,768到32,767或0到65,535(无符号)。
    • MEDIUMINT:3字节,范围-8,388,608到8,388,607或0到16,777,215(无符号)。
    • INTINTEGER:4字节,范围-2,147,483,648到2,147,483,647或0到4,294,967,295(无符号)。
    • BIGINT:8字节,范围-9,223,372,036,854,775,808到9,223,372,036,854,775,807或0到18,446,744,073,709,551,615(无符号)。
  • 浮点类型

    • FLOAT:4字节,单精度浮点数。
    • DOUBLE:8字节,双精度浮点数。
    • DECIMAL:定点数,用于高精度的计算,如货币计算。
3.2.2 字符串类型
  • CHAR(n):固定长度的字符串,长度为n
  • VARCHAR(n):可变长度的字符串,最大长度为n
  • TEXT:长文本数据类型,适合存储大量字符数据。
3.2.3 日期和时间类型
  • DATE:仅存储日期,格式为YYYY-MM-DD
  • TIME:仅存储时间,格式为HH:MM:SS
  • DATETIME:存储日期和时间,格式为YYYY-MM-DD HH:MM:SS
  • TIMESTAMP:存储时间戳,通常用于记录数据创建或更新的时间。
3.2.4 JSON类型
  • JSON:存储JSON格式数据,允许存储结构化数据,适合动态或多样化数据场景。
3.3 常见的约束条件
3.3.1 主键(PRIMARY KEY)

主键是表中唯一标识每一行的列或组合列,不能有重复值,且不能为空。

CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50)
);
3.3.2 外键(FOREIGN KEY)

外键用于建立表之间的关系,确保引用的列在父表中存在。

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    user_id INT,
    FOREIGN KEY (user_id) REFERENCES users(id)
);
3.3.3 唯一约束(UNIQUE)

唯一约束确保列中的值是唯一的。

CREATE TABLE users (
    id INT PRIMARY KEY,
    email VARCHAR(100) UNIQUE
);
3.3.4 非空约束(NOT NULL)

非空约束确保列中的值不能为空。

CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50) NOT NULL
);
3.3.5 默认值(DEFAULT)

默认值为列提供默认值,如果插入时未指定该列的值,则使用默认值。

CREATE TABLE users (
    id INT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

结尾

今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文

在这里插入图片描述

在这里插入图片描述

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小羊!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值