本文主要是介绍Mysql常见的SQL语句格式及实用技巧,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《Mysql常见的SQL语句格式及实用技巧》本文系统梳理MySQL常见SQL语句格式,涵盖数据库与表的创建、删除、修改、查询操作,以及记录增删改查和多表关联等高级查询,同时提供索引优化、事务处理、临时...
一、常用语法汇总
数据库(database) | 表(table) | 记录 | |
---|---|---|---|
增 | CREATE DATABASE [IF NOT EXISTS] database_name; | CREATE TABLE [IF NOT EXISTS] table_name ( column1 datatype [constraint], column2 datatype [constraint], ... [PRIMARY KEY (column_list)] ); | -- 插入记录(单条) -- 插入多条记录 |
删 | DROP DATABASE [IF EXISTS] database_name; | DROP TABLE [IF EXISTS] table_name; | DELETE FROM table_name WHERE condition; |
改 | -- 切换数据库 USE database_name; | -- 修改表结构(示例:添加列) ALTER TABLE table_name ADD column_name datatype; | UPDATE table_name SET column1 = valhttp://www.chinasem.cnue1, column2 = value2, ... WHERE condition; |
查 | SHOW DATABASES; | -- 查看所有表 -- 查看表结构 | -- 查询记录(全量) -- 查询特定字段 -- 条件查询 -- 排序查询 -- 分页查询(LIMIT 从 0 开始) |
常用约束与修饰符 -- 主键约束(唯一标识) PRIMARY KEY (column) -- 唯一约束(值不能重复) UNIQUE (column) -- 非空约束 NOT NULL -- 默认值 DEFAULT value -- 自增(整数类型) AUTO_INCREMENT
二、示例
1.数据库操作
-- 创建数据库(存在则跳过) CREATE DATABASE IF NOT EXISTS db_name; -- 删除数据库(谨慎使用) DROP DATABASE IF EXISTS db_name; -- 查看所php有数据库 SHOW DATABASES; -- 切换数据库 USE db_name;
2.表操作
(1)创建表
CREATE TABLE IF NOT EXISTS users ( id INT androidPRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age INT DEFAULT 18, email VARCHAR(100) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
(2)修改表结构
-- 添加列 ALTER TABLE users ADD COLUMN phone VARCHAR(20); -- 修改列类型 ALTER TABLE users MODIFY COLUMN age TINYINT; -- 重命名列 ALTER TABLE users CHANGE COLUMjsN phone mobile VARCHAR(20); -- 删除列 ALTER TABLE users DROP COLUMN mobile;
(3)删除表
DROP TABLE IF EXISTS users;
(4)查看表信息
-- 查看表结构 DESCRIBE users; -- 查看建表语句 SHOW CREATE TABLE users;
3.记录操作
(1)插入数据
-- 单条插入 INSERT INTO users (name, age, email) VALUES ('Alice', 25, 'alice@example.com'); -- 批量插入 INSERT INTO users (name, age) VALUES ('Bob', 30), ('Charlie', 22); -- 插入查询结果 INSERT INTO users_backup (name, age) SELECT name, age FROM users WHERE age > 25;
(2)查询数据
-- 基础查询 SELECT * FROM users; -- 条件查询 SELECT name, age FROM users WHERE age > 25 AND name LIKE 'A%'; -- 去重查询 SELECT DISTINCT age FROM users; -- 排序与分页 SELECT * FROM users ORDER BY age DESC LIMIT 10 OFFSET 20; -- 聚合函数 SELECT COUNT(*), AVG(age), MAX(age) FROM users; -- 分组查询 SELECT age, COUNT(*) FROM users GROUP BY age HAVING COUNT(*) > 1;
(3)更新数据
-- 单条件更新 UPDATE users SET age = age + 1 WHERE name = 'Alice'; -- 多字段更新 UPDATE users SET age = 30, email = 'bob@new.com' WHERE id = 2; -- 批量更新(基于子查询) UPDATE users u JOIN user_scores s ON u.id = s.user_id SET u.age = s.age + 5;
(4)删除数据
-- 按条件删除 DELETE FROM users WHERE age < 18; -- 清空表(保留结构) TRUNCATE TABLE users;
4.高级查询
(1)多表关联
-- 内连接 SELECT u.name, o.order_id FROM users u JOIN orders o ON u.id = o.user_id; -- 左连接 SELECT u.name, o.order_id FROM users u LEFT JOIN orders o ON u.id = o.user_id;
(2)子查询
SELECT * FROM users WHERE age > (SELECT AVG(age) FROM users);
(3)联合查询
SELECT name FROM users UNION SELECT product_name FROM products;
三、实用技巧
1.避免全表扫描:为查询字段添加索引
CREATE INDEX idx_age ON users (age)
2.事务处理:保证数据一致性
START TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; UPDATE accounts SET balance = balance + 100 WHERE id = 2; COMMIT; -- 或 ROLLBACK
3.临时表:提升查询效率与隔离性,会话内有效,会话关闭自动删除。
-- 创建临时表并填充数据 CREATE TEMPORARY TABLE temp_orders AS SELECT order_id, user_id, amount FROM orders WHERE create_time > '2023-01-01'; -- 使用临时表进行后续查询 SELECT user_id, SUM(amount) FROM temp_orders GROUP BY user_id;
到此这篇关于mysql常见的SQL语句格式的文章就介绍到这了,更多相关mysql sql语句格式内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!
这篇关于Mysql常见的SQL语句格式及实用技巧的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!