SQL 语法

SQL 语法

SQL语法是什么

SQL遵循一组称为语法的独特规则和准则。本教程通过列出所有基本的SQL语法来帮助您快速入门。

所有SQL语句都以SELECT、INSERT、UPDATE、DELETE、ALTER、DROP、CREATE、USE、SHOW等关键词开头,所有语句都以分号(;)结尾。

大小写敏感性

这里最重要的一点是SQL不区分大小写,这意味着 SELECTSelect 在SQL语句中具有相同的含义。然而,MySQL区分表名的大小写。因此,如果您使用MySQL,请使用数据库中的表名。

SQL表格

让我们考虑一个名为CUSTOMERS的表格,如下所示,并将其用作演示所有相同SQL语句的参考。

ID NAME AGE ADDRESS SALARY
1 Ramesh 32 Ahmedabad 2000.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
6 Komal 22 Hyderabad 4500.00
7 Muffy 24 Indore 10000.00

SQL语句

本教程列出了各种SQL语句。其中大多数与MySQL、Oracle、Postgres和SQL Server数据库兼容。

所有的SQL语句都需要在每个语句的末尾使用分号作为结束符号。分号是分隔不同SQL语句的标准方法,可以在一行中包含多个SQL语句。

本教程中提供的所有SQL语句都在Linux和Windows上的MySQL服务器上进行了测试。

SQL CREATE DATABASE语句

要在数据库中存储数据,首先需要创建数据库。这是将数据归属于一个组织的必要步骤。

您可以使用以下语法创建数据库:

CREATE DATABASE database_name;

让我们尝试使用 CREATE DATABASE 语句在 SQL 中创建一个名为 sampleDB 的示例数据库。

CREATE DATABASE sampleDB

SQL USE语句

数据库创建完成后,需要使用该数据库开始按需存储数据。以下是将当前位置更改为所需数据库的语法:

USE database_name;

我们可以使用SQL中的 USE 语句,将先前创建的sampleDB设置为默认数据库。

USE sampleDB;

SQL DELETE DATABASE语句

如果不再需要一个数据库,您可以删除它。要删除一个数据库,使用以下语法-

DROP DATABASE database_name;

您还可以使用SQL中的 DROP DATABASE 语句删除样本数据库sampleDB –

DROP DATABASE sampleDB;

SQL CREATE TABLE语句

在SQL驱动的数据库中,数据以结构化的方式存储,即以表的形式。要创建一个表,使用以下语法:

CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);

下面的代码块是一个示例,它创建一个上述的CUSTOMERS表,其中包括一个ID作为主键和NOT NULL作为约束,表明在创建该表的记录时,这些字段不能为NULL。

CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

SQL DESC 语句

每个数据库中的表都有自己的结构。为了显示数据库表的结构,我们使用 DESC 语句。以下是语法-

DESC table_name;

DESC语句只在少数关系型数据库管理系统中可用;因此,让我们通过在MySQL服务器中使用DESC语句来看一个例子。

DESC CUSTOMERS;

SQL INSERT INTO 语句

SQL INSERT INTO 语句用于向数据库表中插入数据。以下是语法:

INSERT INTO table_name( column1, column2....columnN)
VALUES ( value1, value2....valueN);

下面的示例语句将在空的CUSTOMERS表中创建七条记录。

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500),
(3, 'kaushik', 23, 'Kota', 2000),
(4, 'Chaitali', 25, 'Mumbai', 6500),
(5, 'Hardik', 27, 'Bhopal', 8500),
(6, 'Komal', 22, 'MP', 4500),
(7, 'Muffy', 24, 'Indore', 10000);

SQL SELECT语句

为了从数据库表中检索存储数据的结果集,我们使用SELECT语句。以下是语法-

SELECT column1, column2....columnN FROM   table_name;

要从CUSTOMERS表中检索数据,我们使用如下所示的SELECT语句。

SELECT * FROM CUSTOMERS;

SQL UPDATE语句

当数据库表中的存储数据已过时并且需要更新而不必删除该表时,我们使用UPDATE语句。以下是语法-

UPDATE table_name
SET column1 = value1, column2 = value2....columnN=valueN
[ WHERE  CONDITION ];

为了看一个例子,以下查询将会更新表中ID号为6的客户的地址字段。

UPDATE CUSTOMERS SET ADDRESS = 'Pune' WHERE ID = 6;

SQL DELETE 语句

不需要将整个表从数据库中删除,您也可以通过应用条件删除某一部分数据。这可以使用 DELETE FROM 语句来完成。以下是语法示例:

DELETE FROM table_name WHERE  {CONDITION};

以下代码中有一个查询,将删除ID为6的客户。

DELETE FROM CUSTOMERS WHERE ID = 6;

SQL DROP TABLE语句

当数据库中不再需要一个表时,可以使用以下语法完全删除该表:

DROP TABLE table_name;

这个查询将从数据库中删除CUSTOMERS表。

DROP TABLE CUSTOMERS;

SQL TRUNCATE TABLE语句

TRUNCATE TABLE语句在SQL中用于删除表的数据,但不删除表本身。当使用此SQL语句时,表会保留在数据库中,就像一个空表一样。以下是语法:

TRUNCATE TABLE table_name;

以下查询会删除CUSTOMERS表的所有记录:

TRUNCATE TABLE CUSTOMERS;

SQL ALTER TABLE语句

ALTER TABLE语句用于修改表的结构。例如,您可以使用此语句添加、删除和修改列的数据。以下是语法−

ALTER TABLE table_name {ADD|DROP|MODIFY} column_name {data_type};

以下是使用ALTER TABLE命令向CUSTOMERS表添加新列的示例:

ALTER TABLE CUSTOMERS ADD GENDER char(1);

SQL ALTER TABLE语句(重命名)

ALTER TABLE语句还可用于更改表名。使用以下语法−

ALTER TABLE table_name RENAME TO new_table_name;

以下是使用ALTER TABLE命令重命名CUSTOMERS表的示例

ALTER TABLE CUSTOMERS RENAME TO NEW_CUSTOMERS;

SQL DISTINCT子句

数据库中的DISTINCT子句用于识别列中的非重复数据。使用SELECT DISTINCT语句,您可以从列中检索唯一的值。以下是语法:

SELECT DISTINCT column1, column2....columnN FROM   table_name;

作为一个例子,让我们使用 DISTINCT 关键词与一个SELECT查询。重复的工资2000.00只会被检索一次,而其他记录将被忽略。

SELECT DISTINCT SALARY FROM CUSTOMERS ORDER BY SALARY;

SQL WHERE子句

WHERE子句用于通过应用条件来过滤表中的行。以下是从表中检索过滤行的语法:

SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION;

以下查询是一个从CUSTOMERS表中检索所有薪水大于2000的记录的示例,使用SELECT语句:

SELECT ID, NAME, SALARY FROM CUSTOMERS WHERE SALARY > 2000;

SQL的AND / OR运算符

AND / OR运算符用于在WHERE子句中应用多个条件。以下是语法−

SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION-1 {AND|OR} CONDITION-2;

下面的查询是一个例子,从CUSTOMERS表中检索所有薪水大于2000并且年龄小于25的记录,使用SELECT语句:

SELECT ID, NAME, SALARY FROM CUSTOMERS WHERE SALARY > 2000 AND age < 25;

SQL IN运算符

IN运算符用于通过使用WHERE子句检查数据是否存在于列中。以下是语法 –

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name IN (val-1, val-2,...val-N);

举个例子,我们想要使用 IN 运算符来显示名称等于 ‘Khilan’、’Hardik’ 和 ‘Muffy’(字符串值)的记录,如下所示 –

SELECT * FROM CUSTOMERS WHERE NAME IN ('Khilan', 'Hardik', 'Muffy');

SQL BETWEEN 子句

BETWEEN 操作符用于使用 WHERE 子句检索落在某个范围内的表中的值。以下是语法:

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name BETWEEN val-1 AND val-2;

让我们尝试使用BETWEEN 运算符来检索 年龄在20到25之间的 CUSTOMERS 记录。

SELECT * FROM CUSTOMERS WHERE AGE BETWEEN 20 AND 25;

SQL LIKE语句

LIKE操作符用于通过WHERE子句检索与特定模式匹配的表中的值。以下是语法:

SELECT column1, column2....columnN
FROM   table_name
WHERE  column_name LIKE { PATTERN };

举个例子,让我们试着显示所有CUSTOMERS表中,薪水以200开头的记录。

SELECT * FROM CUSTOMERS WHERE SALARY LIKE '200%';

SQL ORDER BY子句

ORDER BY子句用于将列值按照给定/指定的顺序排列。以下是语法-

SELECT column1, column2....columnN
FROM   table_name
WHERE  CONDITION
ORDER BY column_name {ASC|DESC};

在下面的示例中,我们尝试通过客户名称的字母顺序对结果进行升序排序。

SELECT * FROM CUSTOMERS ORDER BY NAME ASC;

SQL GROUP BY子句

GROUP BY子句用于将一个列的值分组在一起。以下是语法:

SELECT SUM(column_name)
FROM   table_name
WHERE  CONDITION
GROUP BY column_name;

我们试图根据客户的年龄对他们进行分组,并使用以下查询计算每个年龄组的平均工资 –

SELECT AGE, AVG(SALARY) as avg_salary FROM CUSTOMERS GROUP BY AGE;

SQL COUNT函数

COUNT函数可以获得指定列中非空值的数量。以下是语法:

SELECT COUNT(column_name)
FROM   table_name
WHERE  CONDITION;

让我们看一个例子 −

SELECT COUNT(ID) as COUNT_ID FROM CUSTOMERS;

SQL HAVING 子句

HAVING 子句也用于通过应用条件来筛选一组行。以下是语法 −

SELECT SUM(column_name)
FROM   table_name
WHERE  CONDITION
GROUP BY column_name
HAVING (arithematic function condition);

在下面的示例中,我们试图从CUSTOMERS表中检索所有记录,其中他们的薪水总和小于4540 –

SELECT NAME, SUM(SALARY) as total_salary
FROM CUSTOMERS GROUP BY NAME
HAVING SUM(SALARY) < 4540;

SQL CREATE INDEX语句

为了在数据库表上创建索引,SQL提供了CREATE INDEX语句。以下是语法 –

CREATE UNIQUE INDEX index_name
ON table_name ( column1, column2,...columnN);

让我们使用以下查询在现有的CUSTOMERS表中为名为’NAME’的列创建索引 −

CREATE INDEX sample_index on CUSTOMERS(NAME);

SQL删除索引语句

使用DROP INDEX语句可以从表中删除索引。以下是语法-

DROP INDEX index_name ON table_name;

让我们使用以下查询在现有的CUSTOMERS表中删除之前创建的名为’NAME’的列的索引。

DROP INDEX sample_index on CUSTOMERS;

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程