MySQL入门到精通
一、MySQL简介
MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,目前由Oracle公司维护,它具有高性能、可靠性强的特点,被广泛用于各种规模的应用程序和网站开发中,MySQL支持高并发读写操作,并提供ACID事务支持,确保数据的一致性和完整性,其灵活性体现在支持多种数据类型和复杂的查询,适用于小型应用到大型企业级应用。
二、安装与配置
1. 下载与安装
前往MySQL官网下载适合你操作系统的安装包,以下是安装过程:
(1)Windows系统:
访问MySQL官方网页:[MySQL Download Page](https://dev.mysql.com/downloads/)
选择适合的版本并下载。
运行安装程序,选择“Typical”进行典型安装。
配置MySQL服务器,包括设置root密码、选择默认字符集等。
完成安装。
(2)Linux系统:
打开终端并更新软件包列表:
sudo apt-get update
安装MySQL服务器:
sudo apt-get install mysql-server
启动MySQL服务:
sudo systemctl start mysql
运行安全脚本来加强MySQL的安全性:
sudo mysql_secure_installation
2. 验证安装
打开终端(命令提示符),输入以下命令以检查MySQL是否安装成功:
mysql -u root -p
输入你设置的root密码,如果能够成功登录,说明安装成功。
三、MySQL基本概念
1. 数据库与数据表
(1)数据库:用于存储数据的容器,可以包含多个数据表,创建一个名为my_database
的数据库:
CREATE DATABASE my_database;
(2)数据表:数据库中的基本数据结构,由行和列组成,创建一个名为users
的数据表:
USE my_database; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
2. 数据类型
MySQL支持多种数据类型,包括数值类型、字符串类型、日期与时间类型等,常见数据类型如下:
(1)数值类型:INT, FLOAT, DOUBLE, DECIMAL
(2)字符串类型:CHAR, VARCHAR, TEXT, BLOB
(3)日期与时间类型:DATE, TIME, DATETIME, TIMESTAMP
四、常用SQL语法
1. 创建数据库与数据表
-创建数据库 CREATE DATABASE my_database; -使用数据库 USE my_database; -创建数据表 CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, password VARCHAR(50) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
2. 插入数据
(1)插入单条数据:
INSERT INTO users (username, password) VALUES ('alice', 'password123');
(2)插入多条数据:
INSERT INTO users (username, password) VALUES ('bob', 'password456'), ('charlie', 'password789');
3. 查询数据
(1)查询所有数据:
SELECT * FROM users;
(2)查询特定列:
SELECT username, created_at FROM users;
(3)使用WHERE条件查询:
SELECT * FROM users WHERE username = 'alice';
(4)使用LIKE模糊查询:
SELECT * FROM users WHERE username LIKE 'a%'; -查询以'a'开头的用户名
4. 更新数据
(1)更新单条数据:
UPDATE users SET password = 'newpassword123' WHERE username = 'alice';
(2)更新多条数据:
UPDATE users SET password = 'defaultpassword' WHERE password = 'password456';
5. 删除数据
(1)删除单条数据:
DELETE FROM users WHERE username = 'bob';
(2)删除所有数据:
DELETE FROM users; -注意:这将删除表内所有数据
五、数据表的管理
1. 修改数据表结构
(1)添加新列:
ALTER TABLE users ADD email VARCHAR(100);
(2)修改列的数据类型:
ALTER TABLE users MODIFY password VARCHAR(100);
(3)删除列:
ALTER TABLE users DROP COLUMN email;
2. 查看数据表结构
(1)查看数据表结构:
DESCRIBE users;
(2)或者使用:
SHOW COLUMNS FROM users;
3. 删除数据表
DROP TABLE users;
六、索引
索引可以加速查询操作,MySQL支持多种类型的索引。
1. 创建索引
(1)创建单列索引:
CREATE INDEX idx_username ON users(username);
(2)创建复合索引:
CREATE INDEX idx_username_password ON users(username, password);
2. 查看索引
SHOW INDEX FROM users;
3. 删除索引
DROP INDEX idx_username ON users;
七、视图
视图是一个虚拟表,可以简化复杂查询。
1. 创建视图
CREATE VIEW user_view AS SELECT username, created_at FROM users;
2. 查询视图
SELECT * FROM user_view;
3. 删除视图
DROP VIEW user_view;
八、存储过程
存储过程是一组SQL语句的集合,可以重复执行。
1. 创建存储过程
DELIMITER // CREATE PROCEDURE GetAllUsers() BEGIN SELECT * FROM users; END // DELIMITER ;
2. 调用存储过程
CALL GetAllUsers();
3. 删除存储过程
DROP PROCEDURE GetAllUsers;
九、触发器
触发器是在特定事件发生时自动执行的SQL语句。
1. 创建触发器
DELIMITER // CREATE TRIGGER before_insert_users BEFORE INSERT ON users FOR EACH ROW BEGIN SET NEW.created_at = NOW(); END // DELIMITER ;
2. 删除触发器
DROP TRIGGER before_insert_users;