【MySQL】第七章 数据库, 表, 数据的增删改查

八,数据库的增删改查

1,管理数据库
sql 复制代码
#查看当前连接中的数据库都有哪些
SHOW DATABASES;
#切换数据库
USE atguigudb;
#查看当前数据库中保存的数据表
SHOW TABLES;
#查看当前使用的数据库
SELECT DATABASE() FROM DUAL;
#查看指定数据库下保存的数据表
SHOW TABLES FROM mysql;
2,创建数据库操作
sql 复制代码
CREATE DATABASE 数据库名;  # 没有声明字符集,则使用默认的字符集类型
CREATE DATABASE 数据库名字 CHARACTER SET 'utf8'; # 声明字符集类型
CREATE DATABASE IF NOT EXISTS 数据库名字 CHARACTER SET 'utf8'; 
# 相对安全的创建数据库的写法 gbk
3,修改数据库
sql 复制代码
ALTER DATABASE 数据库名字 CHARACTER SET 'utf8'; # 关键字 ALTER
4,删除数据库
sql 复制代码
#方式1:如果要删除的数据库存在,则删除成功。如果不存在,则报错
DROP DATABASE mytest1;
​
#方式2:推荐。 如果要删除的数据库存在,则删除成功。如果不存在,则默默结束,不会报错
DROP DATABASE IF EXISTS mytest1;

九,表的增删改查

1,创建表
sql 复制代码
# 白手起家方式创建表
CREATE TABLE IF NOT EXISTS 表名(
    id INT,
    students varchar(10),
    hire_date date  # 注意最后一个列名不加逗号
);
​
# 富二代模式
# 基于现有表创建表
CREATE TABLE myemp3
AS
SELECT e.employee_id emp_id,e.last_name lname,d.department_name
FROM employees e JOIN departments d
ON e.department_id = d.department_id;
​
# 创建一个表,然后利用 AS SELECT... 在别的表进行查询操作,然后把这个数据赋予到新的表当中
# 列名和数据都是一样的
​
如何巧用方法进行 WHERE 然后只取列名,不取数据
CREATE TABLE myemp3
AS
SELECT e.employee_id emp_id,e.last_name lname,d.department_name
FROM employees e JOIN departments d
ON e.department_id = d.department_id;
WHERE 1 = 2;   # 这个条件永远不会成立,那么一个数据都不会导入
2,修改表
sql 复制代码
# 添加一个字段
# 1. 随机添加一个字段
ALTER TABLE 表名 
ADD salary DOUBLE(10,2);
​
# 2. 指定添加一个字段
ALTER TABLE 表名
ADD salary INT AFTER 列名
​
# 修改一个字段:数据类型、长度、默认值(略) 
ALTER TABLE 表名
MODIFY Email varchar(20)
​
# 重新命名一个字段
ALTER TABLE myemp1
CHANGE email my_email VARCHAR(50);
3,删除表
sql 复制代码
ALTER TABLE 表名
DROP COLUMN 字段名
4,基于对表的操作
sql 复制代码
#1,重新命名一个表
ALTER TABLE 表名
RENAME TO 新表名
​
#2,删除表
#不光将表结构删除掉,同时表中的数据也删除掉,释放表空间
DROP TABLE IF EXISTS myemp2;
​
#3,清空表
#清空表,表示清空表中的所有数据,但是表结构保留。
TURNCATE TABLE 表名
​
#7. DCL 中 COMMIT 和 ROLLBACK
# COMMIT:提交数据。一旦执行COMMIT,则数据就被永久的保存在了数据库中,意味着数据不可以回滚。
# ROLLBACK:回滚数据。一旦执行ROLLBACK,则可以实现数据的回滚。回滚到最近的一次COMMIT之后。
​
#8. 对比 TRUNCATE TABLE 和 DELETE FROM 
# 相同点:都可以实现对表中所有数据的删除,同时保留表结构。
# 不同点:
#   TRUNCATE TABLE:一旦执行此操作,表数据全部清除。同时,数据是不可以回滚的。
#   DELETE FROM:一旦执行此操作,表数据可以全部清除(不带WHERE)。同时,数据是可以实现回滚的。

十,数据的增删改

sql 复制代码
# 1, 添加数据
# 白手起家
INSERT INTO 表名(列名1, 列名2,...)
VALUES(值1.1, 值2.1, ...), (值1.2, 值2.2, ...), ...
​
# 富二代
INSERT INTO emp1(id,NAME,salary,hire_date)
#查询语句
SELECT employee_id,last_name,salary,hire_date  # 查询的字段一定要与添加到的表的字段一一对应
FROM employees
WHERE department_id IN (70,60);
​
#2, 或修改数据
# UPDATE .... SET .... WHERE ...
# 可以实现批量修改数据的
UPDATE emp1
SET hire_date = CURDATE()
WHERE id = 5;
​
#3, 删除数据 
# DELETE FROM .... WHERE....
DELETE FROM emp1
WHERE id = 1;
相关推荐
Gauss松鼠会几秒前
GaussDB(DWS) 资源监控Topsql
java·网络·数据库·算法·oracle·性能优化·gaussdb
小碗羊肉2 分钟前
【Redis | 第二篇】Jedis&SpringDataRedis
数据库·redis·缓存
郝学胜-神的一滴5 分钟前
系统设计 012:从用户系统出发,吃透缓存、数据库与高并发设计
java·数据库·python·缓存·php·软件构建
米高梅狮子6 分钟前
01.ELK企业日志分析系统
运维·服务器·网络·数据库·elk·oracle
小杍随笔9 分钟前
【redb vs SQLite (rusqlite) 技术选型对比】
数据库·sqlite
暗夜猎手-大魔王9 分钟前
转载--AI Agent 架构设计:工具返回值设计(OpenClaw、Claude Code、Hermes Agent 对比)
数据库
windawdaysss11 分钟前
离线学习SQL和数据库的工具及其部署
数据库·sql·学习
Rubin智造社11 分钟前
Claude Code开发者大会系列8:从脚本到智能体——独立开发者的“AI原生”工作流转型
数据库·人工智能·独立开发者·agentic工作流·ai原生开发·实操指南
一条泥憨鱼11 分钟前
深入理解 MySQL 索引:原理、分类与优化实战
数据库·mysql
楠枬11 分钟前
Redis 缓存
数据库·redis·缓存