SQL必知必会笔记

来源:互联网 发布:淘宝咸鱼会不会被骗 编辑:程序博客网 时间:2024/05/18 05:32

1.sql语句不区分大小写。sql2005 数据库 右键属性---》选项;修改排序规则。

2.按相对位置排序 例如order by 2,3

3.在多个列上进行降序排序,必须对每个列指定DESC关键字。

4.在对文本性的数据进行排序时,A与a默认相同的。依赖于数据库如何设置。

5.order by子句对检索出的数据进行排序。这个子句必须是select语句中的最后一条子句。

6.SQL过滤与应用过滤:在客户机上过滤数据损失性能,带宽。

7.where条件:单引号用来限定字符串。如果将值与字符串进行比较,则需限定引号。如果是数值列进行比较,则不需要引号。

8.between匹配范围中所有的值,包括指定的开始和结束值。

9.空值检查:NULL与字段包含0、空字符串或仅仅包含空格不同。

高级数据过滤

10.IN操作符完成与OR相同的功能。IN比OR执行快。IN中可以包含select语句。

11.NOT可以用在要过滤的列前 例如:where not field=’’

12.在复杂的子句中NOT非常有用。例如与IN联合适用时。

用通配符过滤

13.%标识任何字符出现任意次数。代表搜索模式中给定位置的0个、1个或多个字符。

14.下划线只匹配单个字符。不能多也不能少。

15.方括号通配符用来指定一个字符集,它必须匹配指定位置(通配符的位置)的一个字符。此通配符可以用前缀字符^(脱字符)来否定。

16.通配符搜索的处理一般要比前面讨论的其他搜索所花时间更长。

  • 不要过分使用通配符。如果其他操作符能达到相同的目的,应该适用其他操作符。
  • 在确实需要使用通配符时,除非绝对必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。
  • 仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。
  • 创建计算字段

  • 17拼接:将值连接在一起构成单个值。用加号。

  • 汇总数据

  • sql中的聚集函数:

  • avg()返回某列的平均值;
  • count()返回某列的行数;
  • max()返回某列的最大值;
  • min()返回某列的最小值;
  • sum()返回某列值之和;

18.count(*):对表中行的数目进行计数,不管表列中包含的是空值(Null)还是非空值。

19.count(column):对特定列中具有值的进行行计数,忽略Null值。

20.对非数值数据使用max() 通常返回最后一行。忽略列值为null 的行。

21.max(),min(),sum()忽略列值为null的行。

22.distinct:值包含不同的值。如果指定列名,则distinct只能用于count()。distinct不能用于count(*)。

23.在指定别名时,不应该使用表中实际的列名。以免产生模糊的错误消息。

分组数据

24.group by子句中列出的每个列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在select中使用表达式,则必须在group by子句中指定相同的表达式。不能使用别名。

25.大多数sql实现不允许group by列带有长度可变的数据类型(如文本或备注型字段)。

26.除了聚集计算语句外,select语句中的每个列都必须在group by子句中给出。

27.如果分组列中具有null值,则null将作为一个分组返回。如果列中有多行null值,它们将分为一组。

28.group by子句必须出现在where子句之后,order by 子句之前。

29.where过滤行,而having过滤分组。where在数据分组前进行过滤,having在数据分组后过滤。

30.having与where非常类似,如果不指定group by,则可将它们作为相同的东西对待。但是应该仅在出现group by子句时才用having,而where子句用于标准行级过滤。

31.一般在使用group by子句时,应该也给出order by子句。这是保证数据正确排序的唯一方法。

32.select子句顺序

select-->  from --> where-->  group by --> having --> order by

利用子查询进行过滤

33.做为子查询的select 语句只能查询单个列。

联结表

34.设计良好的数据库或应用程序称之为可伸缩性好(scale well).

35.由没有联结条件的表关系返回的结果是笛卡尔积。行数是第一个表中的行数乘以第二个表中的行数。

36.不要联结不必要的表。联结的表越多,性能下降越厉害。指定别名可以不写 as。

37.许多DBMS处理联结远比处理子查询快的多

组合查询

38.任何具有多个where子句的select语句都可以作为一个组合查询给出。Union:执行两条select语句,并把输出组合成单个查询结果集。

39.union必须由两条或两条以上的select语句组成,语句间用union分隔;union中每个查询必须包含相同的列、表达式或聚集函数;列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含转换的类型。

40.union从查询结果集中自动去除了重复的行。union all可以返回所有匹配行。可以出现重复行。

插入数据

一般不要使用没有明确给出列的列表的insert语句。

41.插入检索出的数据:insert通常只插入一行。为了插入多行必须执行多个insert语句。insert select是个例外,它可以用单条insert插入多行。