暂无图片
暂无图片
4
暂无图片
暂无图片
6
暂无图片

【每日一练 001】SQL : select 基本语法

原创 李美静 2020-06-15
2755

1 select 语句的基本语法

可以通过select 语句从数据库中查询数据
主干语法:

select *| { [DISTINCT] column | expression [alias],...} from table;
复制

其中|表示或者
[]里面的内容也为可选项。
select是一个列或多个列的列表
from表示从哪个表中查找数据。
分号代表语句结束。
表由行和列组成,这个主干语法写出来的SQL,最后会返回客户端整张表的所有行,只是根据select后边指定的信息,输出局部列的信息。

2 整体框架

image.png

3 语法完善

在学习select语句的过程中就是在完善以上的主干基本语法。
select和from中间可以是:

  • “*”:表示所有的列,真正在使用时不建议使用,最好写出具体列名
    如:select * from emp;
    查询公司所有员工的信息。
  • 特定的列,一个或多个,多个列中间用逗号隔开:
    如:select empno,ename from emp ;
    查询公司所有员工的员工号和员工姓名
  • 数学表达式:
    如:select empno,sal,sal*1.5 from emp;
    统计公司员工的所有原工资及增长50%之后的工资。
  • 别名:有三种书写形式
    列名 别名,列名 as 别名,列名 “别名”
    其中对于别名中有大小写要求的或者有特殊字符的要用双引号。
    如:select empno as id,ename name,sal “Salary” from emp;
    输出的结果中id和name均为大写,Salary是原样输出的有大小区分,这就是加上双引号的区别。
  • 字符串:可以是单引号引起来的普通字符
    如:select ‘$3’ from emp ;
    此时会在屏幕上打印输出14行$3字符。
  • 连接符:||
    可以通过||连接运算符来拼接表中字段信息和个性化输出内容,通常用来务批量处理的操作,拼SQL
    或者结果加可读性
    如:select ename||’ is a ’ || job from emp;
    最后输出类似为这样的结果:每个员工的工作信息
    SMITH is a CLERK
    如果显示的个性化字符中有单引号字符与语法中的单引号冲突,需要再加一个单引号转义,如下:
    select ename||’ ''s is a ’ || job from emp;
    此时两个‘’的效果是在屏幕中输出一个单引号字符。
  • 引用运算符:q’特殊符号 增加可读性的个性化内容 特殊符号’
    此时注意q’特殊符号与后边的特殊符号’匹配成对,这样的使用效果和连接运算符类似,都可以增强可读性。
  • distinct: 消除重复行
    如:select distinct deptno from emp;
    此时会列出公司中分配了员工的部门信息,且去重。
    对于distinct用法要注意,distinc只能在select子句中第一个位置出现,且只能有一个distinct.
  • 优先级:* /优先级比+ -优先级高,且小括号改变优先级
    如:select empno,ename,12*(sal+100) from emp;
    如果员工每个月加100元奖金,统计每个员工一年的收入

4 练习题

如下是BOOKS_TRANSACTIONS表的结构:
DESC BOOKS_TRANSACTIONS
TRANSACTION_ID NOT NULL VARCHAR2
BORROWED_DATE DATE
DUE_DATE DATE
BOOK_ID VARCHAR2
MEMBER_ID VARCHAR2 (6)
需求:打印输出BOOKS_TRANSACTIONS表的MEMBER_ID,DUE_DATE的信息以字符’$2’作为LATE_FEE信息。如下哪个SQL是正确的?
A) SELECT member_id AS MEMBER_ID, due_date AS DUE_DATE, $2 AS LATE_FEE FROM BOOKS_TRANSACTIONS;
B) SELECT member_id AS “MEMBER_ID”, due_date AS “DUE_DATE”, ‘$2’ AS " LATE_FEE” FROM BOOKS_TRANSACTIONS;
C) SELECT member_id AS “MEMBER_ID”, due_date AS “DUE_DATE”, $2 AS “LATE_FEE” FROM BOOKS_TRANSACTIONS;

【答题小贴士】:
1、以墨天轮文章的形式解析题目并给出答案
2、将墨天轮文章链接发送到此文的评论区

最后修改时间:2020-06-15 16:39:05
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
3人已赞赏
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

zhongyu
暂无图片
4年前
评论
暂无图片 0
https://www.modb.pro/db/40732
4年前
暂无图片 点赞
评论
李晓昂
暂无图片
4年前
评论
暂无图片 0
https://www.modb.pro/db/32668
4年前
暂无图片 点赞
评论
沉默
暂无图片
4年前
评论
暂无图片 0
https://www.modb.pro/db/26812
4年前
暂无图片 点赞
评论
水清木华
暂无图片
4年前
评论
暂无图片 0
对于练习题,我的解答详见 https://www.modb.pro/db/26783
4年前
暂无图片 点赞
评论
数据库小白
暂无图片
4年前
评论
暂无图片 0
https://www.modb.pro/db/26779
4年前
暂无图片 点赞
评论
Jose Chen
暂无图片
4年前
评论
暂无图片 0
https://www.modb.pro/db/26773
4年前
暂无图片 点赞
评论