自学内容网 自学内容网

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

1. 数据库的指令

1.1 创建数据库

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

示例:
在这里插入图片描述

1.2 删除数据库

DROP DATABASE database_name;

1.3 使用数据库

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

USE mydatabase;

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

示例:
在这里插入图片描述

1.4 展示数据库

SHOW DATABASES;

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

SELECT DATABASE();

示例:
在这里插入图片描述

2. 列表的指令

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

  SHOW TABLES;

2.1 创建表

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

  CREATE TABLE table_name (
      column1 datatype constraints,
      column2 datatype constraints,
      column3 datatype constraints,  
      ...
      );

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

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开始创建

ALTER TABLE table_name AUTO_INCREMENT = 1

2.4 删除表

DROP TABLE table_name;

2.5 查看表结构

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

DESCRIBE employees;
# or
EXPLAIN employees;

示例:
在这里插入图片描述

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

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

ALTER TABLE table_name MODIFY COLUMN column_name new_data_type;

示例:

ALTER TABLE word_image MODIFY COLUMN reactants varchar(3000);

2.7 修改表格中列的名称:

# 修改名称和数据类型
ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name new_data_type;

2.8 表格中增加列

ALTER TABLE table_name
ADD column_name column_definition;

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

示例:

ALTER TABLE employees
ADD email VARCHAR(255);

3. 数据的指令

3.1 给sql中插入数据

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

例如:

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中更新数据

SELECT column1, column2, ... FROM table_name WHERE condition ORDER BY column;

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

示例:
在这里插入图片描述

3.3 给sql中查询数据

UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

3.4 删除数据

DELETE FROM table_name WHERE condition;

3.5 逐行删除表中的数据

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

DELETE FROM table_name;

DELETE 语句可以配合 WHERE 子句使用来删除特定的行。如果不使用 WHERE 子句,它将删除表中的所有行。
由于DELETE是逐行删除,并且会生成大量的事务日志,因此在处理大型表时可能会很慢。
DELETE 不会重置表的自增列(如 AUTO_INCREMENT)。

3.6 快速删除表中的所有行

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

TRUNCATE TABLE table_name;

TRUNCATE TABLE 通常比 DELETE 更快,因为它不会生成逐行的事务日志。
TRUNCATE TABLE 会重置表的自增列(如 AUTO_INCREMENT)。
在某些数据库系统中,TRUNCATE TABLE 可能无法触发与 DELETE 相关的触发器。
TRUNCATE TABLE 通常也不能用于有外键依赖的表,除非你先删除了这些依赖或禁用了外键约束。

4. 用户管理

4.1 创建用户

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

4.2 授权

GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';

4.3 刷新权限

FLUSH PRIVILEGES;

4.4 删除用户

DROP USER 'username'@'host';

5. 索引和视图

5.1 创建索引

CREATE INDEX index_name ON table_name (column_name);

5.2 创建视图

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

6. python中调用mysql

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()

原文地址:https://blog.csdn.net/weixin_43610114/article/details/144234743

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!