目录

  1. 1. SQL语法
  2. 2. 基础语句
  3. 3. 命令
    1. 3.1. SELECT
  4. 4. 句法
    1. 4.1. WHERE 子句
      1. 4.1.1. LIKE 操作符
    2. 4.2. ORDER BY 关键字
    3. 4.3. INSERT INTO语句
    4. 4.4. UPDATE 语句
  5. 5. 函数
    1. 5.1. COUNT() 函数
    2. 5.2. REGEXP()函数
    3. 5.3. GROUP BY 语句
    4. 5.4. HAVING 子句
    5. 5.5. CONCAT()函数
    6. 5.6. load_file()函数
    7. 5.7. if()函数
    8. 5.8. case函数
    9. 5.9. substr()函数
    10. 5.10. REPLACE()函数
    11. 5.11. LIKE()函数
  6. 6. 面向对象

LOADING

第一次加载文章图片可能会花费较长时间

要不挂个梯子试试?(x

加载过慢请开启缓存 浏览器默认开启

SQL语法

2023/5/5 Basic Sql
  |     |   总文章阅读量:

SQL语法

菜鸟教程

本篇用于学习基础的sql语法,更多偏向于ctf的学习,也就是PHP Mysql

基础语句

SELECT * FROM table_name;
从表中选取所有记录
  • SQL 对大小写不敏感:SELECT 与 select 是相同的
  • 分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。

database():数据库

table_name:表名(表名为数字时:要用反引号包起来查询)

column_name:列名/字段名

命令

SELECT

从数据库中提取数据

SELECT column_name,column_name FROM table_name;
SELECT FROM table_name;
  • select distinct+...

    可用于返回唯一不同的值

  • SELECT FROM语句 + where column_name = value;可用于提取满足指定条件的记录

  • SELECT FROM语句 + order by column_name(可多列查询 + ,column_name) ASC(升序)|DESC(降序); 对结果集按照一个列或者多个列进行排序

    1‘ order by + 字段数# 用于查询可显示的字段

  • SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;合并两个或多个 SELECT 语句的结果

    union select

  • group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])将相同的行组合起来

句法

WHERE 子句

提取那些满足指定条件的记录

SELECT column_name,column_name FROM table_name WHERE condition;

LIKE 操作符

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

SELECT column_name, column_name FROM table_name WHERE column LIKE pattern;

“%” 符号用于在模式的前后定义通配符(默认字母)

eg:下列语句选取 name 以字母 “G” 开始的所有字段

SELECT * FROM table_name WHERE name LIKE 'G%'; 

以此类推%G,%G%分别为结尾和包含

ORDER BY 关键字

对结果集按照一个列或者多个列进行排序

SELECT column_name,column_name FROM table_name ORDER BY column_name, column_name ASC|DESC;

ASC:表示按升序排序。

DESC:表示按降序排序。

当按照多个列进行排序时,只有第一列的值相同时才使用第二列

INSERT INTO语句

用于向表中插入新记录

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

注:不用向 id 字段插入任何数字,id 列是自动更新的,表中的每条记录都有一个唯一的数字

UPDATE 语句

用于更新表中的记录

UPDATE table_name
SET column1 = value1, column2 = value2, ...
(WHERE condition);

image-20230816115433948


函数

COUNT() 函数

返回匹配指定条件的行数

SELECT COUNT(column_name) FROM table_name; # 返回指定列的值的数目(NULL 不计入)
SELECT COUNT(*) FROM table_name; # 返回表中的记录数
SELECT COUNT(DISTINCT column_name) FROM table_name; # 返回指定列的不同值的数目

REGEXP()函数

执行正则表达式模式匹配,在文本中查找与指定模式相匹配的字符串

爆破时括号内请使用十六进制进行匹配以避免语法错误

GROUP BY 语句

结合聚合函数,根据一个或多个列对结果集进行分组

SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name; 

aggregate_function():即上文的几个函数

HAVING 子句

因为WHERE 关键字无法与聚合函数一起使用,所以有了having

筛选分组后的各组数据

SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value;

CONCAT()函数

将多个字符串连接成一个字符串。它接受两个或多个字符串作为参数,并返回一个包含这些字符串连接在一起的新字符串

CONCAT(str1, str2, ...)

每个参数必须是字符串类型或可隐式转换为字符串类型(char转换)

load_file()函数

从文件系统中读取文件内容并将其作为字符串返回

SELECT load_file('/var/www/html/index.html');

if()函数

根据条件返回不同的值的条件

IF(condition, value_if_true, value_if_false)

一个条件表达式,一个在条件为真时返回的值,以及一个在条件为假时返回的值

case函数

根据条件返回不同值的条件语句,可以替代复杂的 IF-ELSE 逻辑

CASE expression
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ...
    ELSE result
END

substr()函数

从字符串中提取一个子串,类似php中的substr

第一个参数是要提取子串的字符串,第二个参数是子串的开始位置,第三个参数是子串的长度

REPLACE()函数

REPLACE(string, old_substring, new_substring)

string是要进行替换操作的字符串;old_substring是要被替换的子串;new_substring是要替换成的子串

LIKE()函数

用于在数据列中搜索特定的模式。它通常与 WHERE 子句一起使用,根据某个字符串模式过滤数据

LIKE 函数使用两个通配符:%_% 通配符表示零个或多个字符,而 _ 通配符表示一个字符

例:查找所有名字以字母 “J” 开头的记录:

SELECT * FROM customers WHERE first_name LIKE 'J%';

面向对象

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
 
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
} 
 
$sql = "SELECT id, firstname, lastname FROM MyGuests";// 读取数据(注入关键,一般会在这段语句中加入参数)
$result = $conn->query($sql);
 
if ($result->num_rows > 0) {
    // 输出数据
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 结果";
}
$conn->close();
?>

从 myDB 数据库的 MyGuests 表读取了 id, firstname 和 lastname 列的数据并显示在页面上

解析:我们设置了 SQL 语句从 MyGuests数据表中读取 id, firstname 和 lastname 三个字段。之后我们使用该 SQL 语句从数据库中取出结果集并赋给复制给变量 $result。