zoukankan      html  css  js  c++  java
  • (原创)SQL总结(一)

    最近刚刚刷完SQL必知必会,按照代码走了一遍,感觉并不难,主要是需要注意的地方挺多的,现在就把需要的记录一下。
    就按照书中目录的顺序来。

    数据库基础

    按照之前的随笔,我们已经生成了数据库和相应的表。在这里,数据库就是orderdb,表就是customers,orders,orderitems等。

    概念

    数据库:保存有组织的数据的容器,注意数据库不是软件
    表:结构化的文件,可以存储某种特定类型的数据,数据库的每个表都有一个名字来标识自己
    模式:关于数据库和表的布局及特性的信息
    列:列存储表中某部分的信息,比如我们之前的cust_id,cust_name等都是表customers的列
    行:表中的数据按行存储,每个记录存储在自己的行内,行就是表的一个记录。又称为数据库记录。
    主键:每一行都有一列或者几列唯一标识自己,表中的任何列都可以作为主键,只要满足以下条件:
    任意两行都不具有相同的主键值
    每一行都必须有主键,主键列不允许NULL
    主键列的值不允许更新或者修改
    主键值不能重用
    SQL是专门用来与数据库沟通的语言

    检索数据SELECT

    最常使用的就是SELECT,从一个或多个表中检索信息

    检索单个列、多个列、所有列

    SELECT prod_id,prod_name FROM Products;
    其中prod_id prod_name是表Products中的列,在这里我们通常将SQL的关键词设置为大写,表设置为首字母大写,列设置为小写,但这只是为了方便查看,SQL本身不区分大小写。
    另外,SQL语句后必须加分号!
    SQL的语句可以写为一行,也可以写成多行,多行的时候只需要在最后的一行后面加上分号。
    SELECT * FROM Products; 表示检索表Products所有列。

    检索不同的值

    如果我们想检索出某一列的不同的取值,而不是将该列下的所有行的值都得出,那么就用下面的语句
    SELECT DISTINCT proud_id FROM Products;
    注意,如果写成SELECT DISTINCT proud_id,prod_name FROM Products;那么DISTINCT作用于两个列,输出的就是两个列复合的不同值的行。

    限制结果

    限制不会输出全部数据,而是输出其中的一部分,比如前五个或者后五个,此时不同的数据库的语法不同,以MYSQL为例:
    SELECT prod_name FROM Products LIMIT 5;输出前五个
    SELECT prod_name FROM Products LIMIT 5 OFFSET 5;指示返回从第5行起的5行数据,不包括第5行,第一个数字是检索的行数,第二个数字是指从哪儿开始。
    注意:第一个检索的是第0行,而不是第1行。
    MYSQL支持简化的搜索,即用LIMIT3,4代替LIMIT 4 OFFSET 3;

    注释

    SQL用--表示注释,注意--和对应的注释之间有一个空格,比如“-- 这是一条注释”
    在一行的开始添加#将使得整行作为注释,用/..../表示多行注释。

    指定排序方向

    排序数据

    对于之前select出的数据没有特定顺序,可以使用ORDER BY加一个或多个列的名字,表示对输出进行排序
    SELECT prod_id,prod_name FROM Products ORDER BY prod_id;将以prod_id对数据进行排序输出
    SELECT prod_id,prod_name,prod_price FROM Products ORDER BY prod_id,prod_name;将以两个列prod_id,prod_price进行排序输出。

    按列位置进行排序

    SELECT prod_id,prod_name,prod_price FROM Products ORDER BY 2,3;表示按照name和price两列排序输出

    排序方向

    默认为升序
    SELECT prod_id,prod_name FROM Products ORDER BY prod_id DESC;表示降序
    SELECT prod_id,prod_name,prod_price FROM Products ORDER BY prod_id DESC,prod_name;注意DESC只作用于它前面的一个列名。
    如果想对所有列都按降序,那么每个列后面都要跟上DESC。

  • 相关阅读:
    wireshark: no interface can be used for capturing in this system
    git上传者姓名修改
    将照片转成base64时候,使用下面的这个包更加安全一些
    The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    gson之将对象转化成json字符串的方法
    微信之获取微信的openid(二)详细版
    微信支付之获取openid
    后台返回的Json为null的字段不显示的方法
    如果在使用谷歌的gson的时候,在返回时间类型的数据的时候,
    Caused by: org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): com.qingmu.seller.entity.OrderMaster
  • 原文地址:https://www.cnblogs.com/rayshaw/p/9011917.html
Copyright © 2011-2022 走看看