数据库学习笔记

  1. 每个SQL语句都是由一个或多个关键字构成的。
  2. SQL语句不区分大小写,且以分号分隔。
  3. 在处理SQL语句时,其中所有空格都会被忽略。
  4. 可以用*通配符检索出名字未知的列。
  5. DISTINCT关键字指示数据库只返回不同的值(它必须直接放在列名的前面,并且作用于所有列,不仅仅是跟在其后的那一列)。
  6. 在指定一条ORDER BY子句时,应该保证它是SELECT语句中最后一条子句。
  7. DESC关键字只应用到直接位于其前面的列名,表示降序。如果想在多个列上进行降序排序,必须对每一列指定DESC关键字。还可以用它的全写DESCENDING。
  8. 只检索所需数据需要指定搜索条件,搜索条件也称为过滤条件。
  9. WHERE子句在表名(FROM子句)之后给出。
  10. 在同时使用ORDER BY和WHERE子句时,应该让ORDER BY 位于WHERE之后。
  11. BETWEEN匹配范围中所有的值,包括指定的开始值和结束值。
  12. 用来联结或改变WHERE子句中的子句的关键字,也称为逻辑操作符。
  13. 在求值过程中,优先级为圆括号>AND>OR。
  14. WHERE子句中的IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。IN取一组由逗号分隔、括在圆括号中的合法值。IN最大的优点是可以包含其它SELECT语句。
  15. WHERE子句中的NOT操作符用于否定其后所跟的任何条件。
  16. 通配符是用来匹配值的一部分的特殊字符。搜索模式是由字面量、通配符或两者组合构成的搜索条件。通配符搜索只能用于文本字段(字符串),非文本数据类型字段不能使用通配符搜索。
  17. %代表搜索模式中给定位置的0个、1个或多个字符。%不会匹配NULL。
  18. _只匹配单个字符,不能多也不能少。
  19. []匹配方括号中任意一个字符,它只能匹配单个字符。
  20. RTRIM()函数用于去掉值右边的所有空格,LTRIM()函数用于去掉值左边的所有空格,TRIM()函数用于去掉值左右两边的所有空格。
  21. SQL支持列别名。别名是一个字段或值的替换名,有时也称为导出列。别名用AS关键字赋予。
  22. Now()函数返回当前日期和时间。
  23. SOUNDEX()函数用法。
  24. 不管使用何种形式的字符串数据类型,字符串值都必须括在单引号内。
  25. 聚集函数是对某些运行的函数,计算并返回一个值。
  26. AVG()只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个AVG()函数。AVG()函数忽略列值为NULL的行。
  27. 如果指定列名,则COUNT()函数会忽略指定列的值为空的行,但如果COUNT()函数中用的是*号,则不忽略。
  28. MAX()函数忽略列值为NULL的行,它要求指定列名。在用于文本数据时,MAX()返回按该列排序后的最后一行。
  29. MIN()函数忽略列值为NULL的行,它要求指定列名。在用于文本数据时,MIN()返回该列排序后最前面的行。
  30. SUM()函数忽略列值为NULL的行。
  31. WHERE过滤行,HAVING过滤分组。WHERE在数据分组前进行过滤,HAVING在数据分组后进行过滤。
  32. 作为子查询的SELECT语句只能查询单个列。
  33. 可伸缩指能够适应不断增加的工作量而不失败。设计良好的数据库或应用程序称为可伸缩性好。
  34. 完全限定列名:用一个句点分隔表名和列名。
  35. 由没有联结条件的表关系返回的结果为笛卡尔积。检索出的行的数目将是第一个表中的行数乘以第二个表中的行数。有时候,返回笛卡尔积的联结,也称叉联结。
  36. 等值联结基于两个表之间的相等测试,也称为内联结。
  37. 表别名只在查询执行中使用。与列别名不一样,表别名不返回到客户端。
  38. 使用UNION时,重复的行会被自动取消。使用UNION ALL,DBMS不取消重复的行。如果确实需要每个条件的匹配行全部出现(包括重复行),就必须使用UNION ALL,而不是WHERE。
  39. 在用UNION组合查询时,只能使用一条ORDER BY子句,它必须位于最后一条SELECT语句之后。
  40. 如果表的定义允许,则可以在INSERT操作中省略某些列。省略的列必须满足以下某个条件:1、该列定义为允许NULL值(无值或空值);2、在表定义中给出默认值。这表示如果不给出值,将使用默认值。
  41. INSERT SELECT中SELECT语句可以包含WHERE子句,以过滤插入的数据。INSERT SELECT可以用一条INSERT插入多行,不管SELECT语句返回多少行,都将被INSERT插入。
  42. INSERT SELECT将数据添加到一个已经存在的表,SELECT INTO将数据复制到一个新表。INSERT SELECT导出数据,SELECT INTO导入数据。
  43. 在使用SELECT INTO时,不管从多少个表中检索数据,数据都只能插入到一个表中。
  44. 在更新多个列时,只需要使用一条SET命令,每个“列=值”对之间用逗号分隔(最后一列之后不用逗号)。
  45. 要删除某个列的值,可设置它为NULL(假如表定义允许NULL值)。NULL表示没有值,空字符串‘’是一个值。
  46. DELETE语句从表中删除行,甚至是删除表中所有行,但是它不删除表本身。可以使用TRUNCATE TABLE语句从表中删除所有行,它完成相同工作,并且速度更快(因为不记录数据的变动)。
  47. 只有不允许NULL值的列可作为主键,允许NULL值的列不能作为唯一标识。
  48. 视图的一些常见规则和限制:1、与表一样,视图必须唯一命名;2、视图可以嵌套;3、视图不能索引,也不能有关联的触发器或默认值。
  49. 覆盖(或更新)视图,必须先删除它,然后再重新创建。
  50. 视图为虚拟的表。它们包含的不是数据而是根据需要检索数据的查询。
  51. 存储过程就是为以后使用而保存的一条或多条SQL语句。存储过程三个优点:简单、安全、高性能。
  52. 应该注释所有代码,存储过程也不例外。增加注释不影响性能,因此不存在缺陷(除了增加编写时间外)。对代码进行注释的标准方式是在之前放置-- (两个连字符)。
  53. SQL Server中称这些自动增量的列为标识字段,而其它DBMS称之为自动编号或序列。
  54. 事务指一组SQL语句;回退指撤销指定SQL语句的过程;提交指将未存储的SQL语句结果写入数据库表;保留点指事务处理中设置的临时占位符,可以对它发布回退(与回退整个事务处理不同)。
  55. 事务处理不能回退SELECT语句、CREATE或DROP操作。
  56. SQL的ROLLBACK命令用来回退(撤销)SQL语句。
  57. 一般的SQL语句都是针对数据库表直接执行和编写的。这就是所谓的隐式提交,即提交(写或保存)操作是自动进行的。在事务处理块中,提交不会隐式进行。进行明确的提交,使用COMMIT语句。
  58. 要支持回退部分事务,必须在事务处理块中的合适位置放置占位符。这样如果需要回退,可以回退到某个占位符。在SQL中,这些占位符称为保留点。每个保留点都要取能够标识它的唯一名字,以便在回退时,DBMS知道回退到何处。可以在SQL代码中设置任意多的保留点,越多越好。
  59. SQL查询所检索出的结果称为结果集。
  60. 游标是一个存储在DBMS服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。使用DECLARE语句创建游标。使用OPEN CURSOR语句打开游标。CLOSE语句用来关闭游标。
  61. 约束是指管理如何插入或处理数据库数据的规则。
  62. 外键有助于防止意外删除。
  63. 唯一约束用来保证一列(或一组列)中的数据是唯一的。它们类似于主键,但存在以下重要区别:1、表可以包含多个唯一约束,但每个表只允许一个主键;2、唯一约束列可包含NULL值;3、唯一约束列可修改或更新;4、唯一约束列的值可重复使用;5、与主键不一样,唯一约束不能用来定义外键。
  64. 检查约束用来保证一列(或一组列)中的数据满足一组指定的条件。
  65. 索引用来排序数据以加快搜索和排序操作的速度。索引必须唯一命名。索引改善检索操作的性能,但降低了数据插入、修改和删除的性能,因为在执行这些操作时,DBMS必须动态地更新索引。
  66. 触发器是特殊的存储过程,它在特定的数据库活动发生时自动执行。触发器内的代码具有以下数据的访问权:1、INSERT操作中的所有新数据;2、UPDATE操作中的所有新数据和旧数据;3、DELETE操作中删除的数据。
  67. 一般来说,约束的处理比触发器快,因此在可能的时候,应该尽量使用约束。
  68. 一般说来,需要保护的操作有:1、对数据库管理功能(创建表、更改或删除已存在的表等)的访问;2、对特定数据库或表的访问;3、访问的类型(只读、对特定列的访问等);4、仅通过视图或存储过程对表进行访问;5、创建多层次的安全措施,从而允许多种基于登录的访问和控制;6、限制管理用户账号的能力。安全性使用SQL的GRANT和REVOKE语句来管理。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值