数据库三大范式及sql的基础

来源:互联网 发布:韩顺平java spring视频 编辑:程序博客网 时间:2024/06/06 00:42

第一范式:确保每列的原子性

第二范式:每个表中的每列都与主键关联

第三范式:每列与主键直接关联,而不是间接关联。

范式是用来确定表是否需要拆分,列是否需要拆分。 数据库保存有组织的数据的容器(一个文件或者是一组文件)

表是某种特定类型数据的结构化清单。(同一种类型)。

模式schema是关于数据库和表的布局及特性的信息。

列column,表中的一个字段,所有表都是由一个或者多个列组成。 (如何正确的分解列非常重要,不仅是由于第一范式,而且当你需要某一个特定的列进行过滤或分类就很重要。)

行row是表中的一条记录。

主键:表中的行应该有一列或者几列唯一表示自己。 一列(一组列)其值可以唯一标识表中每一行。 应该总是定义主键。 主键的条件: 1、任意两行都不能具有相同主键值。 2、每一行都必须有主键(主键值不能为NULL) 3、主键列值不能修改或更新。 4、主键值不能重用。(例如当我们删除了某一行时,接下来新插入的行中不能用这个被删除的主键值)

联合主键用一组列作为主键。

SQL语句和大小写 对SQL语句关键字用大写,对表名列名使用小写,使得代码易于阅读和调试。

检索单列
SELECT Prod_name FROM Products;
检索多列
SELECT prod_id, prod_name, prod_price FROM Products;
SQL语句一般返回的是原始的,无格式的数据。数据的格式化是表示问题而不是检索问题。

检索所有的列
SELECT * FROM Products;
不是确定要输出所有的列时,不要用这个。SQL返回的原始的数据,返回给应用程序让应用程序去表示。

检索不同的值
SELECT DISTINCT vend_id FROM Products;
不能部分使用DISTINCT,DISTINCT关键字作用于所有列,不仅仅是跟在其后的一列。
这里写图片描述
除非指定的两列完全一样,否则所有的行都会被检索出来的。

限制结果
SELECT prod_name FROM Products LIMIT 5;输出前5行
SELECT prod_name FROM Products LIMIT 5 OFFSET 5输出从第6行开始的5行。LIMIT后带的是返回的行数,OFFSET是指定LIMIT从哪开始。
SELECT prod_name FROM Products LIMIT 5,5;

注意第一个被检索的是第0行。
SELECT prod_name FROM Products ORDER BY prod_name;
根据字母排序数据。

多列排序
SELECT prod_name, prod_id, prod_price FROM Products ORDER BY prod_price, prod_name;

按列位置排序
SELECT prod_id, prod_price, prod_name FROM Products ORDER BY 2, 3;

指定排序方向
SELECT prod_id, prod_price, prod_name FROM Product ORDER BY prod_price DESC降序。

SELECT prod_id, prod_price, prod_name FROM Products ORDER BY prod_price DESC, prod_name;

prod_price 按照降序;
prod_name按照升序。

字典排序 A被视为与a相同。

0 0
原创粉丝点击