如何在SQL中从表中获取数据:SQL查询SELECT FROM WHERE
SQL培训示例:如何编写SQL查询以从数据库中获取数据?
从SQL表中获取数据。我用简单的话解释如何从数据库中检索信息,没有任何赘述。命令SELECT FROM WHERE很简单!它适用于MySQL、PostgresQL、MS SQL、SQLite、Oracle、MariaDB和其他基于SQL的DBMS。
如何从数据库表中获取所有数据?
SQL命令SELECT FROM的语法:
SELECT * FROM tableName;
这字面意思是“从_表_中选择_所有_”。
从表中检索数据的结果将是一个包含所有行的数组,每行包含所有字段(列)。如果表中没有数据,则结果将是一个空数组。
例如,在我们的数据库中,有一个名为products的产品表。要从此表中检索所有数据,您需要编写SQL查询:
SELECT * FROM products;
如何从数据库表中获取特定字段:
如果我们不需要在每行中包含数据库的所有信息,我们可以仅选择我们感兴趣的字段。例如,我们有一个用户表,我们想获取所有用户,但我们只对字段id、email和name感兴趣。那么,除了星号,应该列出用逗号分隔的字段名:
SELECT id, email, name FROM products;
注意,最后一个字段与单词FROM之间不应有逗号,否则会出现错误!
如何从DB表中获取特定记录? SQL查询SELECT FROM WHERE ID
我们通常通过id来检索数据。为什么id?这是表中每行的唯一编号。
在单个表中,不能有多个相同的id,这意味着知道记录的id,我们可以保证获取到该特定记录。以下是如何操作:
SELECT * FROM tableName WHERE id = recordId;
例如,在我们的数据库中,有一个名为orders的订单表,我们想检索id为5的记录。
SELECT * FROM orders WHERE id = 5;
请注意,如果id是数字,我们写它时无需加引号。如果id以UUID格式存储,则必须用引号括起来。示例:
SELECT * FROM orders WHERE id = ‘40dfe45e-49e0-4097-92f6-c96f27aa3af1’;
您也可以根据其他字段获取数据,而不必仅依赖ID。
为了清晰起见,我将以下示例用中文提供,但请记住,在实际数据库中,所有表和字段应以英文命名。
假设我们想获取所有职务为“经理”的员工:
SELECT * FROM Employees WHERE Position = 'Manager';
值得注意的是,在这种情况下,应该为列出职位创建一个单独的表,而在“职位”列中存储的不是职位的名称,而是其在职位表中的id。
我们可以获取数据,其中日期大于/小于另一日期,并且在条件中使用多个标准:
假设我们想获取状态为“已交付”的订单,并且是在2023年1月1日之后下的订单:
SELECT * FROM Orders WHERE Status = 'Delivered' AND Order_Date > '2023-01-01';
值得注意的是,在这种情况下,应该为列出订单状态创建一个单独的表,而在“状态”列中存储的不是状态的文本,而是其在状态表中的id。使用枚举数据类型也是可以的,但在我看来,这种方法的灵活性和便利性都较差。
如何获取字段中包含字符序列的行?
要搜索部分匹配,使用LIKE操作符。
例如,我们可以搜索所有名称以字母“F”开头的产品:
SELECT * FROM Products WHERE Name LIKE 'F%';
或者名称以“ry”结尾的产品:
SELECT * FROM Products WHERE Name LIKE '%ry';
或者名称中包含“fresh”的产品:
SELECT * FROM Products WHERE Name LIKE '%fresh%';
如何选择字段包含多个值之一的数据?
IN操作符来帮助我们。例如,我们可以选择类别为列出几种分类之一的产品数据:
SELECT * FROM Products WHERE Category IN ('Electronics', 'Clothing', 'Books');
以上是使用数据库选择的最基本示例。
SQL具有丰富的功能,值得写单独的文章,因此门户网站将关于使用WHERE条件、GROUP BY分组、ORDER BY排序、JOIN表连接等等的更详细文章。