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()
相关推荐
echo爱学易语言1 分钟前
Linux ufw命令丨Linux网络防火墙ufw命令详解
服务器·网络·数据库
JhonKI6 分钟前
【MySQL】表的基本查询(下)
数据库·mysql·oracle
微风轻吟挽歌11 分钟前
Mysql唯一约束
数据库·mysql
AR_xsy11 分钟前
MySQL不能被其他地址访问,授权问题解决(8.x,,5.x)
数据库·mysql
黑蛋同志14 分钟前
安装 PostgreSQL
数据库·postgresql
niech_cn20 分钟前
Ai编程从零开始全栈开发一个后台管理系统之接口开发node+express+mysql(十五)
mysql·express·ai编程
圆周率的后六位40 分钟前
图数据库调研
数据库·图数据库
m0_748256561 小时前
MySQL数据库误删恢复_mysql 数据 误删
数据库·mysql·adb
落寞书生1 小时前
docker安装mysql 实现主从同步
运维·mysql·docker·主从同步·docker 安装mysql
O(1)的boot1 小时前
微服务的问题
java·数据库·微服务