插件窝 干货文章 PHP中的查询语句有哪些

PHP中的查询语句有哪些

用于 SQL users SELECT 104    来源:    2025-03-18

在PHP中,查询语句通常用于与数据库进行交互,最常见的数据库操作是使用SQL(Structured Query Language)来执行查询、插入、更新和删除操作。以下是一些常见的SQL查询语句及其在PHP中的使用示例:

1. SELECT 查询

用于从数据库中检索数据。

$sql = "SELECT id, name, email FROM users WHERE id = 1";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}

2. INSERT 查询

用于向数据库中插入新记录。

$sql = "INSERT INTO users (name, email, password) VALUES ('John Doe', 'john@example.com', 'password123')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

3. UPDATE 查询

用于更新数据库中的现有记录。

$sql = "UPDATE users SET email='john.doe@example.com' WHERE id=1";

if ($conn->query($sql) === TRUE) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . $conn->error;
}

4. DELETE 查询

用于从数据库中删除记录。

$sql = "DELETE FROM users WHERE id=1";

if ($conn->query($sql) === TRUE) {
    echo "Record deleted successfully";
} else {
    echo "Error deleting record: " . $conn->error;
}

5. WHERE 子句

用于过滤记录。

$sql = "SELECT * FROM users WHERE age > 30";

6. ORDER BY 子句

用于对结果集进行排序。

$sql = "SELECT * FROM users ORDER BY name ASC";

7. LIMIT 子句

用于限制返回的记录数。

$sql = "SELECT * FROM users LIMIT 10";

8. JOIN 查询

用于从多个表中检索数据。

$sql = "SELECT users.name, orders.order_id 
        FROM users 
        INNER JOIN orders ON users.id = orders.user_id";

9. GROUP BY 子句

用于将结果集按一列或多列分组。

$sql = "SELECT COUNT(user_id), country 
        FROM users 
        GROUP BY country";

10. HAVING 子句

用于过滤分组后的结果集。

$sql = "SELECT COUNT(user_id), country 
        FROM users 
        GROUP BY country 
        HAVING COUNT(user_id) > 10";

11. LIKE 子句

用于在WHERE子句中搜索指定模式。

$sql = "SELECT * FROM users WHERE name LIKE '%Doe%'";

12. BETWEEN 子句

用于在某个范围内选择值。

$sql = "SELECT * FROM users WHERE age BETWEEN 20 AND 30";

13. IN 子句

用于指定多个可能的值。

$sql = "SELECT * FROM users WHERE id IN (1, 2, 3)";

14. NULL 值检查

用于检查字段是否为NULL。

$sql = "SELECT * FROM users WHERE email IS NULL";

15. UNION 操作符

用于合并两个或多个SELECT语句的结果集。

$sql = "SELECT name FROM users 
        UNION 
        SELECT name FROM customers";

16. 子查询

嵌套在其他查询中的查询。

$sql = "SELECT name FROM users WHERE id IN (SELECT user_id FROM orders WHERE amount > 100)";

17. 事务处理

用于确保一组SQL语句要么全部执行,要么全部不执行。

$conn->begin_transaction();

try {
    $conn->query("INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')");
    $conn->query("INSERT INTO orders (user_id, product) VALUES (LAST_INSERT_ID(), 'Product A')");
    $conn->commit();
    echo "Transaction completed successfully";
} catch (Exception $e) {
    $conn->rollback();
    echo "Transaction failed: " . $e->getMessage();
}

18. 预处理语句

用于防止SQL注入攻击。

$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
$stmt->bind_param("ss", $name, $email);

$name = "John Doe";
$email = "john@example.com";
$stmt->execute();

echo "New record created successfully";
$stmt->close();

19. 存储过程调用

用于调用数据库中的存储过程。

$sql = "CALL GetUserDetails(1)";
$result = $conn->query($sql);

20. 视图查询

用于查询数据库中的视图。

$sql = "SELECT * FROM user_view";

21. 索引优化

用于优化查询性能。

$sql = "CREATE INDEX idx_name ON users (name)";

22. 触发器

用于在特定事件发生时自动执行SQL语句。

$sql = "CREATE TRIGGER before_user_insert 
        BEFORE INSERT ON users 
        FOR EACH ROW 
        SET NEW.created_at = NOW()";

23. 备份和恢复

用于备份和恢复数据库。

$sql = "BACKUP DATABASE mydb TO DISK = 'C:\backup\mydb.bak'";

24. 权限管理

用于管理数据库用户的权限。

$sql = "GRANT SELECT, INSERT ON mydb.* TO 'username'@'localhost'";

25. 数据库创建和删除

用于创建和删除数据库。

$sql = "CREATE DATABASE mydb";
$sql = "DROP DATABASE mydb";

26. 表创建和删除

用于创建和删除表。

$sql = "CREATE TABLE users (
        id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(30) NOT NULL,
        email VARCHAR(50),
        reg_date TIMESTAMP
        )";
$sql = "DROP TABLE users";

27. 列操作

用于添加、修改和删除表中的列。

$sql = "ALTER TABLE users ADD COLUMN age INT(3)";
$sql = "ALTER TABLE users MODIFY COLUMN age INT(4)";
$sql = "ALTER TABLE users DROP COLUMN age";

28. 约束

用于定义表中的约束条件。

$sql = "ALTER TABLE users ADD CONSTRAINT uc_email UNIQUE (email)";

29. 外键

用于定义表之间的关系。

$sql = "ALTER TABLE orders ADD CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(id)";

30. 全文搜索

用于在文本字段中进行全文搜索。

$sql = "SELECT * FROM articles WHERE MATCH (title, body) AGAINST ('database')";

31. 正则表达式

用于在查询中使用正则表达式。

$sql = "SELECT * FROM users WHERE name REGEXP '^J'";

32. 日期和时间函数

用于处理日期和时间数据。

$sql = "SELECT * FROM users WHERE created_at > NOW() - INTERVAL 1 DAY";

33. 聚合函数

用于对数据进行聚合计算。

$sql = "SELECT COUNT(*) AS total_users FROM users";

34. 字符串函数

用于处理字符串数据。

$sql = "SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM users";

35. 数学函数

用于执行数学运算。

$sql = "SELECT ROUND(price, 2) AS rounded_price FROM products";

36. 条件表达式

用于在查询中使用条件逻辑。

$sql = "SELECT name, IF(age > 18, 'Adult', 'Minor') AS status FROM users";

37. 窗口函数

用于执行窗口计算。

$sql = "SELECT name, salary, RANK() OVER (ORDER BY salary DESC) AS rank FROM employees";

38. 递归查询

用于处理层次结构数据。

$sql = "WITH RECURSIVE cte AS (
        SELECT id, name, parent_id FROM categories WHERE id = 1
        UNION ALL
        SELECT c.id, c.name, c.parent_id FROM categories c
        INNER JOIN cte ON c.parent_id = cte.id
        )
        SELECT * FROM cte";

39. 分区表

用于处理大型数据集的分区。

$sql = "CREATE TABLE sales (
        id INT NOT NULL,
        sale_date DATE NOT NULL,
        amount DECIMAL(10, 2)
        )
        PARTITION BY RANGE (YEAR(sale_date)) (
        PARTITION p0 VALUES LESS THAN (2020),
        PARTITION p1 VALUES LESS THAN (2021),
        PARTITION p2 VALUES LESS THAN (2022)
        )";

40. JSON 数据处理

用于处理JSON格式的数据。

$sql = "SELECT JSON_EXTRACT(data, '$.name') AS name FROM users";

41. XML 数据处理

用于处理XML格式的数据。

$sql = "SELECT ExtractValue(data, '/user/name') AS name FROM users";

42. 地理空间数据处理

用于处理地理空间数据。

$sql = "SELECT ST_Distance_Sphere(point1, point2) AS distance FROM locations";

43. 复制表结构

用于复制表的结构。

$sql = "CREATE TABLE new_users LIKE users";

44. 复制表数据

用于复制表的数据。

$sql = "INSERT INTO new_users SELECT * FROM users";

45. 临时表

用于创建临时表。

$sql = "CREATE TEMPORARY TABLE temp_users AS SELECT * FROM users WHERE age > 30";

46. 视图创建和删除

用于创建和删除视图。

$sql = "CREATE VIEW user_view AS SELECT id, name FROM users";
$sql = "DROP VIEW user_view";

47. 存储过程创建和删除

用于创建和删除存储过程。

$sql = "CREATE PROCEDURE GetUserDetails(IN user_id INT)
        BEGIN
        SELECT * FROM users WHERE id = user_id;
        END";
$sql = "DROP PROCEDURE GetUserDetails";

48. 触发器创建和删除

用于创建和删除触发器。

$sql = "CREATE TRIGGER before_user_insert 
        BEFORE INSERT ON users 
        FOR EACH ROW 
        SET NEW.created_at = NOW()";
$sql = "DROP TRIGGER before_user_insert";

49. 事件调度

用于创建和管理事件调度。

$sql = "CREATE EVENT my_event
        ON SCHEDULE EVERY 1 DAY
        DO
        DELETE FROM logs WHERE created_at < NOW() - INTERVAL 1 MONTH";

50. 数据库优化

用于优化数据库性能。

$sql = "OPTIMIZE TABLE users";

总结

以上是PHP中常见的SQL查询语句及其使用示例。在实际开发中,根据具体需求选择合适的查询语句,并注意SQL注入等安全问题。使用预处理语句和参数化查询可以有效防止SQL注入攻击。