mysql创建数据库和表

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

前言:

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

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

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

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

1.2 关系型数据库的特点

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

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

二、MySQL创建数据库

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

2.1 创建数据库的基本语法
sql 复制代码
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则区分大小写。

示例

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

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

2.3 数据库的管理

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

2.3.1 查看数据库
sql 复制代码
SHOW DATABASES;

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

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

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

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

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

2.3.4 删除数据库
sql 复制代码
DROP DATABASE [IF EXISTS] my_database;

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

三、MySQL创建表

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

3.1 创建表的基本语法
sql 复制代码
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)

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

sql 复制代码
CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50)
);
3.3.2 外键(FOREIGN KEY)

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

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

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

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

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

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

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

sql 复制代码
CREATE TABLE users (
    id INT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

结尾

csharp 复制代码
今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文
相关推荐
远歌已逝2 小时前
维护在线重做日志(二)
数据库·oracle
qq_433099403 小时前
Ubuntu20.04从零安装IsaacSim/IsaacLab
数据库
Dlwyz3 小时前
redis-击穿、穿透、雪崩
数据库·redis·缓存
工业甲酰苯胺5 小时前
Redis性能优化的18招
数据库·redis·性能优化
没书读了6 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
i道i6 小时前
MySQL win安装 和 pymysql使用示例
数据库·mysql
小怪兽ysl6 小时前
【PostgreSQL使用pg_filedump工具解析数据文件以恢复数据】
数据库·postgresql
wqq_9922502777 小时前
springboot基于微信小程序的食堂预约点餐系统
数据库·微信小程序·小程序
爱上口袋的天空7 小时前
09 - Clickhouse的SQL操作
数据库·sql·clickhouse
Oak Zhang8 小时前
sharding-jdbc自定义分片算法,表对应关系存储在mysql中,缓存到redis或者本地
redis·mysql·缓存