这里写目录标题
- [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()