SQL学习整理(一)之了解SQL
在做数据挖掘比赛,或者参与其他一些项目的时候越来越感觉数据库知识的重要性,所以想抽出时间学习一下数据库。数据库知识繁杂,好多概念混淆(我还没弄明白好多知识),所以我只能自己边学习,边在博客上总结。我使用的参考资料是《SQL必知必会》,网上很多人推荐这是入门的好教程,我就参考学习。还有斯坦福大学的coursera课程《Introduction to Database》据说挺不错的,但是我没有找到(主要是要翻墙,不然加载不出来)。
好了,别的不多扯,我们来开启SQL之旅吧。
目录
1. 数据库基础
生活中我们一直在使用数据库,比如登陆网站依靠数据库来验证用户名和密码,网站搜索,甚至是ATM取款。但是数据库到底是什么我们并不清楚,接下来我们来了解一下数据库的一些基本术语。
数据库
数据库是一个以某种有组织的方式存储的数据集合,将数据库比作文件柜,这个文件柜是一个存储数据的物理位置。容易和数据库软件混淆,数据库软件叫做数据库管理系统(DBMS),数据库是通过DBMS创建和操纵的容器。
表
表是一种结构化的文件,用来存储某种特定类型的数据。一个数据库中每个表都有一个唯一的名字来标识,但是不同的数据库中完全可以使用相同的表名。
表具有一些特性,这些特性决定了表存储什么样的数据,数据如何分解,数据在表中如何存储。这种特性的描述就是所谓的模式,可以用来描述数据库中指定的表,也可以是整个数据库。
列和数据类型
表中的一个字段,相当与矩阵中的一列,而且这一列必须是相同的数据类型,如数值型或者字符型。数据类型在不同的DBMS中具有不同的名称(除了一些比较基本的相同之外),比较头疼。
行
表中的一个记录,水平的表示行。
主键
唯一标识表中每行的这个列。
满足一下条件的列都可以作为主键:
- 任意两行都不具有相同的主键值;
- 每一行都必须具有一个主键值(主键列不允许NULL值);
- 主键列中的值不允许修改或更新;
- 主键值不能重用(如果某行从表中删除,它的主键不能赋给以后的新行)。
当然也可以多个列作为一个主键,依然要满足上述条件。
2. 什么是SQL
SQL(structured query languages),是结构话查询语言,专门用来与数据库沟通的语言。
3. 总结
自我理解(不知道准确不准确):DBMS调用SQL去创建数据库(物理存储),然后再用SQL去查询,处理数据库中的内容。