MySQL基础SQL语法

以下是 MySQL 基础 SQL 语法的全面整理,涵盖核心操作和实际示例:


一、数据库操作

1. 创建数据库
CREATE DATABASE 数据库名;
-- 示例
CREATE DATABASE shop;
2. 删除数据库
DROP DATABASE 数据库名;
-- 示例
DROP DATABASE shop;
3. 切换数据库
USE 数据库名;
-- 示例
USE shop;
4. 查看所有数据库
SHOW DATABASES;

二、表操作(DDL)

1. 创建表
CREATE TABLE 表名 (
    列名1 数据类型 [约束],
    列名2 数据类型 [约束],
    ...
);

示例

CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,  -- 主键自增
    name VARCHAR(50) NOT NULL,           -- 非空
    age INT CHECK (age >= 0),           -- 年龄非负
    email VARCHAR(100) UNIQUE            -- 唯一约束
);
2. 修改表结构
操作语法示例
新增列ALTER TABLE 表名 ADD 列名 数据类型;ALTER TABLE users ADD phone VARCHAR(20);
删除列ALTER TABLE 表名 DROP COLUMN 列名;ALTER TABLE users DROP COLUMN age;
修改列类型ALTER TABLE 表名 MODIFY 列名 新数据类型;ALTER TABLE users MODIFY name VARCHAR(100);
重命名列ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型;ALTER TABLE users CHANGE email user_email VARCHAR(150);
重命名表RENAME TABLE 旧表名 TO 新表名;RENAME TABLE users TO user_info;
3. 删除表
DROP TABLE 表名;
-- 示例
DROP TABLE users;

三、数据操作(DML)

1. 插入数据
INSERT INTO 表名 (1,2, ...) VALUES (1,2, ...);

示例

-- 插入单条数据
INSERT INTO users (name, age, email) 
VALUES ('Alice', 25, 'alice@example.com');

-- 插入多条数据(批量插入)
INSERT INTO users (name, age, email) 
VALUES 
    ('Bob', 30, 'bob@example.com'),
    ('Charlie', 28, 'charlie@example.com');
2. 更新数据
UPDATE 表名 SET1=新值1,2=新值2 WHERE 条件;

示例

-- 更新单个字段
UPDATE users SET age = 26 WHERE name = 'Alice';

-- 批量更新(年龄加1)
UPDATE users SET age = age + 1 WHERE age < 30;
3. 删除数据
DELETE FROM 表名 WHERE 条件;

示例

-- 删除特定记录
DELETE FROM users WHERE age > 30;

-- 清空表(不可回滚,速度快)
TRUNCATE TABLE users;

四、数据查询(DQL)

1. 基础查询
SELECT1,2 FROM 表名 [WHERE 条件] [ORDER BY 列名] [LIMIT 数量];

示例

-- 查询所有用户
SELECT * FROM users;

-- 查询指定列(姓名和年龄)
SELECT name, age FROM users;

-- 条件查询(年龄大于25)
SELECT * FROM users WHERE age > 25;

-- 模糊查询(邮箱以 "@example.com" 结尾)
SELECT * FROM users WHERE email LIKE '%@example.com';

-- 去重查询
SELECT DISTINCT age FROM users;
2. 排序与分页
-- 按年龄降序排序
SELECT * FROM users ORDER BY age DESC;

-- 分页查询(每页5条,第2页)
SELECT * FROM users LIMIT 5 OFFSET 5;  -- 等价于 LIMIT 5,5
3. 聚合函数
函数说明示例
COUNT()统计行数SELECT COUNT(*) FROM users;
SUM()求和SELECT SUM(age) FROM users;
AVG()平均值SELECT AVG(age) FROM users;
MAX()/MIN()最大值/最小值SELECT MAX(age) FROM users;
4. 分组查询
SELECT 列名, 聚合函数 FROM 表名 GROUP BY 列名 [HAVING 条件];

示例

-- 按年龄分组统计人数
SELECT age, COUNT(*) AS total 
FROM users 
GROUP BY age;

-- 筛选人数大于1的分组
SELECT age, COUNT(*) AS total 
FROM users 
GROUP BY age 
HAVING total > 1;
5. 连接查询
-- 内连接(查询用户及其订单)
SELECT u.name, o.order_id 
FROM users u 
INNER JOIN orders o ON u.id = o.user_id;

-- 左连接(所有用户及其订单,无订单则为NULL)
SELECT u.name, o.order_id 
FROM users u 
LEFT JOIN orders o ON u.id = o.user_id;

-- 自连接(查询同一部门的员工)
SELECT e1.name, e2.name 
FROM employees e1 
JOIN employees e2 ON e1.dept = e2.dept 
WHERE e1.id != e2.id;

五、约束与索引

1. 常用约束
约束说明示例
PRIMARY KEY主键(唯一且非空)id INT PRIMARY KEY
FOREIGN KEY外键FOREIGN KEY (user_id) REFERENCES users(id)
UNIQUE唯一值email VARCHAR(100) UNIQUE
NOT NULL非空name VARCHAR(50) NOT NULL
CHECK自定义条件age INT CHECK (age >= 0)
2. 创建索引
CREATE INDEX 索引名 ON 表名 (列名);
-- 示例
CREATE INDEX idx_email ON users (email);

六、事务控制

-- 开启事务
START TRANSACTION;

-- 执行操作(如插入订单)
INSERT INTO orders (order_id, user_id, amount) 
VALUES (1001, 1, 99.99);

-- 提交事务(确认操作)
COMMIT;

-- 回滚事务(撤销操作)
ROLLBACK;

七、用户与权限(DCL)

1. 创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
-- 示例
CREATE USER 'dev'@'localhost' IDENTIFIED BY 'password123';
2. 授权与撤销权限
-- 授权(允许查询和插入)
GRANT SELECT, INSERT ON shop.* TO 'dev'@'localhost';

-- 撤销权限
REVOKE INSERT ON shop.* FROM 'dev'@'localhost';

八、总结

DDL:定义数据库和表结构(CREATE, ALTER, DROP)。
DML:操作数据(INSERT, UPDATE, DELETE)。
DQL:查询数据(SELECT + 条件/排序/分组/连接)。
DCL:用户权限管理(GRANT, REVOKE)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值