当前位置: 首页 > news >正文

复习MySQL20250327

第一章  基本操作

一、管理数据库

难点:创建数据库

输入cmd的MySQL安装路径C:\Program Files\MySQL\MySQL Server 8.0\bin 

1.查看所有数据库
show databases;
2.创建数据库
create database hsusers default charset utf8 collate utf8_general_ci;
    create database:这是一个 SQL 关键字,用于指示数据库系统创建一个新的数据库。
    hsusers:这是要创建的数据库的名称。在实际使用时,你可以依据自身需求将其替换为合适的名称。
    default charset utf8:指定了该数据库默认的字符集为 utf8。字符集定义了数据库存储和处理文本时所采用的字符编码方式。utf8 能够支持多种语言的字符,是一种广泛使用的字符编码。
    collate utf8_general_ci:指定了该数据库默认的排序规则为 utf8_general_ci。排序规则决定了在进行字符串比较和排序时的规则。utf8_general_ci 中的 ci 表示大小写不敏感(Case - Insensitive),即数据库在比较字符串时不会区分大小写。
3.删除数据库
drop database day1db;
4.进入数据库
use day1db;
5.查看数据库中的表
show tables;
create database hsusers default charset utf8 collate utf8_general_ci;

二、管理数据表

难点:创建数据表

(一)创建表

在 MySQL 里,你可以使用 CREATE TABLE 语句来创建表。下面为你详细介绍其基本语法、示例以及不同参数的作用。

基本语法

sql

CREATE TABLE table_name (
    column1 datatype [optional_constraints],
    column2 datatype [optional_constraints],
    ...
    [table_constraints]
);
语法解释
  • CREATE TABLE:这是用于创建表的关键字。
  • table_name:要创建的表的名称,需保证在数据库中该名称是唯一的。
  • column1, column2, ...:表中的列名,每个列都有对应的 datatype(数据类型)。
  • datatype:指定列可以存储的数据类型,例如 INT(整数)、VARCHAR(可变长度字符串)、DATE(日期)等。
  • optional_constraints:可选择的列约束条件,像 NOT NULL(非空)、UNIQUE(唯一)、PRIMARY KEY(主键)、FOREIGN KEY(外键)等。
  • table_constraints:表级约束条件,用于定义跨列的约束,例如复合主键、唯一键组合等。
示例

以下是创建一个名为 employees 的表的示例,该表包含员工的基本信息:

sql

CREATE TABLE employees (
    id INT NOT NULL AUTO_INCREMENT,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    birth_date DATE,
    hire_date DATE,
    salary DECIMAL(10, 2),
    department_id INT,
    PRIMARY KEY (id),
    FOREIGN KEY (department_id) REFERENCES departments(id)
);
示例解释
  • id:是一个自增的整数列,作为主键,确保每个员工记录有唯一的标识符。
  • first_name 和 last_name:为可变长度字符串列,用于存储员工的名字和姓氏,且不能为空。
  • birth_date 和 hire_date:为日期列,分别存储员工的出生日期和入职日期。
  • salary:是一个十进制数,用于存储员工的工资,精度为 10 位,小数部分为 2 位。
  • department_id:是一个整数列,作为外键,引用 departments 表中的 id 列,用于关联员工所属的部门。
创建临时表

若你需要创建一个临时表(该表在会话结束时会自动删除),可以使用 CREATE TEMPORARY TABLE 语句,语法如下:

sql

CREATE TEMPORARY TABLE temp_table_name (
    column1 datatype [optional_constraints],
    column2 datatype [optional_constraints],
    ...
    [table_constraints]
);

这些示例和语法应该能帮助你在 MySQL 中创建所需的表。在实际使用时,根据具体需求调整列名、数据类型和约束条件。

(二)列约束条件

在 MySQL 中,列约束条件用于限制列中存储的数据,确保数据的完整性和一致性。以下是常见的列约束条件及其含义:

1. NOT NULL
  • 含义:该约束规定列不允许存储 NULL 值。也就是说,在向该列插入数据时,必须提供一个有效的值。
  • 示例

sql

CREATE TABLE users (
    id INT,
    name VARCHAR(50) NOT NULL
);

在这个 users 表中,name 列不允许为 NULL,插入数据时必须提供一个名字。

2. UNIQUE
  • 含义:此约束保证列中的所有值都是唯一的,即同一列中不能有重复的值。
  • 示例

sql

CREATE TABLE employees (
    id INT,
    email VARCHAR(100) UNIQUE
);

在 employees 表中,email 列的每个值都必须是唯一的,不能有两个员工使用相同的电子邮件地址。

3. PRIMARY KEY
  • 含义PRIMARY KEY 约束用于唯一标识表中的每一行记录。它结合了 NOT NULL 和 UNIQUE 的特性,即主键列的值不能为 NULL 且必须唯一。一个表只能有一个主键,但主键可以由多个列组成(复合主键)。
  • 示例

sql

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(200)
);

这里 product_id 列被定义为主键,用于唯一标识每个产品。

4. FOREIGN KEY
  • 含义FOREIGN KEY 约束用于建立表与表之间的关联。它引用另一个表的主键列,确保该列中的值必须存在于被引用表的主键列中。通过外键可以实现数据库的参照完整性。
  • 示例

sql

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    product_id INT,
    FOREIGN KEY (product_id) REFERENCES products(product_id)
);

在 orders 表中,product_id 列是外键,它引用了 products 表的 product_id 主键列。这意味着 orders 表中的 product_id 值必须是 products 表中已经存在的 product_id 值。

5. DEFAULT
  • 含义DEFAULT 约束为列指定一个默认值。当插入数据时,如果没有为该列提供值,则会使用默认值。
  • 示例

sql

CREATE TABLE customers (
    customer_id INT,
    status VARCHAR(20) DEFAULT 'active'
);

在 customers 表中,如果插入数据时没有为 status 列提供值,那么该列将自动使用默认值 'active'

6. CHECK
  • 含义CHECK 约束用于限制列中的值必须满足特定的条件。在 MySQL 8.0.16 及以后的版本中,CHECK 约束是强制执行的。
  • 示例

sql

CREATE TABLE students (
    student_id INT,
    age INT,
    CHECK (age >= 18)
);

在 students 表中,CHECK 约束确保 age 列的值必须大于或等于 18。

7. AUTO_INCREMENT
  • 含义AUTO_INCREMENT 约束用于为整数类型的列自动生成唯一的、递增的值。通常与 PRIMARY KEY 约束一起使用,用于自动生成主键值。
  • 示例

sql

CREATE TABLE users (
    user_id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50)
);

在 users 表中,每次插入新记录时,user_id 列会自动生成一个比上一个记录的 user_id 值大 1 的新值。

注意:MySQL并非只有这个7个列约束条件,其他孤不常用,在此不作深入讲解。

相关文章:

  • OmniPlan Pro for Mac 项目管理流程
  • 人工智能模型的自我学习能力
  • 相对位置2d矩阵和kron运算的思考
  • 各种响应的理解
  • Java学习打卡-Day22-多线程
  • Dify 服务器部署指南
  • SpringBean模块(二)bean初始化(2)和容器初始化顺序的比较--引入ApplicationContextInitializer
  • SQLark SQL编辑器秘籍,编写高效SQL查询
  • SpringBoot3解决跨域请求问题(同源策略、JSONP、CORS策略)(Access-Control-Allow-Origin)(2025详细教程)
  • 电销行业机器人外呼话术设计:关键注意事项与实践指南
  • C语言之数据结构:双向链表
  • 整理一些php7 新特性
  • Node.js 模块加载机制--详解
  • 【设计模式】策略模式+门面模式设计对接银行接口的API
  • # 线性代数:660习题总结660# 宋浩讲解视频
  • [Lc18_拓扑排序] string+queue+map | 火星字典
  • Stable Diffusion vue本地api接口对接,模型切换, ai功能集成开源项目 ollama-chat-ui-vue
  • 银行的压力测试如何进行?
  • GitHub绑定本地计算机以及仓库创建跟推送指南
  • 深入解析VLAN接口类型与数据处理机制
  • 国务院办公厅印发《国务院2025年度立法工作计划》
  • 加拿大总理宣布新内阁名单
  • 夜读|尊重生命的棱角
  • 通辽警方侦破一起积压21年的命案:嫌疑人企图强奸遭反抗后杀人
  • 当我们提起拉动消费时,应该拉动什么消费?
  • “苏河超级管”调研:桥下公园“留白”很好,指引差点