MySQL数据表的数据类型、如何实现数据完整性以及日期函数等的基本知识点整理
2016-09-25 23:13
561 查看
1.数据存储
-1- 人工管理阶段
-2- 文件管理阶段
问题:查询不便
-3- 数据库阶段
安全
性能
2.关系型数据库(RDBMS)
以表格方式存储数据,表格和表格之间存储关系。
DB:database数据库
DBA:数据库管理员
DBMS:数据库管理系统
RDBMS:关系型数据库管理系统
Record:记录(行)
Field:字段(列)
3.常用的RDBMS:
Oracle
SQL Server
DB2
MySQL 特点:简单、易用、开源
4.MySQL
企业版(Enterprise) 收费 提供技术支持、服务
社区版(Community) 免费 没有任何技术支持、服务
5.数据管理:
-1- 数据库:容器
-2- 数据表:数据真正的容器
-3- 设计表结构
字段:字母、数字和下划线
数据类型:
整数类型:tinyint 1
smallint 3
int 4
bigint 8
浮点类型:float
double(m,n) m:数据总长度,n:小数点后n位(小数位数超出部分会被舍弃,不会报错)
整数部分:m-n,如果超出,会报错
date 3 YYYY-MM-DD
dateTime 8 YYYY-MM-DD hh:mm:ss
datestamp 8 时间戳
字符类型:char:固定字符串(性能高)
指定固定长度,如 char(10),则长度一定为10
varchar:可变字符串(占用空间少)
指定的长度可变,如varchar(20),此时字段值为tom,则长度会变为3
text或Blob:用来存储大对象(大文本、图像、声音等...)
enum:枚举(固定的几个值) 字段 enum('值1','值2')
例:sex enum('男','女')
-4- 数据完整性(唯一性、准确性、一致性)
1)实体完整性(唯一性)
主键约束:primary key
唯一约束:unique key
注:a.主键不能为空,所以可以不用给它添加not null
b.唯一约束的字段值可以为空,如果想让他不能有空值,则要unqiue + not null
对于唯一约束的字段,MySQL中允许有多个字段值为空,而SQL Server中只允许最多一个为空。
c.主键约束和唯一约束都是为了防止重复,以确保其唯一性。
d.一般主键都是id,且会将其设为自增长列(标识列),需要注意的是自增列只对整数类型如int的字段有效。
2)域完整性(准确性)
检查约束(check)
默认约束(default)
3)引用完整性(一致性 父表与子表)
外键约束:foreign key
-5- 实现数据完整性(添加约束)
1)先建表,再追加约束
alter table 表名 约束名 约束类型(字段);
2)建表时直接添加约束
constraint 约束名 约束类型(约束字段)
6.SQL
-1- 定义:结构化查询语言(stucture query language)
-2- 功能:关系型数据库的数据操作
-3- 操作分类:
DDL:数据定义语言--> 数据库对象的创建crete、修改alter、删除drop
DML:数据操作语言--> 数据添加insert、更新(修改)update、删除delete
DQL:数据查询语言--> select
DCL:数据控制语言--> grant
7.日期函数
now(): 返回当前的日期和时间 YYYY-MM-DD hh:mm:ss
curdate(): 返回当前的日期 YYYY-MM-DD
curtime(): 返回当前的时间 hh:mm:ss
date(): 返回日期或日期/时间表达式的日期部分 YYYY-MM-DD
extract(): 返回日期/时间的单独部分,比如年、月、日、小时、分钟等等
extract(unit from date)
unit值可以下:microsecond,second,minute,hour,day,week,month,querter,year,
second_microsecond,minute_microsecond,minute_second,
hour_microsecnd,hour_second,hour_minute,
day_microsecond,day_second,day_minute,day_hour,year_month
date_add(): 向日期添加指定的时间间隔
date_add(date,interval expr type)
注:date参数是合法的日期表达式,expr参数是您希望添加的时间间隔,type参数值同上unit值
date_sub(): 从日期减去指定的时间间隔
date_sub(date,interval expr type)
datediff(): 返回两个日期之间的天数
datediff(date1,date2)
注:只有值得日期部分参与计算
date_format():用于以不同的格式显示日期/时间数据
date_format(date,format) format规定日期/时间的输出格式
例:
统计:查询卡号为'3206 0001'的用户本月取款次数及取款总金额,返回姓名、取款次数,取款总金额
select c.Name as 姓名, count(*) as 取款次数, sum(r.Money) as 取款总金额
from records as r inner join cards
on r.CardId = cards.Id
join customers as c
on c.Id = cards.CustId
/*方法一 :
where r.CardId = '3206 0001' and r.Type = '取出' and extract(year_month from RecordDate) = extract(year_month from curdate())
*/
-- 方法二:
where r.CardId = '3206 0001' and r.Type = '取出' and date_format(RecordDate,'%y-%m') = date_format(curdate(),'%y-%m')
group by c.Name;
统计上个月银行的存款总金额
select sum(Money) as 存款总金额
from records
where Type = '存入' and date_format(RecordDate,'%Y,%M') = date_format(date_sub(curdate(),interval 1 month),'%Y,%M');
-1- 人工管理阶段
-2- 文件管理阶段
问题:查询不便
-3- 数据库阶段
安全
性能
2.关系型数据库(RDBMS)
以表格方式存储数据,表格和表格之间存储关系。
DB:database数据库
DBA:数据库管理员
DBMS:数据库管理系统
RDBMS:关系型数据库管理系统
Record:记录(行)
Field:字段(列)
3.常用的RDBMS:
Oracle
SQL Server
DB2
MySQL 特点:简单、易用、开源
4.MySQL
企业版(Enterprise) 收费 提供技术支持、服务
社区版(Community) 免费 没有任何技术支持、服务
5.数据管理:
-1- 数据库:容器
-2- 数据表:数据真正的容器
-3- 设计表结构
字段:字母、数字和下划线
数据类型:
整数类型:tinyint 1
smallint 3
int 4
bigint 8
浮点类型:float
double(m,n) m:数据总长度,n:小数点后n位(小数位数超出部分会被舍弃,不会报错)
整数部分:m-n,如果超出,会报错
date 3 YYYY-MM-DD
dateTime 8 YYYY-MM-DD hh:mm:ss
datestamp 8 时间戳
字符类型:char:固定字符串(性能高)
指定固定长度,如 char(10),则长度一定为10
varchar:可变字符串(占用空间少)
指定的长度可变,如varchar(20),此时字段值为tom,则长度会变为3
text或Blob:用来存储大对象(大文本、图像、声音等...)
enum:枚举(固定的几个值) 字段 enum('值1','值2')
例:sex enum('男','女')
-4- 数据完整性(唯一性、准确性、一致性)
1)实体完整性(唯一性)
主键约束:primary key
唯一约束:unique key
注:a.主键不能为空,所以可以不用给它添加not null
b.唯一约束的字段值可以为空,如果想让他不能有空值,则要unqiue + not null
对于唯一约束的字段,MySQL中允许有多个字段值为空,而SQL Server中只允许最多一个为空。
c.主键约束和唯一约束都是为了防止重复,以确保其唯一性。
d.一般主键都是id,且会将其设为自增长列(标识列),需要注意的是自增列只对整数类型如int的字段有效。
2)域完整性(准确性)
检查约束(check)
默认约束(default)
3)引用完整性(一致性 父表与子表)
外键约束:foreign key
-5- 实现数据完整性(添加约束)
1)先建表,再追加约束
alter table 表名 约束名 约束类型(字段);
2)建表时直接添加约束
constraint 约束名 约束类型(约束字段)
6.SQL
-1- 定义:结构化查询语言(stucture query language)
-2- 功能:关系型数据库的数据操作
-3- 操作分类:
DDL:数据定义语言--> 数据库对象的创建crete、修改alter、删除drop
DML:数据操作语言--> 数据添加insert、更新(修改)update、删除delete
DQL:数据查询语言--> select
DCL:数据控制语言--> grant
7.日期函数
now(): 返回当前的日期和时间 YYYY-MM-DD hh:mm:ss
curdate(): 返回当前的日期 YYYY-MM-DD
curtime(): 返回当前的时间 hh:mm:ss
date(): 返回日期或日期/时间表达式的日期部分 YYYY-MM-DD
extract(): 返回日期/时间的单独部分,比如年、月、日、小时、分钟等等
extract(unit from date)
unit值可以下:microsecond,second,minute,hour,day,week,month,querter,year,
second_microsecond,minute_microsecond,minute_second,
hour_microsecnd,hour_second,hour_minute,
day_microsecond,day_second,day_minute,day_hour,year_month
date_add(): 向日期添加指定的时间间隔
date_add(date,interval expr type)
注:date参数是合法的日期表达式,expr参数是您希望添加的时间间隔,type参数值同上unit值
date_sub(): 从日期减去指定的时间间隔
date_sub(date,interval expr type)
datediff(): 返回两个日期之间的天数
datediff(date1,date2)
注:只有值得日期部分参与计算
date_format():用于以不同的格式显示日期/时间数据
date_format(date,format) format规定日期/时间的输出格式
例:
统计:查询卡号为'3206 0001'的用户本月取款次数及取款总金额,返回姓名、取款次数,取款总金额
select c.Name as 姓名, count(*) as 取款次数, sum(r.Money) as 取款总金额
from records as r inner join cards
on r.CardId = cards.Id
join customers as c
on c.Id = cards.CustId
/*方法一 :
where r.CardId = '3206 0001' and r.Type = '取出' and extract(year_month from RecordDate) = extract(year_month from curdate())
*/
-- 方法二:
where r.CardId = '3206 0001' and r.Type = '取出' and date_format(RecordDate,'%y-%m') = date_format(curdate(),'%y-%m')
group by c.Name;
统计上个月银行的存款总金额
select sum(Money) as 存款总金额
from records
where Type = '存入' and date_format(RecordDate,'%Y,%M') = date_format(date_sub(curdate(),interval 1 month),'%Y,%M');
相关文章推荐
- 基本数据类型知识点整理
- MySql入门之一:DDL操作创建表(添加主键, 外键约束以及基本的数据类型)
- solr 7+tomcat 8 + mysql实现solr 7基本使用(安装、集成中文分词器、定时同步数据库数据以及项目集成)
- 本文从如何建立mysql索引以及介绍mysql的索引类型,再讲mysql索引的利与弊,以及建立索引时需要注意的地方 首先:先假设有一张表,表的数据有10W条数据,其中有一条数据是nickname='
- 如何实现double/float基本数据类型的四舍五入
- MySql之DDL操作创建表(添加主键, 外键约束以及基本的数据类型)
- mysql 的基本数据类型
- xpath的数据和节点类型以及XPath中节点匹配的基本方法
- xpath的数据和节点类型以及XPath中节点匹配的基本方法
- xpath的数据和节点类型以及XPath中节点匹配的基本方法
- MySQL下数据表混乱的字符编码处理以及一些处理字符编码时的常用命令整理
- Mysql的基本数据类型
- Java中的移位操作以及基本数据类型转换成字节数组【收集】
- MySQL中如何插入blob类型数据
- 各种基本数据类型的范围和精度如何?
- 各种基本数据类型的范围和精度如何?
- 如何应用Asp.Net Mvc内建功能(DefaultModelBinder)实现简单类型、复杂类型、集合类型,以及字典类型的自动绑定
- Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)
- 转 MYSQL 基本数据类型
- 如何实现图片的上传以及将图片保存到Mysql