mysql mod如何使用_mysql 操作详解
1.0 创建并选择数据库
2.0 创建表
VARCHAR适合于name、owner和species列,因为这些列值的长度是可以变化的,这些列的长度不必都相同,而且不必是20。你可以从1到65535选择一个最合理的值作为列属性值的长度。如果选择得不合适,MySQL提供一个ALTER TABLE语句来修改表格(后来证明你需要一个更长的字段)。
DATE (日期)数据类型
3.0 将数据加载到表中
2.0 从表检索信息
1.0 选择所有的数据
2.0 选择特殊行
3.0 选择特殊列
4.0 行分类
5.0 日期计算
可以使用函数TIMESTAMPDIFF()计算当前日期的年和出生日期之间的差也可以按照直接使用语句(YEAR(CURDATE())-YEAR(birth))计算,其中函数CURDATE()是计算当前的日期。如果当前日期的日历年比出生日期早,则减去一年。以下代码是查询每个宠物的出生日期、当前日期和年龄(以年作为计算单位),其中关键字age是年龄这个计算结果的标签。
mysql> SELECT name, birth, CURDATE(),
-> TIMESTAMPDIFF(YEAR,birth,CURDATE()) AS age
-> FROM pet;
# 比较这两个查询语句的结果
mysql> SELECT name, birth, CURDATE(),
-> (YEAR(CURDATE())-YEAR(birth))
-> - (RIGHT(CURDATE(),5)
-> FROM pet;
此处,YEAR()提取日期的年部分,RIGHT()提取日期最右面5个字符的MM-DD (月份和日期)部分。MM-DD值的表达式部分的值一般为1或0,如果CURDATE()的年比birth的年早,则年份应减去1。整个表达式看起来有些难懂,使用age来使输出的列标记更有意义。
尽管查询可行,但是人类的欲望是永无止尽的,如果以某个顺序排列行,那么会使得浏览结果变得更加轻松。添加ORDER BY name子句则能够实现按照名字进行排序输出。
mysql> SELECT name, birth, CURDATE(),
-> (YEAR(CURDATE())-YEAR(birth))
-> - (RIGHT(CURDATE(),5)
-> AS age
-> FROM pet ORDER BY name;
为了按age而非name排序输出,只要再使用一个ORDER BY子句:
mysql> SELECT name, birth, CURDATE(),
-> (YEAR(CURDATE())-YEAR(birth))
-> - (RIGHT(CURDATE(),5)
-> AS age
-> FROM pet ORDER BY age;
可以使用一个类似的查询来确定已经死亡动物的死亡年龄。你通过检查death值是否为NULL来确定是哪些动物已经死亡,然后对于那些非NULL值的动物,需要计算出death和birth值之间的差来知道他们在这个世界上所存在的时间:
mysql> SELECT name, birth, death,
-> (YEAR(death)-YEAR(birth)) - (RIGHT(death,5)
-> AS age
-> FROM pet WHERE death IS NOT NULL ORDER BY age;查询使用death IS NOT NULL而非death != NULL,因为NULL是特殊的值,不能使用普通比较符来比较。
如果你想要知道哪个动物下个月过生日怎么办?对于这类计算,年和天是无关的,你只需要提取birth列的月份部分。MySQL提供几个日期方面的提取函数,例如YEAR()、MONTH()和DAYOFMONTH()。在这里MONTH()是我们需要的函数。为了观察它的实现原理,可以运行以下简单的查询显示birth和MONTH(birth)的值:
mysql> SELECT name, birth, MONTH(birth) FROM pet;
找出下个月生日的动物也很简单。假定当前月是4月,那么月值是4,你需要找在5月出生的动物,方法是:
mysql> SELECT name, birth FROM pet WHERE MONTH(birth) = 5;
如果当前月份是12月,就有点复杂了。你不能只把1加到月份数(12)上并寻找在13月出生的动物,因为没有这样的月份。相反,你应寻找在1月出生的动物。
你甚至可以编写查询,不管当前月份是什么它都能执行。因此不必在查询中使用一个特定的月份,DATE_ADD()允许在一个给定的日期上加上时间间隔。如果在NOW()值上加上一个月,然后用MONTH()提取月份,产生生日所在月份:
mysql> SELECT name, birth FROM pet
-> WHERE MONTH(birth) = MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH));
完成该任务的另一个方法是加1得出当前月份的下一个月(在使用取模函数MOD()后,如果月份当前值是12,则“返回”到值0):
mysql> SELECT name, birth FROM pet
-> WHERE MONTH(birth) = MOD(MONTH(CURDATE()), 12) + 1;
--注意,MONTH返回在1和12之间的一个数字,且MOD(something,12)返回在0和11之间的一个数字,因此必须在MOD()后加1,否则我们将从11月(11)跳到1月(1)
6.0 NULL 值操作
7.0 模式匹配
8.0 计算行数
数据库经常用于回答这个问题,“查询出某个类型的数据在表中出现的频数是多少?”
例如,你可能想要知道你有多少宠物,或每位主人有多少宠物,或你可能想要对你的动物进行各种类型的普查。
计算你拥有动物的总数目与“在pet表中有多少行?”是同样的问题,因为每个宠物都对应一条记录。COUNT(*)函数计算行数,所以计算动物数目的查询应为:
mysql> SELECT COUNT(*) FROM pet;
在前面的章节中,你检索了拥有宠物的人的名字。如果你想要知道每个主人有多少宠物,你也可以使用COUNT(*)函数:
mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner;
--注意,使用GROUP BY对每个owner的所有记录分组,没有它,你会得到错误消息:
mysql> SELECT owner, COUNT(*) FROM pet;
ERROR 1140 (42000): Mixing of GROUP columns (MIN(),MAX(),COUNT(),...)
with no GROUP columns is illegal if there is no GROUP BY clause
COUNT(*)和GROUP BY以各种形式分类你的数据。下列例子显示出以不同方式进行动物普查操作。
查看每种动物的数量:
mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;
查看每种性别的动物数量:
mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex;
按种类和性别组合分类的动物数量:
mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;
若使用COUNT(*),你不必检索整个表。例如, 当只对狗和猫进行查询时,应为:
mysql> SELECT species, sex, COUNT(*) FROM pet
-> WHERE species = 'dog' OR species = 'cat'
-> GROUP BY species, sex;
或,如果你仅需要知道已知性别的按性别分组的动物数目:
mysql> SELECT species, sex, COUNT(*) FROM pet
-> WHERE sex IS NOT NULL
-> GROUP BY species, sex;
9.0 使用一个以上的表
?
mysql> SELECT pet.name,
-> (YEAR(date)-YEAR(birth)) - (RIGHT(date,5)
-> remark
-> FROM pet, event
-> WHERE pet.name = event.name AND event.type = 'litter';
--关于该查询要注意以下几件事:
FROM子句连接两个表,因为查询需要从两个表中提取信息。
当从多个表组合(联结)信息时,你需要指定其中一个表中的列明以期匹配其它表的列名。这很简单,因为它们都有一个name列,查询可以通过使用WHERE子句基于name值来匹配两个表中的记录。
因为name列都存在两个表中,因此当引用该列时,一定要指定是哪个表,把表名附在列名前即可以实现。 如果你想要将一个表的记录与该表的其它记录进行比较,可以将该表联结到自身。例如,为了在你的宠物之中选择繁殖中的配偶,你可以用pet表联结自身来进行相同种类的雄雌配对:
mysql> SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species
-> FROM pet AS p1, pet AS p2
-> WHERE p1.species = p2.species AND p1.sex = 'f' AND p2.sex = 'm';
在这个查询中,我们为表名指定别名p1和p2以便能引用它们的列并且使得每一个列的引用更直观。
获得数据库和表的信息
mysql mod如何使用_mysql 操作详解相关推荐
- mysql 事务 注意 优化_MySQL入门详解——事务、锁、优化
MySQL事务 MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在一个商城系统中,用户执行购买操作,那么用户订单中应该加一条,库存要减一条,如果这两步由于意外只进行了其中一步那么就会发生 ...
- mysql 事务 注意 优化_MySQL入门详解(二)---mysql事务、锁、以及优化
MySQL 事务主要用于处理操作量大,复杂度高的数据.比如说,在一个商城系统中,用户执行购买操作,那么用户订单中应该加一条,库存要减一条,如果这两步由于意外只进行了其中一步那么就会发生很大的问题.而事 ...
- mysql explain ref列_MySQL EXPLAIN详解
MySQL EXPLAIN详解:http://www.jianshu.com/p/ea3fc71fdc45 MySQL EXPLAIN命令是查询性能优化不可缺少的一部分,该文主要讲解explain命令 ...
- mysql 客户端连接日志_MySQL 日志详解
一.MySQL 日志分类 MySQL 日志主要包含:错误日志.查询日志.慢查询日志.事务日志.二进制日志. 错误日志: -log-err (记录启动.运行.停止 MySQL 服务时出现的信息) 查询日 ...
- 2005数据库导入mysql没有主键_mysql数据库详解(续二)
mysql数据库登陆问题解决汇总 首先需要说明一下,MYSQL数据库登陆的方式,通常就是本地登陆(localhost)和远程登陆,那么这里在深入地了解一部localhost和127.0.0.1的区别是 ...
- mysql 织梦 索引_Mysql索引详解 建立索引的优势劣势以及索引规范
索引是什么 索引(index)是帮助MySQL高效获取数据的数据结构 如果没有特别指明,都是指的是B树索引(多路搜索树,并不一定是二叉树)结构组织的索引 建立索引的优势和劣势 优势 提高数据检索的效率 ...
- python diango 增删改查_python中关于django对数据库Mysql的增删改查操作详解
下面小编就为大家带来一篇python django 增删改查操作 数据库Mysql.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 下面介绍一下django增删改查操作: ...
- mysql索引 物理文件_MySQL索引详解
1.前言 MySQL数据库管理系统本身就是一个文件管理系统,虽然它的实现方式确实比较复杂,但本质上是要通过访问磁盘才能完成数据的存储与检索.所以如果我们想要进一步了解MySQL索引的的话,磁盘相关的操 ...
- php读取配置文件连接mysql数据库,MySQL教程--通过配置文件连接数据库操作详解
这篇文章主要介绍了mysql 之通过配置文件链接数据库的相关资料,主要是一个单例饿汉式的获得数据库连接方法工具类的实现,需要的朋友可以参考下 mysql 之通过配置文件链接数据库 配置文件jdbc.p ...
最新文章
- Windows 10 LTSC添加UWP支持
- L2-001 紧急救援-团体程序设计天梯赛GPLT
- NIO 之 MappedByteBuffer
- asp.net core 系列之webapi集成EFCore的简单操作教程
- hadooppythonsql_半小时搞定Hadoop+Mysql+Hive+Python
- 中英文对照 —— 游戏
- 腾讯这套SpringMvc面试题你了解多少?(面试必备)
- matlab 预测值一样,matlab BP神经网络建造如下,预测时,预测值反归一化报错,求大神指教!!!!!...
- SVN客户端详细说明
- 学习笔记之极客时间《Java 核心技术面试精讲》
- 激励视频广告 Android,腾讯社交联盟广告
- ios逆向工具theos tweak make编译错误集合
- 天文观测理论——已知像素大小、焦距,求像素分辨率
- 【存储知识】文件系统与硬盘存储(分区、格式化、挂载、inode、软链接与硬链接)
- 关于母亲节的c语言程序设计教程课后答案,《我的母亲》习题及参考答案
- c#创建画布_如何:创建和使用画布
- 第二十三课.扩散模型
- enq: TX - allocate ITL entry
- 计算机电缆设计规范,DJYPVP计算机电缆安装规范和设计原则
- was控制台英文改成中文
热门文章
- yml文件tab 空格_YAML 文件介绍
- 菜鸟教程php上传图片,PHP 文件上传
- c语言程序设计单项选择题,1.奥鹏南开《C语言程序设计》复习资料单项选择题答案及解析...
- mongodb创建普通用户并授权readWrite角色,并允许访问某一数据库
- sde java_arcgis SDE for Java
- mysql完整性约束命名_第5章--MySQL索引与完整性约束.ppt
- SpringCloud微框架系列整体模块梳理
- android java资源包下载网站
- w3cschool oracle,AJAX 数据库 | w3cschool菜鸟教程
- List<T>和List<?>的区别