数据库的粗浅认识
这个假期是一个很特别的假期,不仅是要复习考研,学二专业,公司也有培训课。我这个假期给了自己一个还算顺眼的口号,美其名曰:“假期也疯狂,乘风有破浪!”
开课第二天,适当的做一个自我小总结。其实第二天没来上课,说来惭愧,但是在数据库上还有一点点心得。看了各位同学的博文,自己也有些感触。其实我的理解没有他们那么深,但是我喜欢追根溯源,那大家就按照我的思路,看看我的拙见吧。
先说这个数据库,我们用来干什么,顾名思义是存东西的。我们可以建很多的database,但是我们现阶段的操作只能在一个database中进行。课上做练习的时候有位同学一个database中建一张表,两张表就联系不起来了。我来通俗的说一下原因,就像我们仓库存东西,放到一个仓库里的应该是同类的,是可能有关联的,如果老板把牙膏放在1号仓库,牙刷放在10号仓库,那么找起来不见得方便。在一个仓库里我们就可以操作,地方不够了挪挪地方,合理利用空间,雕牌洗衣粉和立白的洗衣粉放在一起(当然分类的方法很多,你可以按照牌子放一起,也可以按照作用分一起,看老板的心情)。如果放在两个仓库,我们找东西时(比如刚才的牙膏和牙刷),就要把他们从不同的仓库搬出来看看对不对,需要两队人马,东西都找出来后,出来碰头商量,还不一定记得住,再反工。我们智能的电脑为了避免这种不必要的资源消耗和浪费,索性就不让你这么干,一样的东西统一放在一个仓库里。
说完的数据库的一个小问题,我们看看他的操作,无非就是增删查该,下面列出一些基本语句的关键词。
SQL功能 |
核心动词 |
说明 |
数据库定义 |
CREATE,DROP,ALTER |
创建/修改数据库对象,如表,用户,序列、索引、主外键等。 |
数据查询 |
SELECT |
执行数据查询, |
数据操作 |
INSERT,UPDATE,DELETE |
增、删、改操作 |
数据控制 |
BRANT,REVOKE |
用户权限控制 |
当然还有一些函数
函数名 |
用途 |
COUNT(*) |
计算总行数 |
SUM(列名) |
计算某例值的总和 |
AVG(列名) |
计算某例值的平均值 |
MAX(列名) |
查找某例值的最大值 |
MIN(列名) |
查找某例值的最小值 |
DISTINCT(列名) |
不显示列值重复的行 |
我们还要看看数据类型
SQL数据类型 |
Java类型 |
说明 |
CHAR, VARCHAR, LONGVARCHAR |
String |
字符串类型 |
NUMERIC, DECIMAL |
java.math.BigDecimal |
大数据类型 |
BIT |
boolean |
布尔型 |
TINYINT |
byte |
Byte型 |
SMALLINT |
short |
|
INTEGER |
int |
|
BIGINT |
long |
|
REAL |
float |
|
FLOAT, DOUBLE |
double |
|
BINARY, VARBINARY, LONGVARBINARY |
byte[] |
二进制 |
DATE |
java.sql.Date |
时间类型 |
TIME |
java.sql.Time |
|
TIMESTAMP |
java.sql.Timestamp |
|
列出这么多,我们还要提到主外键,因为这是表及表与表之间的重要约束。
首先我们要明确建立数据库的三范式,因为这是数据库必须遵循的规则,否则这个数据库就不合格。那什么是三范式呢?我们把他列出来吧。
第一范式:不能有重复列
第二范式:每一个业务实体都能唯一的表示他的身份,有唯一的主键。即:在同一个表里不能有二义性。说白了就是PK的问题。
第三范式:各字段属性指向另一张表中一个能表示其唯一身份的属性。说白了就是FK的问题。
有了三范式,我们可以按照这个规定来建立数据库。好,下面我们要详细的了解几个概念:主键、外键、约束。
按照我的理解,主键就是表的唯一性表示,外键就是以母表的主键作为从表的外键,约束就是对一条记录或属性的限制条件。
我们又有了新的概念,母表和从表,这个大家一直都会模糊,现在简单通俗的说,母表是要引用主键的表,从表是引用别人主键的表。
好,讲了这么多,我们对数据库有了初步的认识,个人认为最好能够找几个例子练习一下,多敲即便sql语句最实在,虽然有专门的工具可以帮你完成,但是敲一遍还是理解更为深刻的。
最后给大家一个入门的教程网站,免得大家找来找去不方便,这个讲的比较基础,但是不全,比较高级的就没有了。
链接如下:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html