Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
-- 以下SQL代码刻意聚合了大量常用关键字用于演示,实际场景中不会如此混杂使用 -- /* 1. DDL语句 (数据定义) */ -- CREATE DATABASE company; -- CREATE DATABASE 创建数据库 -- USE company; -- USE 切换数据库 CREATE TABLE employees ( -- CREATE TABLE 创建表 id INT PRIMARY KEY AUTO_INCREMENT, -- PRIMARY KEY主键 AUTO_INCREMENT自增 name VARCHAR(100) NOT NULL, dept_id INT CHECK(dept_id > 0), -- CHECK约束 salary DECIMAL(10,2) DEFAULT 0.00, -- DEFAULT默认值 hire_date DATE, CONSTRAINT fk_dept FOREIGN KEY (dept_id) REFERENCES departments(id) -- FOREIGN KEY外键 ) ENGINE=InnoDB; ALTER TABLE employees ADD COLUMN email VARCHAR(255); -- ALTER TABLE...ADD COLUMN 添加列 CREATE INDEX idx_name ON employees(name); -- CREATE INDEX 创建索引 DROP INDEX idx_name ON employees; -- DROP INDEX 删除索引 /* 2. DML语句 (数据操作) */ INSERT INTO employees (name, dept_id, salary, hire_date) -- INSERT INTO 插入数据 VALUES ('张三', 1, 7500.00, CURDATE()); UPDATE employees -- UPDATE 更新数据 SET salary = salary * 1.1 WHERE dept_id = 2; -- SET修改值 WHERE条件过滤 DELETE FROM employees -- DELETE 删除数据 WHERE hire_date < '2020-01-01' AND salary < 5000; -- AND逻辑与 TRUNCATE TABLE departments; -- TRUNCATE 清空表 /* 3. 查询语句 */ SELECT DISTINCT dept_id FROM employees; -- SELECT DISTINCT 去重查询 SELECT e.name, d.dept_name -- SELECT 选择列 FROM employees AS e -- FROM 指定表 + AS别名 INNER JOIN departments d ON e.dept_id = d.id -- INNER JOIN 内连接 WHERE salary BETWEEN 5000 AND 10000 -- BETWEEN范围查询 AND name LIKE '张%' -- LIKE模糊查询 ORDER BY hire_date DESC; -- ORDER BY排序 + DESC降序 SELECT dept_id, AVG(salary) AS avg_sal -- AVG聚合函数 FROM employees WHERE salary > ANY (SELECT salary FROM employees WHERE dept_id = 3) -- ANY子查询 GROUP BY dept_id -- GROUP BY分组 HAVING avg_sal > 8000 -- HAVING分组后过滤 LIMIT 5 OFFSET 2; -- LIMIT限制结果 OFFSET偏移 /* 4. 事务控制 */ START TRANSACTION; -- 开始事务 SAVEPOINT sp1; -- 创建保存点 -- [...] 执行操作 ROLLBACK TO sp1; -- 回滚到保存点 COMMIT; -- 提交事务 /* 5. 高级功能 */ WITH cte AS ( -- WITH公用表表达式(CTE) SELECT dept_id, COUNT(*) AS cnt FROM employees GROUP BY dept_id ) SELECT * FROM cte WHERE cnt > 10; SELECT name, CASE WHEN salary > 10000 THEN '高薪' -- CASE WHEN条件判断 WHEN salary > 5000 THEN '中薪' ELSE '低薪' END AS salary_level, COALESCE(email, '未设置') AS email -- COALESCE处理NULL FROM employees; /* 6. 权限控制 */ GRANT SELECT, INSERT ON employees TO user1; -- GRANT授权 REVOKE DELETE ON employees FROM user1; -- REVOKE撤销权限 /* 7. 其他关键字示例 */ EXPLAIN SELECT * FROM employees; -- EXPLAIN执行计划 SELECT * FROM employees WHERE dept_id IN (1,3,5) -- IN成员查询 AND EXISTS (SELECT 1 FROM departments WHERE id = dept_id); -- EXISTS存在性查询 SELECT * FROM employees FOR UPDATE; -- 行级锁 -- 窗口函数示例 SELECT name, salary, RANK() OVER (PARTITION BY dept_id ORDER BY salary DESC) AS dept_rank -- OVER窗口函数 FROM employees;

Stuck with a problem? Got Error? Ask AI support!

Copy Clear