关闭

【MySQL】MySQL 详解教程

标签: mysql数据库程序员sql数据
347人阅读 评论(0) 收藏 举报
分类:

介绍一下关系型数据库,让大家了解数据库比文件储存的有点。这些优点包括:

1.关系型数据库比普通文件的数据访问速度更快。

2.关系型数据库更容易查阅并提取满足特定条件的数据。

3.关系型数据库更具有专门的内置机制处理并发访问,作为程序员,不需要为此担心。

4.关系型数据库可以提供对数据的随即访问。

5.关系型数据库具有内置的权限系统。



关系数据库的概念

至今为止,关系数据库是最常用的数据库类型。在关系代数方面,它们具有很好的理论基础。当使用关系数据库的时候,并不需要了解关系理论(这是一件好事),但是还是需要理解一些关于数据库的基本概念



MySQL数据库是一个基于结构化数据的开源数据库。SQL语句是MySQL数据库中核心语言。不过在MySQL数据库中执行SQL语句,需要小心两个陷阱



陷阱一:空值不一定为空

  空值是一个比较特殊的字段。在MySQL数据库中,在不同的情形下,空值往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空值。但是如果将一个空值的数据插入到TimesTamp类型的字段中,空值就不一定为空。此时为出现什么情况呢(如下图)?

MySQL中处理空值时要小心两个个陷阱

  我先创建了一个表。在这个表中有两个字段:User_id(其数据类型是int)、Date(其数据类型是TimesTamp)。现在往这个表中插入一条记录,其中往Date字段中插入的是一个NULL空值。可是当我们查询时,其结果显示的却是插入记录的当前时间。这是怎么一回事呢?其实这就是在MySQL数据库中执行SQL语句时经常会遇到的一个陷阱:空值不一定为空。在操作时,明明插入的是一个空值的数据,但是最后查询得到的却不是一个空值。

  在MySQL数据库中,NULL对于一些特殊类型的列来说,其代表了一种特殊的含义,而不仅仅是一个空值。对于这些特殊类型的列,各位读者主要是要记住两个。一个就是笔者上面举的TimesTamp数据类型。如果往这个数据类型的列中插入Null值,则其代表的就是系统的当前时间。另外一个是具有auto_increment属性的列。如果往这属性的列中插入Null值的话,则系统会插入一个正整数序列。而如果在其他数据类型中,如字符型数据的列中插入Null的数据,则其插入的就是一个空值。

  陷阱二:空值不一定等于空字符

  在MySQL中,空值(Null)与空字符(’’)相同吗?答案是否定的。请大家先来看下图的演示。

MySQL中处理空值时要小心两个个陷阱

  在同一个数据库表中,同时插入一个Null值的数据和一个’’空字符的数据,然后利用Select语句进行查询。最后显示的结果如上图所示。显然其显示的结果是不相同的。从这个结果中就可以看出,空值不等于空字符。这就是在MySQL中执行SQL语句遇到的第二个陷阱。在实际工作中,空值数据与空字符往往表示不同的含义。数据库管理员可以根据实际的需要来进行选择。如对于电话号码等字段,可以默认设置为空值(表示根本不知道对方的电话号码)或者设置为空字符(表示后来取消了这个号码)等等。由于他们在数据库中会有不同的表现形式,所以数据库管理员需要区别对待。笔者更加喜欢使用空值,而不是空字符。这主要是因为针对空值这个数据类型有几个比较特殊的运算字符。如果某个字段是空字符,数据库中是利用字段名称来代替。相反,如果插入的是空值,则直接显示的是NULL。这跟其他数据库的显示方式也是不同的。

  一是IS NULL 和IS NOT NULL关键字。如果要判断某个字段是否含用空值的数据,需要使用特殊的关键字。其中前者表示这个字段为空,后者表示这个字段为非空。在Select语句的查询条件中这两个关键字非常的有用。如需要查询所有电话号码为空的用户(需要他们补充电话号码信息),就可以在查询条件中加入is not null关键字。

MySQL中处理空值时要小心两个个陷阱

  二是Count等统计函数,在空值上也有特殊的应用。如现在需要统计用户信息表中有电话号码的用户数量,此时就可以使用count函数、同时将电话号码作为参数来使用。因为在统计过程中,这个函数会自动忽略空值的数据。此时统计出来的就是有电话号码的用户信息。如果采用的是空字符的数据,则这个函数会将其统计进去。如下图所示,统计刚才建立的两条记录时,系统统计的结果是1,而不是2。可见系统自动将Null值的数据忽略掉了。


-----------------------------------------------------------------

原文地址:https://neveryu.github.io/guestbook/

Githubhttps://github.com/Neveryu

新浪微博http://weibo.com/Neveryu


 





更多学习资源请私信我的新浪微博...


0
0
查看评论

MySQL详解(18)-----------分页方法总结

---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适应场景: 适用于数据量较少的情况(元组百/千级) ---原因/缺点: 全表扫描,速度会很慢 且 有的数据库结果集返回不稳定(如某次返回...
  • u011225629
  • u011225629
  • 2015-07-06 16:17
  • 2726

MySQL Cluster技术详解

1 MySQL Cluster简介     MySQL集群是一种在无共享架构(SNA,Share Nothing Architecture)系统里应用内存数据库集群的技术。这种无共享的架构可以使得系统使用低廉的硬件获取高的可扩展性。 MySQL集群是一种分布式设计,目标是要达到...
  • JesseYoung
  • JesseYoung
  • 2014-08-21 10:42
  • 3673

MySQL快速入门(一)—Java进阶学习第十五天

数据库简介 MySQL数据库 MySQL 安装与配置 MySQL数据库服务器、数据库和表关系 数据在数据库中的存储方式 SQL语句 SQL的简介 SQL语言分类 数据库(CURD — 增删改查) 数据表(CURD—增删改查) 数据—CRUD 备份、恢复数据库
  • lutianfeiml
  • lutianfeiml
  • 2016-05-11 11:18
  • 6413

MySQL系列教程(一)

摘要MySQL的最初的核心思想,主要是开源、简便易用。其开发可追溯至1985年,而第一个内部发行版本诞生,已经是1995年。到1998年,MySQL已经可以支持10中操作系统了,其中就包括win平台。此文档将从安装开始带领着读者一步步深入了解mySQL相关功能,该文由作者多年实战经验的总結而组成,其...
  • lifetragedy
  • lifetragedy
  • 2016-09-19 09:55
  • 12063

史上最简单的 MySQL 教程(二十三)「数据的高级操作 之 查询(上)」

数据的高级操作查询数据(上) 基本语法: select + 字段列表/* + from + 表名 + [where 条件]; 完整语法: select + [select 选项] + 字段列表/* + from + 数据源 + [where 条件] + [group by 子句] + [havin...
  • qq_35246620
  • qq_35246620
  • 2017-06-25 19:09
  • 2646

mysql5.7免安装版配置过程详解

1.首先现在mysql5.7的源码包,建议官方下载,网址http://dev.mysql.com/downloads/mysql/ 上图为下载页面 2.下载完成后,解压到你需要的目录,将my-default.ini 更名my.ini ,在环境变量PATH里添加解压后的bin目录,例如我的...
  • u010342973
  • u010342973
  • 2017-03-31 12:26
  • 852

MySQL系列教程二---触发器

1. 触发器简介触发器是一个特殊的存储过程,执行存储过程需要使用CALL语句来调用,但是触发器的执行不需要用CALL语句调用,也不需要手工启动,只要的当一个预定义的事件发生时,就会被MYSQL自动调用。比如当对fruits表进行INSERT,DELETE或UPDATE操作时就会激活它。触发器可以查询...
  • wayne980
  • wayne980
  • 2017-03-03 18:07
  • 187

mysql高级教程(一)

今天我们来学习一些mysql的高级使用教程。 首先,我们用select语句来查看一下这个persons的表,注意这三句的结果 SQL LIKE 操作符 我们先来试试用 Like 找出lastname是zh开头的人 这里的 % 是一个通配符 这里我们又...
  • cmhinseu
  • cmhinseu
  • 2015-02-03 20:33
  • 3066

MYSQL语句大全(SQL 高级教程)【上】

SQL 高级教程 Top            TOP 子句用于规定要返回的记录的数目。                  ...
  • JF_2012
  • JF_2012
  • 2015-12-31 17:57
  • 4195

MySQL必知必会——命令行使用MySQL图文教程

——Navicat等数据库辅助软件的出现极大地方便了我们使用MySQL、Oracle、SQL Server等数据库,但是作为一名有实力、有逼格的后台开发工程师,不会使用命令行操作数据库是说不过去的,下面介绍一些最常用的MySQL命令,十分钟松松掌握! 一、进入命令提示符界面 1、windows+...
  • zhangliangzi
  • zhangliangzi
  • 2016-05-31 18:30
  • 2584
    个人资料
    • 访问:153638次
    • 积分:2709
    • 等级:
    • 排名:第15807名
    • 原创:119篇
    • 转载:14篇
    • 译文:0篇
    • 评论:9条
    文章分类
    最新评论