分类目录归档:SQL

SQL创建表语句


表是存储在数据库中的一组数据。

要在数据库中创建表,请使用CREATE TABLE语句。您为表命名,并列出其数据类型的列。

CREATE TABLE TABLENAME(Attribute1 Datatype, Attribute2 Datatype,........);

这是一个创建名为Person的表的示例:

CREATE TABLE Person(
Id int not null,
Name varchar not null,
DateOfBirth date not null,
Gender bit not null,
PRIMARY KEY( Id )
);

在上面的示例中,...

阅读全文...

SQL日期函数


介绍

MySQL中定义了61个日期函数。别担心,我们不会在这里查看它们。本指南将向您介绍一些常见的,并为您提供足够的曝光,让您自己探索。

我们将涵盖:

  • 获取当前日期
  • 日期数学
  • 在where或having子句中的日期

获取当前日期

从系统中获取日期对于使用SQL处理数据非常方便。

-- current date
 select now(), sysdate(), current_date(), current_time(), -- date and time from the system on execution
 dayofyear(now()) as NumDaysSoFarTh...

阅读全文...

SQL删除语句


要删除表中的记录,请使用DELETE语句。

小心。您可以删除表格的所有记录或只删除一些记录。使用WHERE条件指定要删除的记录。语法是:

DELETE FROM table_name
WHERE condition;

下面是从表中删除Id 3记录的示例:

DELETE FROM Person
WHERE Id = 3;

使用DELETE删除给定表中的所有记录

DELETE * FROM Person;

或者,根据您的RDBMS,您可以使用TRUNCATE TABLE语句删除表中的所有记录,并且根据您的RDBMS可能允许或不允许回滚。 DELETE是DML,TRUNCATE是DDL。...

阅读全文...

SQL外键约束


外键是用于链接两个表的键。具有外键约束(又名“子表”)的表连接到另一个表(也称为“父表”)。连接位于子表的外键约束和父表的主键之间。

外键约束用于帮助维护表之间的一致性。例如,如果删除父表记录并且子表具有记录,则系统也可以删除子记录。

它们还通过要求在子表中输入的每个记录存在父表记录来帮助防止在子表中输入不准确的数据。

使用示例

对于本指南,我们将仔细查看学生(家长)和学生联系(孩子)表。

父表的主键

请注意,student表具有studentID的一列主键。

SHOW index FROM student;
+---------+------------+----------+---...

阅读全文...

SQL Group By 语句


使用示例

GROUP BY为我们提供了一种组合行和聚合数据的方法。

使用的数据来自我们在其中一些指南中使用的广告系列贡献数据。

以下SQL语句正在回答这个问题:“哪些候选人在2016年获得的捐款总额最大,但只有那些拥有超过2000万美元的捐款?”

以降序(DESC)顺序对此数据集进行排序会将总贡献最大的候选项放在列表顶部。

SELECT Candidate, Election_year, sum(Total_$), count(*)
FROM combined_party_data
WHERE Election_year = 2016
GROUP BY Candidate, Electi...

阅读全文...

SQL Having


HAVING为DBA或SQL使用程序员提供了一种过滤GROUP BY子句聚合的数据的方法,以便用户获取一组有限的记录进行查看。

使用示例

HAVING子句与WHERE子句类似,但它作用于分组数据。在这种情况下,用户只会看到最大的金额。

这些数据来自我们在其中一些指南中使用的广告系列贡献数据。

这个SQL语句正在回答这个问题:“哪些候选人在2016年获得了最大的捐款,但只有那些拥有超过8千万美元的捐款?”

以降序(DESC)顺序对此数据集进行排序会将总贡献最大的候选项放在列表顶部。

SELECT Candidate, Election_year, sum(Total_$), count(*...

阅读全文...

SQL IN运算符


IN运算符用于WHEREHAVING (作为GROUP BY一部分),以将所选行限制为列表中的项“IN”。

以下是与WHERE子句结果集进行比较的当前完整学生列表:

select studentID, FullName, sat_score, rcd_updated from student;
+-----------+------------------------+-----------+---------------------+
 | studentID | FullName               | sat_score | rcd_updated         |
...

阅读全文...

SQL注入


SQL注入是一种旨在危害或破坏数据库的恶意技术。它是最常见的网络黑客技术之一。

通过输入将恶意代码放入SQL语句中来执行SQL注入。

以下示例是一个代码段,它将基于AccountId从数据库中检索用户。

passedInAccountId = getRequestString("AccountId");
 sql = "select * from Accounts where AccountId = " + passedInAccountId;

通过注入1=1;可以使用SQL注入来破坏此代码1=1; AccountId声明。

https://www.foo.com/get-user?Ac...

阅读全文...

SQL插入Select语句


您可以使用已存储在数据库中的数据在表中插入记录。这只是数据的副本,不会影响原始表。

INSERT INTO SELECT语句结合了INSERT INTOSELECT语句,您可以使用任何您想要的条件。语法是:

INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;

这是一个示例,在表格中插入所有来自表格Student的男学生。

INSERT INTO Person(Id, Name, DateOfBirth...

阅读全文...

SQL插入语句


要在表中插入记录,请使用INSERT INTO语句。

您可以通过两种方式执行此操作,如果只想在某些列中插入值,则必须列出其名称,包括所有必需列。语法是:

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

另一种方法是将值插入表中的所有列,不必指定列名。语法是:

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

这是一个以两种方式在表Person中插入记录的示例:

INSER...

阅读全文...