0
点赞
收藏
分享

微信扫一扫

SQL 基本的 SELECT 的语法

SQL 基本的 SELECT 的语法

文章目录


每博一文案



  • 从表中选取数据时需要使用 SELECT 语句,也就是只从表中选出(SELECT)必要数据的意思。通过 SELECT 语句查询并选取出必要的数据的过程称为匹配查询 或者查询
  • SELECT 语句是 SQL语句中使用最多的最基本的SQL语句。

基本的SELECT 语句

  • SELECT 语句包含了SELECT语句和 FROM 两个子句。子句是SQL语句的组成要素,是以 SELECT 或者是 FROM等作为起始的短语

SELECT  <列名>,  或是是字段是一个意思
FROM    <表名>
  • 虽然这两句是可以写在同一行的,但是不建议,因为当我们需要查找的列表非常多时,其可读性会,变得十分之差的,所以我们养成好习惯,分行写,增加可读性,美观性。

实践1:

SELECT 1
FROM DUAL; -- 这里的DUAL 伪表,我们并不是从某个表(数据库)中得到数据的而是,直接写的

结果1:


在这里插入图片描述


实践2:


SELECT 2*3
FROM DUAL; 

结果2:

在这里插入图片描述


查询某列

  • 查询的时候要注意一点: 就是要切换到对应的数据库中,去查询,不然,你会找不到同时,会报错的

在这里插入图片描述


SELECT employee_id  -- 列名 ,或者时字段
FROM employees;    -- 表名,
  • 这里我查询的表是在 atguigudb 数据库中的 表;
  • 结果如下图所示:显示出了我们所查询的 字段 employee_id 的信息

在这里插入图片描述


  • 这里我们试试改变数据库,再查询看看结果: 不出意外,报错警告

在这里插入图片描述


  • 所以当我们在查询时,一定要切换到对应的数据库中去查询

  • 同样我们也可以多列查询的,加上逗号,分割开来就好了

SELECT employee_id,last_name,department_id,salary
FROM employees;

在这里插入图片描述


查询出表中所有的列

  • 当我们需要查询出全部列时,可以在 SELECT 加个 * ,如下:
SELECT * -- 这里的星号 * 是个通配符,可以用来表示任意字符:这里表示:所有列
FROM employees;
  • 上述命令:表示从 FROM 表中,选择(SELECT)所有的列(*), ***** 是通配符,可以代替任意字符,
  • 一般情况下,除非需要使用表中所有的字段数据,不然最好不要使用通配符 * ,使用通配符虽然可以节省输入查询语句的时间,但是获取不需要的列的,数据通常会大大减低查询和所使用的应用程序的效率,这里因为我们的数据并没有大多,所以看不出明显效果,但是当数据量非常大时,可以十分明显了,而我们的数据库本来就是为了存储大量数据而建立的,
  • 当然也是有好处的:比如当我们不知道所需要的列的名称时,可以通过它获取它们。
  • 在生产环境中,不推荐你直接使用 SELECT * 进行查询。

  • 结果:如下:

在这里插入图片描述


为列设定别名

  • 有的时候一些表中的列名,为了简写,一般人会不太清楚其中的是什么意思,如果给这些列加上”昵称“,而这里的”昵称“就是别名
  • 有三种方法,当时我只建议两种方法
    1. 紧跟列名
    2. 使用关键字 AS 推荐的
    3. 紧跟列名 ,并使用双引号把别名括起来 推荐的

紧跟列名

  • 我不建议使用该方式,
    • 可读性非常的差
    • 容易出错,因为是同过空格分隔,别名的,当你命名的 别名中存在空格时,如何,它又如何识别出来,别名

-- 下面这种方法不建议使用,
SELECT employee_id emp_id -- 把employee_id 别名为 emp_id
FROM employees; 

结果

在这里插入图片描述


使用关键字 AS

  • 在指定多个列的情况小,需要使用 ” , “ 逗号区分各个别名,并列上 ”列名“ AS ”别名“

  • 如果别名使用了特殊符号,就需要使用 ” “ 双引号将别名括起来。

  • 比如:汉语别名 命名时就需要使用上双引号 (” “) 括起来,请注意是:双引号不是 单引号

  • 格式

SELECT 列名  AS 别名 
FROM  表名

实践:


SELECT employee_id AS emp_id , 
       salary AS "工资"
FROM employees;

结果:

在这里插入图片描述


省略 AS 关键字 只使用双引号

  • 为了偷懒把 AS 关键字给省略掉了,其实也是没有问题的,我个人是不会去省略掉的

实践:


SELECT employee_id "emp_id",
       last_name "名字",
       department_id "部门"
FROM employees;

结果:

在这里插入图片描述



SELECT employee_id AS "emp_id",
       last_name AS "名字",
       department_id AS "部门id",
       salary*12 AS "年工资"
FROM employees;
  • 结果:

在这里插入图片描述


常数的查询

  • SELECT 子句中不仅可以书写别名,还可以书写常数,就是在 SELECT 查询结果中增加一列固定的常数列,这里的取值是我们指定的,而不是从数据表中动态取出的
  • 这里你可能要问了?
    • SQL 中的 SELECT 语法的提供了这个功能,一般来说我们只从一个表中查询数据,通常不需要增加一个固定的常数列,但如果我们想整合不同的数据源,用常数列作为这个表的标记,就需要查询常数了。
  • 我们使用单引号把常数括起来,记住是单引号,不是双引号,不要和上面的与 别名的双引号,弄混了

实践:

-- 这里我们自行定义一个 gongsi 列名(字段),其值我们设定为 '腾讯'
SELECT '腾讯' AS gongsi,
       last_name AS "姓名",
       salary*12 AS "年工资"
FROM employees;

结果:

在这里插入图片描述


从结果中删除重复行

  • 大多数的数据表中都是有许多重复的值,我们又不需要太多重复的,只需要其中的一个就可以了
  • 想要删除重复行时,可以通过在 SELECT 子句中使用 DISTINCT 关键字来实现,将重复的合并成一条信息
  • 格式:
SELECT DISTINCT 后接删除重复的对象,
FROM 表名;
  • 需要注意的一点就是: DISTINCT 关键字只能用在第一个列名之前,不可以插在 列名之间的

实践:

  • 首先我们先看一个没有去除重复的结果

在这里插入图片描述


  • 使用 DISTNICT 关键字去重复
SELECT DISTINCT department_id -- 去除重复对象 department_id
FROM employees;

结果

  • 我们可以看到连 NULL也被合并成一个信息了,行数明显大大减少了,同样也没有重复的结果了
    在这里插入图片描述

注意:

  • DISTINCT 关键字只能出现在第一个列名之前,不能出现在列名之间的,不然报错

在这里插入图片描述


  • 放在第一个列名之前

在这里插入图片描述


根据WHERE语句来选择记录

  • 当我们只需要选择出 ,满足条件的记录,就像 小学老师记录成绩 及格 的同学的名字,不及格的不要,类似
  • 我们可以通过 SELECT 语句中的 WHERE 子句来指定查询数据的条件
    • 使用WHERE 子句,将不满足条件的排除,
    • 满足条件的,显示出来
  • 注意:在SQL中子句的书写顺序是固定的,不能随便更改,WHERE 子句必须紧跟在 FROM 子句之后,所以注意了,FROM 后面就不可以再跟上**” ;“ 分号了** ,这个点十分容易出错的,多加注意,多加注意,多加注意。

实践:

SELECT *
FROM employees
WHERE last_name = 'king'; -- 字符串使用单引号

结果:

在这里插入图片描述


  • 我们也可以指定只显示 某列名的,

SELECT last_name , salary
FROM employees
WHERE last_name = 'king' AND salary > '9000.0';

  • 结果:

在这里插入图片描述


  • 注意了, 使用WHERE 关键字 ,FROM 后面不要跟 (;)分号

在这里插入图片描述


着重号

  • 当我们的一些命名不小心与 关键字重名了,发生了,冲突了,从而导致无法查询,报错
  • 我们可以使用着重号,解决这个冲突性,报错问题,
  • 着重号 就是 ’ ‘ 单引号,使用方法就是把发生冲突的标识符,使用单引号括起来,就OK了

实践


SELECT *
FROM ORDER;

SELECT *
FROM 'ORDER'; -- 着重号


举报

相关推荐

0 条评论