当前位置:Gxlcms > 数据库问题 > 1.《SQL必知必会》--(更新中...)

1.《SQL必知必会》--(更新中...)

时间:2021-07-01 10:21:17 帮助过:48人阅读

目录

  • 第二课:检索数据
    • 1.检索单个列
    • 2.检索多个列
    • 3.检索所有列
    • 4.检索不同的值(distinct:去重)
    • 5.限制结果(MySQL:limit)
    • 6.使用注释
  • 第三课 排序检索数据(order by语句)
    • 1.排序数据(单个列)
    • 2.按多个列排序
    • 3.按列位置排序
    • 4.指定排序方向
  • 第四课 过滤数据(where语句)
    • 1.使用where子句
    • 2.where子句操作符
  • 第五课 高级数据过滤(where 高阶操作)
    • 1.组合where子句(and / or)
    • 2.IN操作符(指定条件范围)
    • 3.NOT操作符

第二课:检索数据

1.检索单个列

select prod_name from Products;

2.检索多个列

select prod_id,prod_name,prod_price from Products;

3.检索所有列

select * from Products;

4.检索不同的值(distinct:去重)

select distinct prod_name from Products;
  • 注意:distinct关键字作用于所有列

5.限制结果(MySQL:limit)

select prod_name from Products
limit 5 offset 4;
  • 或者
select prod_name from Products
limit 4,5;
  • 从第4+1行开始,检索不超过5行(起始位置为0,所以4为第五行)

6.使用注释

select prod_id,prod_name,prod_price from Products; -- 这是一条注释
  • 注释类型
    • 单行注释
      • “-- ”
      • “ # ”
    • 多行注释
      • “/* ----------这是注释内容,可以多行 ---------- */” 引号中的为注释两端,内容在里面,可以多行

第三课 排序检索数据(order by语句)

1.排序数据(单个列)

  • 采用 order by子句(应出现在select语句中的最后一句,不然会报错)
select prod_name from Products
order by prod_name;

2.按多个列排序

  • 要按多个列排序,简单指定列明,列明之间用逗号分开即可(就像选择多个列一样)
select prod_id,prod_name,prod_price from Products
order by prod_price,prod_name;
  • 检索三个列,其中按价格先排序,随后按名称排序

3.按列位置排序

  • 效果同2.指定select的列位置
select prod_id,prod_name,prod_price from Products
order by 2,3;
  • 优点:简单,高效
  • 缺点:1.不指定列明容易篡改,或选择错误;2.如果需要排序的列不在select中,不能使用
  • 可以混用2和3

4.指定排序方向

  • 升序(默认)降序(DESC)
  • 例如:升序
select prod_id,prod_name,prod_price from Products
order by prod_price,prod_name;
  • 降序,升序
select prod_id,prod_name,prod_price from Products
order by prod_price desc,prod_name;
  • 降序,降序
select prod_id,prod_name,prod_price from Products
order by prod_price desc,prod_name desc;
  • desc 关键字直接应用于其前面的列名,想在多个列上降序,必须对每一个列名进行指定desc (descending的缩写,两个都可以使用)
  • asc 升序(ascending 的缩写,但一般不用,直接默认就是升序)

第四课 过滤数据(where语句)

1.使用where子句

select prod_id,prod_name,prod_price from Products
where prod_price = 3.49;
  • 注意:order by 在where之后

2.where子句操作符


=                                         (等于)
<>                                       (不等于)
!=                                        (不等于)
<                                         (小于)
<=                                       (小于等于)
!<                                        (不小于)
>                                         (大于)
>=                                       (大于等于)
!>                                        (不大于)
BETWEEN                         (在指定两个值之间)
IS NULL                              (为null值)

2.1 检查单个值

select prod_id,prod_name,prod_price from Products
where prod_price < 10;

2.2 不匹配检查

select prod_id,prod_name,prod_price from Products
where vend_id <> 'DLL01';
  • 当值为字符串的时候,应该用引号将其括起来
  • 注意<>和!=通常可以互换,但是有的不可以 比如access

2.3 范围值检查

select prod_id,prod_name,prod_price from Products
where prod_price between 5 and 10;
  • 给定两个值

2.4空值检查

select prod_id,prod_name,prod_price from Products
where prod_price IS NULL;

第五课 高级数据过滤(where 高阶操作)

1.组合where子句(and / or)

1.1 AND操作符(且,条件都要具备)

select prod_id,prod_name,prod_price from Products
where prod_price < 10 and prod_price > 5;
  • 每个条件中都要加and

1.2 OR 操作符(或,条件其中某一个符合都可以)

select prod_id,prod_name,prod_price from Products
where prod_price = 10 or prod_price  = 5;

1.3 求值顺序

  • where子句可以包含任意数目的AND和OR操作符,允许两者进行复杂高级的过滤
  • where 先执行and语句,后执行or语句,如果怕有歧义,需用小括号进行指定顺序
select prod_id,prod_name,prod_price from Products
where prod_price > 10 or prod_price < 5 and vend_id = 'DDL01';
  • 应该为
select prod_id,prod_name,prod_price from Products
where (prod_price > 10 or prod_price < 5) 
        and vend_id = ' DDL01 ';

2.IN操作符(指定条件范围)

select prod_id,prod_name,prod_price from Products
where prod_price in (5,10,20);
  • IN操作符完成了与OR操作符相同的功能,但有更多的优点:
    • 在有很多合法选项时,IN操作符的语法更清楚,更直观
    • 在与其他and 和 or 操作符组合使用IN时,求值顺序更容易管理
    • IN操作符一般比OR执行得更快
    • IN的最大的优点是可以包含其他SELECT语句,能够更动态地建立where子句

3.NOT操作符

  • NOT只有一个功能,就是否定其后所跟的任何条件!
  • NOT从不单独使用,与其他操作符一起使用
  • NOT where子句中用来否定其后条件的关键字
select prod_id,prod_name,prod_price from Products
where NOT vend_id  =  'DLL01';
  • 同下面代码
select prod_id,prod_name,prod_price from Products
where vend_id <> 'DLL01';
  • 为什么使用NOT?
    -简单的子句没什么优势,但是更复杂的子句,NOT是非常有用的,例如在与IN操作符联合使用时,NOT可以非常简单的找出与条件列表不匹配的行.

1.《SQL必知必会》--(更新中...)

标签:排序   pre   set   方向   列排序   sql   cts   href   过滤   

人气教程排行