表具有一些特性,这些特性定义了数据在表中如何存储,包含存储什么样的数据,数据如何分解,各部分信息如何命名等信息。描述表的这组信息就是所谓的模式(schema),模式可以用来描述数据库中特定的表,也可以用来描述整个数据库(和其中表的关系)。
模式--关于数据库和表的布局及特性的信息。
Sqlserver中新建一个数据库的话默认模式是dbo。
任意两行都不具有相同的主键值;
每一行都必须具有一个主键值(主键列不允许NULL值);
主键列中的值不允许修改或更新;(Sqlserver中只对自增长列的主键适用)
主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)。(Sqlserver中只对自增长列的主键适用)
使用通配符--一般而言,除非你确实需要表中的每一列,否则最好别使用*通配符。虽然使用通配符能让你自己省事,不用明确列出所需列,但检索不需要的列通常会降低检索和应用程序的性能。
检索未知列--使用通配符有一个大优点。由于不明确指定列名(因为星号检索每一列),所以能检索出名字未知的列。
不能部分使用DISTINCT--DISTINCT关键字作用于所有的列,不仅仅是跟在其后的那一列。除非指定的多个列完全相同,否则所有的行都会被检索出来。
按列位置排序--除了能用列名指出排序顺序外,ORDER BY还支持按相对列位置进行排序。
ORDER BY 2表示按SELECT清单中的第二个列进行排序。
缺点。首先,不明确给出列名有可能造成错用列名排序。其次,在对SELECT清单进行更改时容易错误地对数据进行排序(忘记对ORDER BY子句做相应的改动)。最后,如果进行排序的列不在SELECT清单中,显然不能使用这项技术。
如果想在多个列上进行降序排序,必须对每一列指定DESC关键字。
在对文本性数据进行排序时,A与a相同吗?a位于B之前,还是Z之后?这些问题不是理论问题,其答案取决于数据库的设置方式。
在Sqlserver中,是由字符集控制的。
_CS表示区分大小
_CI表示不区分大小写