千家信息网

SQL查询语句有哪些

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,本篇内容介绍了"SQL查询语句有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SQL 代表结构化
千家信息网最后更新 2024年11月23日SQL查询语句有哪些

本篇内容介绍了"SQL查询语句有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

SQL 代表结构化查询语言,是一种用于管理数据库中数据的语言。SQL 由命令和声明性语句组成,它们充当数据库的指令,以便它可以执行任务。您可以使用 SQL 命令在数据库中创建表、添加和更改大量数据、搜索数据以快速查找特定内容,或者一起删除表。

数据库的基本结构

在开始之前,您应该了解数据库的层次结构。

SQL 数据库是存储在表中的相关信息的集合。每个表都有描述其中数据的列,以及包含实际数据的行。字段是一行中的单个数据。因此,要获取所需的数据,我们需要具体化。

例如,远程公司可以有多个数据库。要查看他们的数据库的完整列表,我们可以键入SHOW DATABASES;并可以在Employees数据库上进行分区。

输出将如下所示:

+--------------------+|     Databases      |+--------------------+| mysql              || information_schema || employees          || test               || sys                |+--------------------+

一个数据库可以有多个表。以上面的例子为例,要查看employees数据库中的不同表,我们可以这样做SHOW TABLES in employees;。表格可以是Engineering、Product、Marketing和 ,Sales适用于公司拥有的不同团队。

+----------------------+| Tables_in_employees  |+----------------------+| engineering          || product              || marketing            || sales                |+----------------------+

然后,所有表都由描述数据的不同列组成。

要查看不同的列,请使用Describe Engineering;. 例如,工程表可以具有限定单个属性样柱employee_id,first_name,last_name,email,country,和salary。

这是输出:

+-----------+-------------------+--------------+| Name      |         Null      |      Type    |  +-----------+-------------------+--------------+|EMPLOYEE_ID| NOT NULL          | INT(6)       |  |FIRST_NAME | NOT NULL          |VARCHAR2(20)  ||LAST_NAME  | NOT NULL          |VARCHAR2(25)  | |EMAIL      | NOT NULL          |VARCHAR2(255) ||COUNTRY    | NOT NULL          |VARCHAR2(30)  ||SALARY     | NOT NULL          |DECIMAL(10,2) |+-----------+-------------------+--------------+

表也由行组成,行是表中的单个条目。例如,一个行会包括根据条目employee_id,first_name,last_name,email,salary,和country。这些行将定义并提供有关工程团队中一个人的信息。

基本 SQL 查询

您可以对数据执行的所有操作都遵循 CRUD 首字母缩写词。

CRUD 代表我们在查询数据库时执行的 4 个主要操作:创建、读取、更新和删除。

我们CREATE在数据库中提供信息,我们READ/从数据库中检索该信息,我们UPDATE/操纵它,如果我们愿意,我们可以DELETE。

下面我们将介绍一些基本的 SQL 查询及其语法以开始使用。

SQLCREATE DATABASE语句

要创建名为 的数据库engineering,我们可以使用以下代码:

CREATE DATABASE engineering;

SQLCREATE TABLE语句

CREATE TABLE table_name (    column1 datatype,    column2 datatype,    column3 datatype);

此查询在数据库内创建一个新表。

它为表提供了一个名称,并且我们希望我们的表具有的不同列也被传入。

我们可以使用多种数据类型。一些最常见的有:INT,DECIMAL,DATETIME,VARCHAR,NVARCHAR,FLOAT,和BIT。

从上面的示例中,这可能类似于以下代码:

CREATE TABLE engineering (employee_id  int(6) NOT NULL,first_name   varchar(20) NOT NULL,last_name  varchar(25) NOT NULL,email  varchar(255) NOT NULL,country varchar(30),salary  decimal(10,2) NOT NULL);

我们根据这些数据创建的表看起来类似于以下内容:

EMPLOYEE_IDFIRST_NAMELAST_NAMEEMAILCOUNTRYSALARY





SQLALTER TABLE语句

创建表后,我们可以通过向其添加另一列来修改它。

ALTER TABLE table_name ADD column_name datatype;

例如,如果我们想要,我们可以birthday通过键入以下内容向现有表中添加一列:

ALTER TABLE engineeringADD  birthday date;

现在我们的表格将如下所示:

EMPLOYEE_IDFIRST_NAMELAST_NAMEEMAILCOUNTRYSALARYBIRTHDAY






SQLINSERT语句

这就是我们向表中插入数据并创建新行的方式。这是CCRUD 中的一部分。

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

在INSERT INTO部分中,我们可以指定要填充信息的列。

里面VALUES是我们想要存储的信息。这会在表中创建一个新记录,这是一个新行。

每当我们插入字符串值时,它们都用单引号括起来,''.

例如:

INSERT INTO table_name(employee_id,first_name,last_name,email,country,salary) VALUES(1,'Timmy','Jones','timmy@gmail.com','USA',2500.00);(2,'Kelly','Smith','ksmith@gmail.com','UK',1300.00);

该表现在看起来像这样:

EMPLOYEE_IDFIRST_NAMELAST_NAMEEMAILCOUNTRYSALARY
1TimmyJonestimmy@gmail.comUSA2500.00
2KellySmithksmith@gmail.comUK1300.00

SQLSELECT语句

该语句从数据库中获取数据。它是RCRUD的一部分。

SELECT  column1,column2FROM    table_name;

从我们之前的示例中,这将如下所示:

SELECT first_name,last_nameFROM   engineering;

输出:

+-----------+----------+|FirstName  | LastName |+-----------+----------+| Timmy     | Jones    || Kelly     | Smith    |+-----------+----------+

该SELECT语句指向我们想要从中获取数据的特定列,我们希望在结果中显示该列。

该FROM部分确定表本身。

这是另一个例子SELECT:

SELECT * FROM table_name;

星号*将从我们指定的表中获取所有信息。

SQLWHERE语句

WHERE 使我们能够更具体地了解我们的查询。

如果我们想过滤我们的Engineering表以搜索具有特定薪水的员工,我们将使用WHERE.

SELECT employee_id,first_name,last_name,email,countryFROM engineeringWHERE salary > 1500

上一个示例中的表:

EMPLOYEE_IDFIRST_NAMELAST_NAMEEMAILCOUNTRYSALARY
1TimmyJonestimmy@gmail.comUSA2500.00
2KellySmithksmith@gmail.comUK1300.00

现在将有以下输出:

+-----------+----------+----------+----------------+------------+|employee_id|first_name|last_name |email           |country     |+-----------+----------+----------+----------------+------------+|          1| Timmy    |Jones     |timmy@gmail.com | USA        |+-----------+----------+----------+----------------+------------+

该过滤器通过,并说明满足条件的结果-也就是说,它表明只有其薪水的人的行more than 1500。

SQL AND,OR和BETWEEN运营商

这些运算符允许您通过向WHERE语句添加更多条件来使查询更加具体。

该AND操作发生在两个条件,他们都必须是true为了在结果中显示的行。

SELECT column_nameFROM table_nameWHERE column1 =value1    AND column2 = value2;

该OR运算符接受两个条件,其中之一必须为真,才能在结果中显示该行。

SELECT column_nameFROM table_nameWHERE column_name = value1    OR column_name = value2;

该BETWEEN运营商过滤出数字或文字的特定范围内。

SELECT column1,column2FROM table_nameWHERE column_name BETWEEN value1 AND value2;

我们也可以将这些运算符相互结合使用。

假设我们的表现在是这样的:

EMPLOYEE_IDFIRST_NAMELAST_NAMEEMAILCOUNTRYSALARY
1TimmyJonestimmy@gmail.comUSA2500.00
2KellySmithksmith@gmail.comUK1300.00
3JimWhitejwhite@gmail.comUK1200.76
4José LuisMartìnezjmart@gmail.comMexico1275.87
5EmiliaFischeremfis@gmail.comGermany2365.90
6DelphineLavignelavigned@gmail.comFrance2108.00
7LouisMeyerlmey@gmail.comGermany2145.70

如果我们使用如下语句:

SELECT * FROM engineeringWHERE  employee_id BETWEEN 3 AND 7        AND         country = 'Germany';

我们会得到这个输出:

+------------+-----------+-----------+----------------+--------+--------+|employee_id | first_name| last_name | email          |country |salary  |+------------+-----------+-----------+----------------+--------+--------+|5           |Emilia     |Fischer    |emfis@gmail.com | Germany| 2365.90||7           |Louis      |Meyer      |lmey@gmail.com  | Germany| 2145.70|+------------+-----------+-----------+----------------+--------+--------+

这将选择所有具有德国国家/地区employee_id之间的comlumns 3 and 7 AND。

SQLORDER BY语句

ORDER BY按我们在SELECT语句中提到的列排序。

它对结果进行排序,并按字母或数字的降序或升序顺序(默认顺序为升序)显示它们。

我们可以指定使用以下命令:ORDER BY column_name DESC | ASC。

SELECT employee_id, first_name, last_name,salaryFROM engineeringORDER BY salary DESC;

在上面的示例中,我们对工程团队中员工的工资进行排序,并按数字降序排列。

SQLGROUP BY语句

GROUP BY 让我们将具有相同数据和相似点的行组合起来。

将重复的数据和在表格中多次出现的条目排列起来很有帮助。

SELECT column_name, COUNT(*)FROM table_nameGROUP BY column_name;

这里COUNT(*)单独计算每一行并返回指定表中的行数,同时还保留重复的行。

SQLLIMIT语句

LIMIT允许您指定应在结果中返回的最大行数。

这在处理可能导致查询需要很长时间运行的大型数据集时很有用。通过限制您获得的结果,它可以节省您的时间。

SELECT column1,column2FROM table_nameLIMIT number;

SQLUPDATE语句

这就是我们如何更新表中的一行。这U是 CRUD的一部分。

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

该WHERE条件指定要编辑的记录。

UPDATE engineeringSET    country = 'Spain'WHERE   employee_id = 1

我们之前的表:

EMPLOYEE_IDFIRST_NAMELAST_NAMEEMAILCOUNTRYSALARY
1TimmyJonestimmy@gmail.comUSA2500.00
2KellySmithksmith@gmail.comUK1300.00
3JimWhitejwhite@gmail.comUK1200.76
4José LuisMartìnezjmart@gmail.comMexico1275.87
5EmiliaFischeremfis@gmail.comGermany2365.90
6DelphineLavignelavigned@gmail.comFrance2108.00
7LouisMeyerlmey@gmail.comGermany2145.70

现在看起来像这样:

EMPLOYEE_IDFIRST_NAMELAST_NAMEEMAILCOUNTRYSALARY
1TimmyJonestimmy@gmail.comSpain2500.00
2KellySmithksmith@gmail.comUK1300.00
3JimWhitejwhite@gmail.comUK1200.76
4José LuisMartìnezjmart@gmail.comMexico1275.87
5EmiliaFischeremfis@gmail.comGermany2365.90
6DelphineLavignelavigned@gmail.comFrance2108.00
7LouisMeyerlmey@gmail.comGermany2145.70


这将更新 ID 为 1 的员工的居住国家/地区列。

我们还可以使用来自另一个表的值更新表中的信息JOIN。

UPDATE table_nameSET table_name1.column_name1 = table_name2.column_name1    table_name1.column_name2 = table_name2.column2FROM table_name1JOIN table_name2     ON table_name1.column_name = table_2.column_name;

SQLDELETE语句

DELETE是DCRUD的一部分。这就是我们从表中删除记录的方式。

基本语法如下所示:

DELETE FROM table_name WHERE condition;

例如,在我们的engineering示例中,它可能如下所示:

DELETE FROM engineeringWHERE employee_id = 2;

这将删除工程团队中 id 为 2 的员工的记录。

SQLDROP COLUMN语句

要从表中删除特定列,我们将执行以下操作:

ALTER TABLE table_name DROP COLUMN column_name;

SQLDROP TABLE语句

要删除整个表,我们可以这样做:

DROP TABLE table_name;

"SQL查询语句有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0