当前位置:实例文章 » 其他实例» [文章]Mysql数据库基础和增删改查操作

Mysql数据库基础和增删改查操作

发布人:shili8 发布时间:2024-11-20 12:01 阅读次数:0

**MySQL 数据库基础**

###什么是 MySQL?

MySQL 是一种开源的关系型数据库管理系统,支持多种编程语言。它被广泛用于 Web 应用、企业应用等。

### MySQL 的特点* 支持 ACID (Atomicity, Consistency, Isolation, Durability) 原则* 支持事务处理* 支持存储过程和函数* 支持视图* 支持索引和分区* 支持多种编程语言### MySQL 的安装和配置#### Windows 安装1. 下载 MySQL Community Server 的安装包2. 运行安装程序,选择安装位置和组件3. 配置 MySQL服务4. 启动 MySQL服务#### Linux 安装1. 使用 apt-get 或 yum 安装 MySQL2. 配置 MySQL服务3. 启动 MySQL服务### MySQL 的基本概念* **数据库**:一个数据库是指一个独立的存储空间,包含多个表。
* **表**:一个表是指一个二维数据结构,包含多行和多列。
* **行**:一行代表一个记录。
* **列**:一列代表一个字段。

### MySQL 的增删改查操作#### 增加数据

sql-- 创建一个新表CREATE TABLE users (
 id INT AUTO_INCREMENT,
 name VARCHAR(255),
 email VARCHAR(255),
 PRIMARY KEY (id)
);

-- 插入一条记录INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');

-- 插入多条记录INSERT INTO users (name, email) VALUES ('Jane Doe', 'jane@example.com'),
 ('Bob Smith', 'bob@example.com');


#### 删除数据
sql-- 删除一条记录DELETE FROM users WHERE id =1;

-- 删除多条记录DELETE FROM users WHERE name IN ('John Doe', 'Jane Doe');

-- 删除所有记录TRUNCATE TABLE users;


#### 修改数据
sql-- 更新一条记录UPDATE users SET email = 'john2@example.com' WHERE id =1;

-- 更新多条记录UPDATE users SET email = 'example.com' WHERE name IN ('John Doe', 'Jane Doe');

-- 更新所有记录UPDATE users SET email = 'example.com';


#### 查询数据
sql-- 查询一条记录SELECT * FROM users WHERE id =1;

-- 查询多条记录SELECT * FROM users WHERE name IN ('John Doe', 'Jane Doe');

-- 查询所有记录SELECT * FROM users;


### MySQL 的索引和分区#### 索引
sql-- 创建一个索引CREATE INDEX idx_name ON users (name);

-- 删除一个索引DROP INDEX idx_name ON users;


#### 分区
sql-- 创建一个分区表CREATE TABLE users (
 id INT AUTO_INCREMENT,
 name VARCHAR(255),
 email VARCHAR(255),
 PRIMARY KEY (id)
) ENGINE=InnoDB PARTITION BY RANGE (YEAR(date)) (
 PARTITION p2010 VALUES LESS THAN (2010),
 PARTITION p2011 VALUES LESS THAN (2011),
 PARTITION p2012 VALUES LESS THAN (2012)
);

-- 插入一条记录INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');

-- 查询一个分区SELECT * FROM users WHERE YEAR(date) =2010;


### MySQL 的存储过程和函数#### 存储过程
sql-- 创建一个存储过程DELIMITER //
CREATE PROCEDURE sp_get_users()
BEGIN SELECT * FROM users;
END//
DELIMITER ;

-- 调用一个存储过程CALL sp_get_users();


#### 函数
sql-- 创建一个函数DELIMITER //
CREATE FUNCTION fn_get_user(id INT)
RETURNS VARCHAR(255)
BEGIN DECLARE name VARCHAR(255);
 SELECT name INTO name FROM users WHERE id = id;
 RETURN name;
END//
DELIMITER ;

-- 调用一个函数SELECT fn_get_user(1) AS name;


### MySQL 的视图#### 视图
sql-- 创建一个视图CREATE VIEW v_users ASSELECT * FROM users;

-- 查询一个视图SELECT * FROM v_users;


### MySQL 的事务处理#### 事务
sql-- 开始一个事务START TRANSACTION;

-- 插入一条记录INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');

-- 回滚一个事务ROLLBACK;

-- 提交一个事务COMMIT;


### MySQL 的多种编程语言#### PHP
php// 连接到数据库$conn = new mysqli('localhost', 'username', 'password', 'database');

// 查询一条记录$result = $conn->query("SELECT * FROM users WHERE id =1");

// 输出一条记录while ($row = $result->fetch_assoc()) {
 echo $row['name'] . "
";
}

// 关闭连接$conn->close();


#### Python
# 连接到数据库import mysql.connectorconn = mysql.connector.connect(
 host='localhost',
 user='username',
 password='password',
 database='database'
)

# 查询一条记录cursor = conn.cursor()
cursor.execute("SELECT * FROM users WHERE id =1")

# 输出一条记录row = cursor.fetchone()
print(row['name'])

# 关闭连接conn.close()


### MySQL 的安全性#### 权限控制
sql-- 给一个用户授权GRANT SELECT, INSERT, UPDATE, DELETE ON users TO 'username'@'localhost';

-- 取消一个用户的授权REVOKE SELECT, INSERT, UPDATE, DELETE ON users FROM 'username'@'localhost';


#### 加密
sql-- 创建一个加密表CREATE TABLE encrypted_users (
 id INT AUTO_INCREMENT,
 name VARCHAR(255),
 email VARCHAR(255),
 password VARBINARY(255),
 PRIMARY KEY (id)
);

-- 插入一条记录INSERT INTO encrypted_users (name, email, password) VALUES ('John Doe', 'john@example.com', AES_ENCRYPT('password'));


### MySQL 的性能优化#### 索引
sql-- 创建一个索引CREATE INDEX idx_name ON users (name);

-- 删除一个索引DROP INDEX idx_name ON users;


#### 分区
sql-- 创建一个分区表CREATE TABLE users (
 id INT AUTO_INCREMENT,
 name VARCHAR(255),
 email VARCHAR(255),
 PRIMARY KEY (id)
) ENGINE=InnoDB PARTITION BY RANGE (YEAR(date)) (
 PARTITION p2010 VALUES LESS THAN (2010),
 PARTITION p2011 VALUES LESS THAN (2011),
 PARTITION p2012 VALUES LESS THAN (2012)
);


#### 缓存
sql-- 创建一个缓存表CREATE TABLE cached_users (
 id INT AUTO_INCREMENT,
 name VARCHAR(255),
 email VARCHAR(255),
 PRIMARY KEY (id)
) ENGINE=MEMORY;

-- 插入一条记录INSERT INTO cached_users (name, email) VALUES ('John Doe', 'john@example.com');


### MySQL 的高可用性#### 主从复制
sql-- 创建一个主从复制CREATE USER 'slave_user'@'%' IDENTIFIED BY 'slave_password';
GRANT RELOAD, SUPER ON *.* TO 'slave_user'@'%';

CHANGE MASTER TO MASTER_HOST='master_host', MASTER_PORT=3306, MASTER_USER='slave_user', MASTER_PASSWORD='slave_password';

START SLAVE;


#### 分布式事务
sql-- 创建一个分布式事务CREATE TABLE distributed_users (
 id INT AUTO_INCREMENT,
 name VARCHAR(255),
 email VARCHAR(255),
 PRIMARY KEY (id)
) ENGINE=InnoDB;

INSERT INTO distributed_users (name, email) VALUES ('John Doe', 'john@example.com');

COMMIT;


### MySQL 的扩展性#### 分布式存储
sql-- 创建一个分布式存储CREATE TABLE distributed_users (
 id INT AUTO_INCREMENT,
 name VARCHAR(255),
 email VARCHAR(255),
 PRIMARY KEY (id)
) ENGINE=InnoDB;

INSERT INTO distributed_users (name, email) VALUES ('John Doe', 'john@example.com');

COMMIT;


#### 分布式计算
sql-- 创建一个分布式计算CREATE TABLE distributed_users (
 id INT AUTO_INCREMENT,
 name VARCHAR(255),
 email VARCHAR(255),
 PRIMARY KEY (id)
) ENGINE=InnoDB;

INSERT INTO distributed_users (name, email) VALUES ('John Doe', 'john@example.com');

COMMIT;


### MySQL 的安全性#### 权限控制
sql-- 给一个用户授权GRANT SELECT, INSERT, UPDATE, DELETE ON users TO 'username'@'localhost';

-- 取消一个用户的授权REVOKE SELECT, INSERT, UPDATE, DELETE ON users FROM

相关标签:oracle数据库
其他信息

其他资源

Top