SQL学习指南笔记

第一章 背景知识

数据库分为关系数据库(Mysql,Oracle)和非关系数据库(Redis无表结构,MongoDB有一定表结构);

关系数据库中的每张表都包含一项作为每行唯一标识的信息(主键);

  术语和定义

术语和定义
术语定义java

实体

数据库用户所关注的对象,如顾客,部门等 
存储在表中的独立数据片段即字段field属性,成员变量
所有列的一个集合,完整描述了一个实体或实体上的某个行为,亦称为记录一个对象
行的集合,既可以保存在内存中(未持久化),亦可以保存在硬存中(已持久化)实体类
结果集未持久化表的别称,一般为SQL查询的结果集合
主键用于唯一标识表中每个行的一个或多个列 
外键一个或多个用于识别其他表中某一行的列 

第二章 创建和使用数据库

缺失的字句:

SELECT now() ; # mysql 查询当前时间 now()是内建函数,返回当前时间和日期 y-m-d h:m:s

某些数据库服务器规定查询语句中必须包含from字句,并在其中至少指明一个表名,如Oracle。若仅仅只是需要调用一个函数,Oracle为此提供了一个特殊的表dual伪表,该表只包含一个名为dummy的列,并只有一个数据行。为了与Oracle保持兼容,MySQL也提供了伪表dual,因此前面的日期查询可以写成下面这样:

SELECT now() 

FROM dual; # 若没使用Oracle可以省略dual表,不带from

2.1数据类型

只涉及字符型,数值型,日期型

字符型数据

    字符型数据可以使用定长char或不定长varchar的字符串,两者不同点在于固定长度的字符串使用空格向右填充,以保证占用同样的字节数;变长字符串不需要向右填充,且所有字节数可变。

    char列可以设置的最大长度为255个字节,char(5)表示需要存储最大长度 不超过5个字符的字符串;varchar列最多可以存储65535字字节,并且占用一个字节存储长度。

    字符集:

    SHOW CHARRCTER SET; # 查看服务器支持字符集

    varchar(20) character set utf8 为数据列指定其字符集

    create database foreign_sales character set utf8 为数据库指定字符集

    文本数据:

MySQL文本类型
文本类型Maximum number of bytes(字节)
tinytext255
text65 535
mediumtext167 77 215
longtext4 294 967 295

    性能上:char>varchar>text

选择文本类型时注意:

    若被装载到文本列中的数据超出了该类型的最大长度,数据将会被截断

    在向文本列装载数据时,不会消除数据的尾部空格

    当使用文本列排序或分组时,只会使用前1024个字节,当然若需要可以放宽此限制

数值型数据

 

MySQL的整数类型
类型带符号的范围无符号的范围
tinyint 1字节-128-1270-255
smallint 2字节-32 768-32 7680-65 535
mediumint 3字节-8 388 608-8 388 6070-16 777 215
int 4字节-2 147 483 648-2 147 483 6470-4 294 967 295
bigint 8字节-9 233 372 036 854 775 808-9 223 372 036 854 775 8070-18 446 744 073 709 551 615

注意:Int(n)括号里面的数字n无论写成多少,都是占4个字节的空间,最多能存10位数,n不是代表能存多少位数,只是显示宽度

 

MySQL浮点类型
类型存储大小
float(p,s)  p存放数的长度 float(5,2) 111.114字节
double(p,s) s精度即保留小数8字节

时间数据

MySQL时间类型
类型默认格式允许的值
date 3字节YYYY-MM-DD1000-01-01~9999-12-31
datetime 8/5字节YYYY-MM-DD HH:MI:SS1000-01-01 00:00:00~9999-12-31 23:59:59
timestamp 4字节YYYY-MM-DD HH:MI:SS1970-01-01 00:00:00~2037-12-31 23:59:59
year 1字节YYYY1901~2155
time 3字节HHH:MI:SS-838:59:59~838:59:59

注意

    datetime的可用范围比timestamp大,物理存储上只比timestamp多占1个字节的空间,整体性能上的消耗并不算大,因此生产环境可用使用datetime时间类型。

    datetime数据类型在MySQL5.6之前占8字节,在5.6以后占5字节

 

 

2.2表操作

2.3错误语句

 

 

第三章 查询入门

第四章 过滤

第五章 多表查询

第六章 使用集合:并,交,差集

第七章 数据生成,转换和操作(函数)

第八章 分组与聚集

第九章 子查询

第十章 再谈连接

第十一章 条件逻辑

第十二章 事务

第十三章 索引和约束

第十四章 视图

第十五章 元数据

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值