Mysql数据库指令(持续积累)

这里写目录标题

  • [1. 数据库的指令](#1. 数据库的指令)
    • [1.1 创建数据库](#1.1 创建数据库)
    • [1.2 删除数据库](#1.2 删除数据库)
    • [1.3 使用数据库](#1.3 使用数据库)
    • [1.4 展示数据库](#1.4 展示数据库)
    • [1.5 查看当前使用的是哪个数据库](#1.5 查看当前使用的是哪个数据库)
  • [2. 列表的指令](#2. 列表的指令)
    • [2.1 显示当前数据库中所有表](#2.1 显示当前数据库中所有表)
    • [2.1 创建表](#2.1 创建表)
    • [2.3 让AUTO_INCREMENT属性从1开始创建](#2.3 让AUTO_INCREMENT属性从1开始创建)
    • [2.4 删除表](#2.4 删除表)
    • [2.5 查看表结构](#2.5 查看表结构)
    • [2.6 修改表格中列的数据类型](#2.6 修改表格中列的数据类型)
    • [2.7 修改表格中列的名称:](#2.7 修改表格中列的名称:)
    • [2.8 表格中增加列](#2.8 表格中增加列)
  • [3. 数据的指令](#3. 数据的指令)
    • [3.1 给sql中插入数据](#3.1 给sql中插入数据)
    • [3.2 给sql中更新数据](#3.2 给sql中更新数据)
    • [3.3 给sql中查询数据](#3.3 给sql中查询数据)
    • [3.4 删除数据](#3.4 删除数据)
    • [3.5 逐行删除表中的数据](#3.5 逐行删除表中的数据)
    • [3.6 快速删除表中的所有行](#3.6 快速删除表中的所有行)
  • [4. 用户管理](#4. 用户管理)
    • [4.1 创建用户](#4.1 创建用户)
    • [4.2 授权](#4.2 授权)
    • [4.3 刷新权限](#4.3 刷新权限)
    • [4.4 删除用户](#4.4 删除用户)
  • [5. 索引和视图](#5. 索引和视图)
    • [5.1 创建索引](#5.1 创建索引)
    • [5.2 创建视图](#5.2 创建视图)
  • [6. python中调用mysql](#6. python中调用mysql)

1. 数据库的指令

1.1 创建数据库

sql 复制代码
CREATE DATABASE mydatabase;
  • 验证数据库是否创建成功:
    你可以使用 SHOW DATABASES; 命令来列出所有数据库,并验证你的新数据库是否已成功创建:
sql 复制代码
SHOW DATABASES;

示例:

1.2 删除数据库

sql 复制代码
DROP DATABASE database_name;

1.3 使用数据库

在创建数据库之后,可以使用 USE 语句来选择数据库:

sql 复制代码
USE mydatabase;

请注意,创建数据库时需要有足够的权限。通常,只有具有 CREATE 权限的用户才能创建新的数据库。
示例:

1.4 展示数据库

sql 复制代码
SHOW DATABASES;

1.5 查看当前使用的是哪个数据库

sql 复制代码
SELECT DATABASE();

示例:

2. 列表的指令

2.1 显示当前数据库中所有表

sql 复制代码
  SHOW TABLES;

2.1 创建表

使用 CREATE TABLE 语句来创建表。需要指定表的名称和表中的列。每列都需要一个数据类型,并且可以为列指定其他属性,如是否允许 NULL 值、默认值、是否为主键或外键等。

sql 复制代码
  CREATE TABLE table_name (
      column1 datatype constraints,
      column2 datatype constraints,
      column3 datatype constraints,  
      ...
      );

以下是一个简单的示例,它创建了一个名为 employees 的表,该表包含四列:id、name、position 和 salary。

sql 复制代码
CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    position VARCHAR(50),
    salary DECIMAL(10, 2)
);

在这个例子中:

id 列是一个整数类型,它会自动递增,并且被设置为主键。

name 列是一个字符类型,最多可以存储 100 个字符,并且不允许为空(NOT NULL)。

position 列是一个字符类型,最多可以存储 50 个字符。

salary 列是一个十进制类型,可以存储最多 10 位数字,其中小数点后有 2 位。

2.3 让AUTO_INCREMENT属性从1开始创建

sql 复制代码
ALTER TABLE table_name AUTO_INCREMENT = 1

2.4 删除表

sql 复制代码
DROP TABLE table_name;

2.5 查看表结构

如果想要查看新创建的表的结构(即列的名称、数据类型和其他属性),可以使用 DESCRIBE 或 EXPLAIN 语句。

sql 复制代码
DESCRIBE employees;
# or
EXPLAIN employees;

示例:

2.6 修改表格中列的数据类型

使用 ALTER TABLE 语句来修改列的数据类型。

sql 复制代码
ALTER TABLE table_name MODIFY COLUMN column_name new_data_type;

示例:

sql 复制代码
ALTER TABLE word_image MODIFY COLUMN reactants varchar(3000);

2.7 修改表格中列的名称:

sql 复制代码
# 修改名称和数据类型
ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name new_data_type;

2.8 表格中增加列

sql 复制代码
ALTER TABLE table_name
ADD column_name column_definition;

table_name 表的名称。

column_name 添加的新列的名称。

column_definition 定义了新列的数据类型和其他可能的属性(如是否允许 NULL、默认值等)。

示例:

sql 复制代码
ALTER TABLE employees
ADD email VARCHAR(255);

3. 数据的指令

3.1 给sql中插入数据

sql 复制代码
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

例如:

sql 复制代码
INSERT INTO employees (name, position, salary)
VALUES 
('Alice Johnson', 'UX Designer', 68000.00),
('Bob Brown', 'Data Analyst', 72000.00),
('Charlie Black', 'Quality Assurance', 65000.00);

3.2 给sql中更新数据

sql 复制代码
SELECT column1, column2, ... FROM table_name WHERE condition ORDER BY column;

column1, column2是table_name中的列,condition ORDER BY column是查看列中的限制条件。
示例:

3.3 给sql中查询数据

sql 复制代码
UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

3.4 删除数据

sql 复制代码
DELETE FROM table_name WHERE condition;

3.5 逐行删除表中的数据

DELETE 语句会逐行删除表中的数据,并且每一行的删除都会记录在事务日志中(如果数据库支持事务并且事务日志是启用的)。这可能会导致性能问题,特别是在处理大型表时。

sql 复制代码
DELETE FROM table_name;

DELETE 语句可以配合 WHERE 子句使用来删除特定的行。如果不使用 WHERE 子句,它将删除表中的所有行。

由于DELETE是逐行删除,并且会生成大量的事务日志,因此在处理大型表时可能会很慢。

DELETE 不会重置表的自增列(如 AUTO_INCREMENT)。

3.6 快速删除表中的所有行

TRUNCATE TABLE 语句会快速删除表中的所有行,并且不会逐行记录删除操作在事务日志中。因此,它通常比 DELETE 更快,特别是在处理大型表时。但是,TRUNCATE TABLE 不能与 WHERE 子句一起使用,它会删除表中的所有行。

sql 复制代码
TRUNCATE TABLE table_name;

TRUNCATE TABLE 通常比 DELETE 更快,因为它不会生成逐行的事务日志。

TRUNCATE TABLE 会重置表的自增列(如 AUTO_INCREMENT)。

在某些数据库系统中,TRUNCATE TABLE 可能无法触发与 DELETE 相关的触发器。

TRUNCATE TABLE 通常也不能用于有外键依赖的表,除非你先删除了这些依赖或禁用了外键约束。

4. 用户管理

4.1 创建用户

sql 复制代码
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • username:要创建的新用户的用户名。
  • host:定义用户可以从哪个主机连接到 MySQL。可以是具体的主机名或 IP 地址,也可以使用 % 通配符表示任何主机。
  • password:新用户的密码。

4.2 授权

sql 复制代码
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';

4.3 刷新权限

sql 复制代码
FLUSH PRIVILEGES;

4.4 删除用户

sql 复制代码
DROP USER 'username'@'host';

5. 索引和视图

5.1 创建索引

sql 复制代码
CREATE INDEX index_name ON table_name (column_name);

5.2 创建视图

sql 复制代码
CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

6. python中调用mysql

python 复制代码
import pymysql

# 连接数据库
db_conn = pymysql.connect(host=opt.db_host,
                          port=opt.db_port,
                          user=opt.db_user,
                          password=opt.db_password,
                          database=opt.db_database_name)
# 创建一个游标对象
db_cursor = db_conn.cursor()   

# 执行数据
db_cursor.execute(
INSERT INTO employees (name, position, salary)
VALUES 
('Alice Johnson', 'UX Designer', 68000.00),
('Bob Brown', 'Data Analyst', 72000.00),
('Charlie Black', 'Quality Assurance', 65000.00)
)

# 提交事务
conn.commit()

# 查询数据(可选)
cursor.execute('SELECT * FROM employees')
rows = cursor.fetchall()
for row in rows:
    print(row)
 
# 关闭游标和连接
cursor.close()
conn.close()
相关推荐
画扇落汗8 分钟前
Python 几种将数据插入到数据库的方法(单行插入、批量插入,SQL Server、MySQL,insert into)
数据库·python·sql·mysql
银河系的一束光11 分钟前
mysql的下载和安装2025.4.8
数据库·mysql
Full Stack Developme18 分钟前
SQL 查询中使用 IN 导致性能问题的解决方法
数据库·sql
神经星星1 小时前
【vLLM 学习】API 客户端
数据库·人工智能·机器学习
小光学长2 小时前
基于flask+vue框架的助贫公益募捐管理系统1i6pi(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库
XiaoLeisj2 小时前
【图书管理系统】深入解析基于 MyBatis 数据持久化操作:全栈开发图书管理系统:查询图书属性接口(注解实现)、修改图书属性接口(XML 实现)
xml·java·数据库·spring boot·sql·java-ee·mybatis
Alt.92 小时前
SpringMVC基础一(SpringMVC运行原理)
数据库·spring·mvc
薛晓刚3 小时前
OceanBase单机版保姆级安装
数据库
亚林瓜子4 小时前
Clickhouse试用单机版部署
数据库·clickhouse·aws·ec2
Gauss松鼠会4 小时前
GaussDB回调机制深度实践:从事件驱动到系统集成
开发语言·javascript·数据库·sql·gaussdb