MySQL基础:MySQL中的SQL语句

目录

一、数据定义语言(DDL)

1. 创建数据库和表

2. 修改表结构

3. 删除表和数据库

二、数据操作语言(DML)

1. 插入数据

2. 更新数据

3. 删除数据

三、数据查询语言(DQL)

1. 基本查询

2. 条件查询

3. 排序和限制

4. 聚合函数

5. 分组查询

6. 连接查询

四、数据控制语言(DCL)

1. 创建用户

2. 分配权限

3. 撤销权限

4. 删除用户

五、事务控制语言(TCL)

1. 基本事务操作

2. 设置事务隔离级别

六、索引与优化

1. 创建索引

2. 查看索引

3. 删除索引


一、数据定义语言(DDL)

DDL用于定义或修改数据库结构,包括创建、修改和删除数据库对象(如表、索引、视图等)。

1. 创建数据库和表


	-- 创建数据库

	CREATE DATABASE my_database;

	-- 使用数据库

	USE my_database;

	-- 创建表

	CREATE TABLE users (

	id INT AUTO_INCREMENT PRIMARY KEY,

	username VARCHAR(50) NOT NULL,

	email VARCHAR(100),

	created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

	);

2. 修改表结构

-- 添加列
ALTER TABLE users ADD COLUMN age INT;


-- 修改列类型
ALTER TABLE users MODIFY COLUMN email VARCHAR(150);


-- 删除列
ALTER TABLE users DROP COLUMN age;

3. 删除表和数据库

-- 删除表
DROP TABLE users;


-- 删除数据库
DROP DATABASE my_database;

二、数据操作语言(DML)

DML用于对数据库中的数据进行操作,包括插入、更新和删除。

1. 插入数据

-- 单行插入
INSERT INTO users (username, email) VALUES ('Alice', 'alice@example.com');


-- 多行插入
INSERT INTO users (username, email) VALUES 
('Bob', 'bob@example.com'),
('Charlie', 'charlie@example.com');

2. 更新数据


	-- 更新单行

	UPDATE users SET email = 'alice_new@example.com' WHERE username = 'Alice';

	


	-- 更新多行

	UPDATE users SET email = 'no_email@example.com' WHERE email IS NULL;

3. 删除数据


	-- 删除指定行

	DELETE FROM users WHERE username = 'Bob';

	


	-- 删除所有行(保留表结构)

	TRUNCATE TABLE users;

三、数据查询语言(DQL)

DQL的核心是SELECT语句,用于从数据库中检索数据。

1. 基本查询


	-- 查询所有列

	SELECT * FROM users;

	


	-- 查询指定列

	SELECT username, email FROM users;

2. 条件查询


	-- 使用WHERE过滤

	SELECT * FROM users WHERE email LIKE '%example.com';

	


	-- 使用逻辑运算符

	SELECT * FROM users WHERE age > 25 AND email IS NOT NULL;

3. 排序和限制


	-- 按列排序

	SELECT * FROM users ORDER BY created_at DESC;

	


	-- 限制返回行数

	SELECT * FROM users LIMIT 10;

4. 聚合函数


	-- 统计行数

	SELECT COUNT(*) FROM users;

	


	-- 计算平均值

	SELECT AVG(age) FROM users;

5. 分组查询


	-- 按列分组并统计

	SELECT email, COUNT(*) AS user_count FROM users GROUP BY email;

	


	-- 使用HAVING过滤分组

	SELECT email, COUNT(*) AS user_count FROM users GROUP BY email HAVING user_count > 1;

6. 连接查询

-- 内连接,返回符合条件的记录
SELECT u.username, o.order_id 
FROM users u 
JOIN orders o ON u.id = o.user_id;


-- 左连接,返回左表所有记录和右表符合条件的记录
SELECT u.username, o.order_id 
FROM users u 
LEFT JOIN orders o ON u.id = o.user_id;

四、数据控制语言(DCL)

DCL用于控制数据库的访问权限,包括用户管理和权限分配。

1. 创建用户


	CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';

2. 分配权限


	GRANT ALL PRIVILEGES ON my_database.* TO 'new_user'@'localhost';

	


	-- 授予特定权限

	GRANT SELECT, INSERT ON my_database.users TO 'new_user'@'localhost';

3. 撤销权限


	REVOKE ALL PRIVILEGES ON my_database.* FROM 'new_user'@'localhost';

4. 删除用户


	DROP USER 'new_user'@'localhost';

五、事务控制语言(TCL)

TCL用于管理事务,确保数据的一致性和完整性。

1. 基本事务操作


--    开启事务
	START TRANSACTION;

	


	INSERT INTO accounts (account_id, balance) VALUES (1, 1000);

	UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;

	


	COMMIT; -- 提交事务

	-- ROLLBACK; -- 回滚事务

2. 设置事务隔离级别


	SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

六、索引与优化

索引是提高查询性能的关键,MySQL支持多种索引类型。

1. 创建索引


	-- 创建普通索引

	CREATE INDEX idx_username ON users (username);

	


	-- 创建唯一索引

	CREATE UNIQUE INDEX idx_email ON users (email);

2. 查看索引


	SHOW INDEX FROM users;

3. 删除索引


	DROP INDEX idx_username ON users;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值