sql小注意

1.         Access 数据库中like语句中必须用*代表多个字符,而不是%

2.         一般情况下!=<>可以互换,但是Accesss数据库中只支持<>

3.         如果想根据多个列排序,其中每列都逆序排列时,应该再每个列后都加上DESC关键字.

4.         sql关键字不区分大小写。但是表名,列名可能区分大小写,最好都自己区分大小写以免发生错误!

5.         最好不要用*来选择全部列,因为获取不需要的列会影响性能。

6.         注意固定长度字符列中的空格,比如长度为50字符的列如果输入数据是17个字符,数据库会自动再后面加上33个空格。所以当再次操作数据时候要注意后面的空格。

7.         Access使用?不是_表示单个字符.

8.         Access使用!不是^表示否定集合,比如[!JM]而不是[^JM]

9.         []集合通配符不是所有的DBMS都支持。

10.     Access, Sql ServerSybase支持+来连接字符串。DB2,Oracle,PostgreSQL,Sybase 支持||.具体细节查看文档.

11.     MySQL不支持+也不支持||,而是使用CONCAT()函数来连接字符串。

12.     ||MYSQL中是用来表示OR, &&表示 AND.

13.     AVG()只能用来计算单个数字列的平均值,要想计算多个列必需使用多个AVG()

14.     Where是再数据被分组前过滤数据,Having是分组后过滤数据。被where排除的行不会被包括在分组中。这可能会改变被计算的值从而影响那个分组被过滤掉。因为Having可能会根据这些值来过滤分组。

15.     子查询只能取单个列,取多个列会返回错误。

16.     多表连接时候如果有相同的列,必需用全名来引用列。

17.     连接的表越多,性能越低!

18.     Oracle不支持AS 关键字,Oracle中使用别名时候直接跟别名不用加AS。比如使用Customers C 代替 Customers AS C

19.     外连接有两种,1、左连接 2、右连接。这两种连接基本一样。唯一区别是看连个表出现的顺序。

20.     Access, MySQL ,SQL Server Sybase不支持全连接。

21.     想要更快的删除表所有行,不要用DELETE,使用TRUNCATE TABLE 语句,这个语句完成一样的事情但是更快。因为数据变化不需要写入日志。

22.     要替换已有的表,应该先删除旧表,再添加新表。不能直接覆盖。

23.     使用ALTER TABLE修改表时候最好先备份。因为数据库表的改变是不可以撤销的。添加没用的列,就不能再删除了。删除有用的列就会丢失该列的所有数据。

24.     INSERT UPDATE DELETE语句可以回滚。但是SELECT不能。也不能回滚CREATE DROP语句。这些语句虽然可以用再事务语句块中,但是当你回滚事务时候这些语句是不会撤销的。

25.     约束比触发器更快。所以应该尽可能的使用约束!

原文地址:https://www.cnblogs.com/xhan/p/1216177.html