MySQL数据库基础 === DDL && DML

目录

概述-数据模型

1、关系型数据库(RDBMS)

2、MySQL数据库

通用语法及分类

通用语法

DDL(数据定义语言)

数据库操作

表操作

DML(数据操作语言)

添加数据

更新和删除数据


概述-数据模型

1、关系型数据库(RDBMS)

概念

建立在关系模型基础上,由多张相互连接的二维表组成的数据库

特点

  • 使用表存储结构,格式统一,便于维护
  • 使用SQL语言操作,标准统一,使用方便

2、MySQL数据库

数据模型

客户端通过SQL语句连接DBMS(数据库管理系统)来创建数据库或者在数据库里面创建表

  • 一个数据服务器当中可以创建多个数据库
  • 一个数据库当中可以创建多个表
  • 一个表当中可以存储多个记录

通用语法及分类

通用语法

1、SQL语句可以单行或者多行书写,以分号结尾

2、SQL语句可以使用空格/缩进来增强语句的可读性

3、MySQL数据库的SQL语句不区分大小写,关键字建议使用大写

4、注释:

单行注释:-- 注释内容 或 # 注释内容

多行注释:/*注释内容*/

  • DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)
  • DML: 数据操作语言,用来对数据库表中的数据进行增删改
  • DQL: 数据查询语言,用来查询数据库中表的记录
  • DCL: 数据控制语言,用来创建数据库用户、控制数据库的控制权限

DDL(数据定义语言)

数据定义语言

数据库操作

  1. 查询所有数据库:SHOW DATABASES;

  2. 查询当前数据库: SELECT DATABASE();

  3. 删除数据库: DROP DATABASE [ IF EXISTS ] 数据库名;

  4. 使用数据库: USE 数据库名;

  5. 创建数据库:CREATE DATABASE [ IF NOT EXISTS ] 数据库名 [ DEFAULT CHARSET 字符集] [COLLATE 排序规则 ];

    查询所有数据库

    SHOW DATABASES

    创建数据库

    CREATE DATABASE test

    没有在创建,有则忽略

    CREATE DATABASE IF NOT EXISTS test

    指定字符集

    CREATE DATABASE test2 DEFAULT CHARSET utf8mb4

    删除数据库

    DROP DATABASE test

    没有在删除,有则忽略

    DROP DATABASE IF EXISTS test

    使用数据库

    USE test2

    查询使用的数据库

    SELECT DATABASE()

注意事项

  • UTF8字符集长度为3字节,有些符号占4字节,所以推荐用utf8mb4字符集

表操作

  1. 查询当前数据库所有表: SHOW TABLES;
  2. 查询表结构: DESC 表名;
  3. 查询指定表的建表语句: SHOW CREATE TABLE 表名;
  4. 创建表:
复制代码
CREATE TABLE 表名(
	字段1 字段1类型 [COMMENT 字段1注释],
	字段2 字段2类型 [COMMENT 字段2注释],
	字段3 字段3类型 [COMMENT 字段3注释],
	...
	字段n 字段n类型 [COMMENT 字段n注释]
)[ COMMENT 表注释 ];
复制代码
# 创建表
CREATE TABLE users(
id INT COMMENT "编号",
name VARCHAR(50) COMMENT "姓名",
age INT  COMMENT  "年龄",
gender VARCHAR(1) COMMENT "性别"
) COMMENT "用户表";
# 查询表结构
DESC  users
# 查询指定表的建表语句:
SHOW CREATE TABLE users

  • 添加字段:ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];

  • 修改数据类型:ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);

  • 修改字段名和字段类型:ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];

  • 删除字段:ALTER TABLE 表名 DROP 字段名;

  • 修改表名:ALTER TABLE 表名 RENAME TO 新表名

  • 删除表:DROP TABLE [IF EXISTS] 表名;

  • 删除表,并重新创建该表: TRUNCATE TABLE 表名;

    添加字段

    ALTER TABLE users ADD nickname VARCHAR(20) COMMENT "昵称"

    修改字段

    ALTER TABLE users CHANGE nickname username VARCHAR(30) COMMENT "用户名"

    修改字段类型

    ALTER TABLE users MODIFY username VARCHAR(50)

    删除字段

    ALTER TABLE users DROP username

    修改表名

    ALTER TABLE users RENAME user

    删除表

    DROP TABLE IF EXISTS user

DML(数据操作语言)

添加数据

指定字段:
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);

全部字段:
INSERT INTO 表名 VALUES (值1, 值2, ...);

批量添加数据: 指定字段:
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);

批量添加数据: 全部字段:
INSERT INTO 表名 VALUES (值1, 值2, ...), (值1, 值2, ...), (值1, 值2, ...);

注意事项

  • 字符串和日期类型数据应该包含在引号中
  • 插入的数据大小应该在字段的规定范围内

更新和删除数据

修改数据:
UPDATE 表名 SET 字段名1 = 值1, 字段名2 = 值2, ... [ WHERE 条件 ];

删除数据:
DELETE FROM 表名 [ WHERE 条件 ];

复制代码
# 插入指定字段 (单条)
INSERT INTO users(id,name,age,gender) VALUES (1, "张三","18","男")
# 插入全部字段  (单条)
INSERT INTO users VALUES(2, "小明","20","女")
# 插入指定字段 (多条)
INSERT INTO users(id,name,age,gender) VALUES (3, "王麻子","28","男"),(4, "小五","38","男")
# 插入全部字段  (多条)
INSERT INTO users VALUES(6, "刘刘","20","女"),(7, "小七","20","女")

# 修改数据
UPDATE users SET name = "大王" WHERE  id = 1
UPDATE users SET name = "小王",gender = "男" WHERE  id = 2
UPDATE users set age = 18

# 删除数据
DELETE FROM users WHERE id = 7
DELETE FROM users
相关推荐
提笔了无痕1 小时前
RAG存储策略中.md格式的切片与存储怎么处理
数据库·ai·rag
陳土1 小时前
DuckDB精读——基于Getting started with DuckDB
数据库·oracle
凯瑟琳.奥古斯特2 小时前
数据库原理选择题精选
数据库·python·职场和发展
曹牧2 小时前
C#:主线程能够捕获到子线程中的异常
开发语言·数据库·c#
朝阳5812 小时前
MongoDB 副本集从零搭建到生产可用
数据库·mongodb
雨辰AI3 小时前
SpringBoot3 整合达梦 DM9 超详细入门实战|从零搭建可直接上线
数据库·微服务·架构·政务
我是一颗柠檬3 小时前
【MySQL全面教学】MySQL性能优化实战Day13(2026年)
数据库·后端·sql·mysql·性能优化·database
AI人工智能+电脑小能手3 小时前
【大白话说Java面试题 第84题】【Mysql篇】第14题:为什么用 InnoDB 存储引擎的表建议用整型的自增主键?
java·开发语言·数据库·mysql·面试
张彦峰ZYF4 小时前
检索增强生成(RAG)系统的基础:全面深入矢量数据库
数据库·大模型·rag
Elastic 中国社区官方博客5 小时前
我们如何在 Elasticsearch Serverless 上将向量搜索吞吐量提升一倍
大数据·数据库·人工智能·elasticsearch·搜索引擎·云原生·serverless