数据库总结2几个要点

建议大家看W3C的课程http://www.w3school.com.cn/sql/

数据库的重要性 可能Java开发用到的数据库知识会多点 全面点 而我是Android开发的 所以数据库知识并不是一点要掌握的很好

首先来点实践:

安装软件 然后应用软件去创建你的数据库和表 下面总结一些mysql的语句

create database Demo;

show databases;use database_name;drop database_name

create table Demo_tableName (

         age int(10) primary key(约束);

 name varchar(20) union;

);

select * from table_name;

select column_name from table_name ground by where order by desc ;

选择的时候 先用orderby来排序 有升序和降序 然后执行where语句 找出符合where语句条件的那些语句 然后用ground by来分组

另外还有一些比如count函数 统计某一列有多少个数值 count(column_name) 返回的就是column出现的次数 并没有返回null值

sum 统计和 统计数值的总和 语法如下

SELECT SUM(OrderPrice) AS OrderTotal FROM Orders

其实以后这些语法的东西不会的话 可以去查 我就不总结了 因为SQL的语句还是挺庞大的 涉及的内容很多 


现在总结概括一下之前搞不懂的东西

1.复杂MySQL语句执行的顺序  

理解了这个 对于一些SQL的复杂操作是很容易的

如果有多个条件 比如说 有ground by order by where的时候的执行顺序是怎么样的  如果还有左连接和右连接这些又是怎么执行的

搜索了一下 网上这样说

  1. SQL Select语句完整的执行顺序【从DBMS使用者角度】:   
  2.   
  3.   1、from子句组装来自不同数据源的数据;   
  4.   
  5.   2、where子句基于指定的条件对记录行进行筛选;   
  6.   
  7.   3、group by子句将数据划分为多个分组;   
  8.   
  9.   4、使用聚集函数进行计算;   
  10.   
  11.   5、使用having子句筛选分组;   
  12.   
  13.   6、计算所有的表达式;   
  14.   
  15.   7、使用order by对结果集进行排序。   

不知道对不对 就我个人理解而言 执行where语句后面的 如果有分组 先分组 然后使用having刷选分组 最后用order by进行排序 如果有top的话 那么去前几列


2.数据库编码的问题 

之前在做一个网站的时候 数据库编码一直在困扰着我 而且javaWeb的时候页面的编码和request和repose的编码也同样困扰着我

进过我的学习 我只知道一个理论 那就是 你用什么编码编的码 就要用什么编码来解码 

因为你不同的编码的01集合在另外一种编码的时候并不一定就是你之前的那些数据


3.数据库设计的问题

设计表 起来也是很容易的 在后期查询的时候也是很容易的

几大范式:你要设计好一个数据库 表与表之间的关系一定要弄的很明白 他们之间有什么依赖关系都要弄明白 

第一范式 不可分割 一般的数据库都是可以做到的

第二范式 消除非平凡的部分依赖 就是所有的不是主键的列都是要依赖于主键

第三范式 消除传递依赖

第四范式 消除多值依赖 


4.索引的问题

索引的原理就像字典的目录那样 加快查询的速度 只是数据库的索引用的是树来分

这个索引的问题还是挺复杂的 首先你得弄明白数据在磁盘里面的存储样子 然后根据这个样子来存储数据存放的位置

首先什么是索引:

图书馆的例子:一个图书馆那么多书,怎么管理呢?建立一个字母开头的目录,例如:a开头的书,在第一排,b开头的在第二排,这样在找什么书就好说了,这个就是一个聚集索引,可是很多人借书找某某作者的,不知道书名怎么办?图书管理员在写一个目录,某某作者的书分别在第几排,第几排,这就是一个非聚集索引

字典的例子:字典前面的目录,可以按照拼音和部首去查询,我们想查询一个字,只需要根据拼音或者部首去查询,就可以快速的定位到这个汉字了,这个就是索引的好处,拼音查询法就是聚集索引,部首查询就是一个非聚集索引.

看了上面的例子,下面的一句话大家就很容易理解了:聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。就像字段,聚集索引是连续的,a后面肯定是b,非聚集索引就不连续了,就像图书馆的某个作者的书,有可能在第1个货架上和第10个货架上。还有一个小知识点就是:聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。

聚集索引就是物理上连续 非聚集索引就是逻辑上连续

参考这个网址:http://www.cnblogs.com/AK2012/archive/2013/01/04/2844283.html

这个网址的内容还是挺详细的
















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值