写在前面的话:本文章内容是自己在LintCode网站SQL教程学习过程中做的学习总结,以便自己复习和大家学习,如果去刷此网站的题,也可以把此文作为参考答案来使用。例题的答案是本人所写,并且已经运行成功,大家可以放心学习。

目录

一.简单的SELECT语句

1. 使用 SELECT COLUMN 查询单个列

2. 使用 SELECT COLUMN, COLUMN 查询多个列

3. 使用 SELECT * 查询所有列

4. 使用 SELECT DISTINCT 查询不同行

5. 使用 SELECT WHERE 对行进行筛选过滤

二.简单的INSERT语句

1. 使用 INSERT INTO 在不指定列的情况下插入数据

2.使用 INSERT INTO 在指定的列中插入数据

三.简单的UPDATE语句

1. 使用 UPDATE 更新数据

四.简单的DELETE语句

1. 使用 DELETE 删除数据


一.简单的SELECT语句

1. 使用 SELECT COLUMN 查询单个列

SELECT 语句是最常用的 SQL 语句,它能帮助我们从一个或多个表中查询信息。查询是数据库中最常用的功能,因此我们选择它作为 SQL 语句学习的第一步。

SELECT 语句用于从数据库中选取数据,并将结果存储在一个临时结果表中,这个表称为结果集。结果集实际上也是一种包含行与列的表,只不过是未持久化的,即临时表。

示例代码

在使用 SELECT 语句检索表数据时,至少需要给出两条信息——想检索的列名(column_name)和被检索内容的表名(table_name)。

语法:

 SELECT `column_name`
 FROM `table_name`;

大家可能会有些疑惑,列名 column_name 和表名 table_name 左右加的是什么?

这是反引号(``),它就在我们电脑键盘的左上角数字 1 的左边位置。

在平时编写程序时不常加反引号,那不加反引号可以吗?反引号的作用是什么?

其实是可以的,在绝大部分时候,不加反引号并不会导致程序出错。但其实我们在命名字段的时候,字段名可能会与 SQL 关键字冲突,这时候要用反引号将列名和表名包含一下,避免关键字冲突。

当我们仅需要查询某一列的信息,且知道该列的列名时,可以使用简单的 SELECT COLUMN 的语句查询单个列来获取该列的信息。

例题:请编写 SQL 语句,查询教师表 teachers 中所有教师的姓名。

答案:

select `name`
 from `teachers`

2. 使用 SELECT COLUMN, COLUMN 查询多个列

当我们想要从一个表中查询多个列时,使用的 SELECT 语句与查询一个列时使用的语句相似,但是需要在 SELECT 关键字后给出多个列名,并且列名之间必须以逗号分隔。

语法:

SELECT `column_name_1`, `column_name_2`  
FROM `table_name`;

例题:请编写 SQL 语句,从课程表 courses 中获取课程名称 name 和上课学生人数 student_count 的列。

答案:

select `name`,`student_count`
 from `courses`

3. 使用 SELECT * 查询所有列

SELECT 语句可以直接检索表中所有信息,即检索所有的列。这可以通过在列名的位置使用星号( \* )通配符来实现,输出的列的顺序一般是列在表定义中出现的物理顺序。

通配符是一类键盘字符,* (星号) 就是较为常用的通配符之一,可以使用 * 代替零个、单个或多个字符。 使用 * 通配符最大的优点就是,当不明确需要检索的列名时,可以通过检索所有列名来确定。

语法:

 SELECT * FROM `table_name`;

例题:请编写 SQL 语句,查询教师表 teachers 中的所有教师。

答案:

select *
 from `teachers`

4. 使用 SELECT DISTINCT 查询不同行

如果我们只想知道有哪些不同的值,即希望查询的值都是唯一不重复的,这时候我们就需要用到 DISTINCT 关键字。

语法:

 SELECT DISTINCT `column_name`
 FROM `table_name`

注意:DISTINCT 关键字需位于列名之前。

例题:请编写 SQL 语句,查询教师表 teachers 中的不重复的教师国籍(country)。

答案:

 select distinct `country`
 from `teachers`

5. 使用 SELECT WHERE 对行进行筛选过滤

在大多数情况下,我们只希望留下感兴趣的行而过滤掉不感兴趣的行,这时我们可以使用 WHERE 子句来帮助我们。在使用 SELECT WHERE 语句检索表数据时,需要给出检索的表名 (table_name)、检索的列名 (column_name) 和操作符 (operator) 。

语法:

 SELECT `column_name1`,`column_name2`…
 FROM `table_name`
 WHERE `column_name` operator `value`;

其中:

  • column_name 对应指定列的名称,或者是多列,用逗号( , )分隔开

  • table_name 对应查询表的名称

  • operator 为操作符,常用的有等于 = 、小于 < 、大于 > 、不等于<>!=

例题1:请编写 SQL 语句,查询课程表 courses 中,学生人数超过 1000 的全部课程信息

答案:

 select *
 from `courses`
 where `student_count`>1000

例题2:请编写 SQL 语句,查询课程表 courses 中,课程名(name)为 Artificial Intelligence 的课程信息。

答案:

 select *
 from `courses`
 where `name`='Artificial Intelligence'

二.简单的INSERT语句

INSERT INTO 语句用于向表中插入新记录,这边介绍两种编写形式,第一种形式无需指定列名,第二种形式需要指定列名。

1. 使用 INSERT INTO 在不指定列的情况下插入数据

不需指定列名,只需提供要插入的数据即可,语法如下:

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

其中

value1, value2 …… 为对应插入数据表中的值,每个值的属性需要与对应表中的列名属性相匹配,而且需要把插入的信息填写完整,否则会报错。

例题:请编写 SQL 语句,向课程表 courses 中插入一条新的课程记录,该记录内容如下:

idnamestudent_countcreated_atteacher_id
14SQL2002021-02-251

答案:

 insert 
 into `courses`
 values ('14','SQL','200','2021-02-25','1')

2.使用 INSERT INTO 在指定的列中插入数据

接下来,我们来讲讲 INSERT INTO 的第二种形式。这种形式需要指定列名

语法如下:

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

其中 column1, column2 ... 为指定的列名,value1, value2 …… 为对应插入数据表中的值,每个值的属性需要与对应的列名属性相匹配。

例题:请编写 SQL 语句,向教师表 teachers 插入一条新的教师记录,该记录指定列的字段内容如下:

nameemailagecountry
XiaoFuXiaoFu@lintcode20CN

答案:

 insert 
 into `teachers`(name,email,`age`,`country`)
 values('XiaoFu','XiaoFu@lintcode','20','CN')

三.简单的UPDATE语句

1. 使用 UPDATE 更新数据

UPDATE 语句也是一种较常用的 SQL 语句,它可以用来更新表中已存在的记录。

语法:

 UPDATE `table_name`
 SET `column1`=value1,`column2`=value2,...
 WHERE `some_column`=some_value;

注意:

请注意 UPDATE 语句中的 WHERE 子句!WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!

例题:请编写 SQL 语句,将课程表 courses 中人工智能课 (Artificial Intelligence) 的学生人数修改为 500 人。

答案:

 update `courses`
 set `student_count`='500'
 where `name`='Artificial Intelligence'

四.简单的DELETE语句

1. 使用 DELETE 删除数据

语法:

 DELETE FROM `table_name`
 WHERE `some_column` = `some_value`;

其中

  • table_name 代表表名称

  • some_column 代表列名称,如 id

  • some_value 可以为任意值。some_columnsome_value 构成 WHERE 子句中的搜索条件。

注意

请注意 SQL DELETE 语句中的 WHERE 子句,WHERE 子句规定哪条记录或者哪些记录需要删除。如果省略了 WHERE 子句,所有的记录都将被删除!

例题1:请编写 SQL 语句,删除课程表 courses 中课程创建日期 created_at 在 2020 年之前的所有课程。

答案:

 delete 
 from `courses`
 where `created_at`<'2020-01-01'

例题2:请编写 SQL 语句,在不删除表的前提下,删除课程表 courses 中的所有行数据。

答案:

 delete 
 from `courses`

下接:

零基础学习数据库SQL教程(二)

更多推荐

零基础学习数据库SQL教程(一)(简单的SELECT语句 简单的INSERT语句 简单的UPDATE语句 简单的DELETE语句)