Mysql燕十八学习笔记.doc

上传人:b****3 文档编号:1889990 上传时间:2022-10-25 格式:DOC 页数:80 大小:1.79MB
下载 相关 举报
Mysql燕十八学习笔记.doc_第1页
第1页 / 共80页
Mysql燕十八学习笔记.doc_第2页
第2页 / 共80页
Mysql燕十八学习笔记.doc_第3页
第3页 / 共80页
Mysql燕十八学习笔记.doc_第4页
第4页 / 共80页
Mysql燕十八学习笔记.doc_第5页
第5页 / 共80页
点击查看更多>>
下载资源
资源描述

Mysql燕十八学习笔记.doc

《Mysql燕十八学习笔记.doc》由会员分享,可在线阅读,更多相关《Mysql燕十八学习笔记.doc(80页珍藏版)》请在冰豆网上搜索。

Mysql燕十八学习笔记.doc

Mysql三大列类型

1.数值型

整型

Tinyint、Smallint、Mediumint、Int、Bigint

小数型

Float(D,M),Decimal(D,M)

2.字符串型

Char(M)

Varchar(M)

Text文本类型

3.日期时间类型

Date日期

Time时间

Datetime时间类型

Year年类型

一.整型列的字节与存储范围

从数学上讨论tinyint,建表时既能足够存放,又不浪费空间。

即:

(1).占据空间

(2).存储范围

Tinyint微小的列类型,1字节。

类型

字节

最小值

最大值

(带符号/无符号)

(带符号/无符号)

Tinyint

1

-128

127

0

255

Smallint

2

-32768

32767

0

65535

Mediumint

3

-2^23

2^23-1

0

2^24-1

Int

4

-2^31

2^31-1

0

2^32-1

Bigint

8

-2^63

2^63-1

0

2^64-1

通过占用字节和所存范围分关系合理的选择类型。

例:

Tinyint

经测试,Tinyint的默认为有符号-128~127之间,当越界时自动取相应的边界值。

若要存0~255无符号时:

列的可选属性:

Tinyint(M)unsignedzerofill.

M:

宽度(在0填充的时候才有意义)

Unsigned:

无符号类型(非负),影响存储范围

Zerofill:

0填充(默认无符号)

列可以声明默认值,而且推荐声明默认值notnulldefault0;

二.小数型/浮点型、定点型

Float(M,D):

M代表总位数,D代表小数位

(6,2)为例:

-9999.99–>9999.99

Decimal(D,M):

三.字符型列

Char:

定长,char(M),M代表宽度,即:

可容纳的字符数0<=M<=255

Varchar:

变长,0<=M<=65535(约2W—6W个字符受字符集影响)

Text文本串,(约2W—6W个字符受字符集影响)

区别在哪呢?

char定长:

M个字符,如果存的小于M个字符,实占M个字符

varchar:

M个字符,存的小于M个字符,设为N,N

因此,char定长若存空格,读取时会丢失。

而变长不会。

Char利用率小于等于100%,而varchar永远小于100%,1-2个字节用于标志实存字符长度。

Char(M)如何占据M个字符宽度?

答:

如果实际存储内容不足M个,则后面加空格补齐,取出来的时候再把后面的空格去掉,(所以如果内容后面有空格,将会被清除)

选择原则:

1.空间利用效率(M固定选Char)

2.速度

速度上:

定长速度快些,

四.日期时间列类型

Date日期

Time时间

Datatime时间类型

Year年类型

1.Year类型:

1个字节表示1901-2155年【0000年表示错误时】

如果输入两位,“00--69”表示2000—2069,

如果输入两位“70--99”表示1970—1999

如果记得麻烦,输入四位就行了、

2.Date类型:

典型格式,1992-08-12

‘1000-01-01’à’9999-12-31’

3.Time类型,典型格式hh:

mm:

ss

‘-838:

59:

59’à’+838:

59:

59’

4.Datetime典型格式:

’1989-05-0612:

23:

34’

‘1000-01-0100:

00:

00’à‘9999-12-3123:

59:

59`

注意:

在开发中很少使用日期时间类型来表示一个需要精确到秒的列,原因:

虽然日期时间类型能够精确到秒,而且方便查看。

但是计算不便。

用时间戳来表示。

时间戳:

1970-01-0100:

00:

00到当前的秒数

面试1:

当表示性别时,可用1或0表示男女,如,

可能会问到为什么不用enum枚举,原因:

enum不符合关系型数据库设计理念,而且字节上不比tinyint少。

实例:

增删改查之案例过程分析

用户注册表单收集,提交数据,注册页面收集到表单的数据后,形成insert语句,user表插入该条数据,用户注册完成

前台用户中心,用户新昵称,根据新昵称和用户id,形成update语句,完成昵称修改

管理后台点击会员列表,此时,网页形成select语句,查询出所有会员的数据,完成会员的查看

管理员后台选中某用户并且删除,捕捉此用户的id,根据用户id形成相应的delete语句

执行delete语句,完成用户的删除。

阶段总结

(一)

列类型的概念

数值型

整型tinyintsmallintmediumintintbigint

整型的unsigned代表无符号,zerofill代表0填充,M代表宽度(在0填充)

浮点型/定点型float(M,D)unsignedMà精度,即总位数,D代表小数位decimal比float更精确。

字符型

Char(M)定长,可存储的字符数,M<=255

Varchar(M),变长,可存储的字节数,M<=65535

Char与varchar的不同点

Char(M),实占M个字符,不够M个右侧补空格,取出时,在去除右侧空格,导致右侧真有空格时会丢失。

Varchar(M),有1-2个字节来标记真实的长度,

日期时间型

Year1901-2155,如果输2位,‘00-69’之间+2000,‘70-99’之间+1900

DateYYYY-MM-DD,范围在1000-01-01à9999-12-31

TimeHH:

ii:

ss,范围在-838:

59:

59à838:

59:

59

DatetimeYY-MM-DDHH:

ii:

ss1000-01-0100:

00:

00à9999-12-3123:

59:

59

开发中的一个问题—精确到秒的时间表示方式,不是用datetime,而是用int来表示时间戳

用时间戳方便计算,而且方便格式化成不同的显示样式。

建表语句

Createtable表明(

列名称,列类型[列属性][默认值],

…..

)engine引擎名charset字符集

增:

insert

答:

往哪张表增,增那几列,各为什么值?

Insertinto表名

(列1,列2,..列N)

Values

(值1,值2..值N)

**如果不声明插入的列,则默认插入所有列。

改:

update

答:

修改哪张表,修改那几列,修改成什么值?

在哪几行上生效?

Update表名

Set

列1=值1,

列2=值2,

….

列N=值N

Where表达式;

删:

delete

删除哪张表的数据,删除哪些行?

Deletefrom表名

Where表达式

查:

select*from表名

查询的五种语句:

where,group,having,orderby,limit

一.Where条件查询

比较运算符

1.In<值1,值2,值3…..值N>,等于1àN任意一个。

例:

selectgoods_idfromgoodswherecat_idin(4,5);

2.Between值1and值2,表示在值1和值2之间

例:

selectgoods_idfromgoodswherecat_idbetween1and5;

逻辑运算符

1.Not逻辑非

例:

selectgood_idfromgoodswherecat_idnotin(4,5);

2.Or逻辑或

3.And逻辑与

模糊查询:

案例:

想查找‘诺基亚’开头的所有商品

Likeà像,%à通配任意字符_à单个字符

Selectgoods_idfromgoodswheregoods_namelike‘诺基亚%’;

Selectgoods_idfromgoodswheregoods_namelike‘诺基亚__’;

二.Group分组查询

Groupby

作用:

把行按字段分组

语法:

groupbycol1,col2…colN

运用场合:

常见于统计场合,如按栏目计算帖子数,统计每个人的平均成绩等。

Group与统计函数

Max:

求最大,

min:

求最小,

sum:

求总和,

avg:

求平均,

count:

求总行数

练习:

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

三.Having

*******例题:

只用一个select,不用子查询和左连接。

四.Orderby

Orderby排序功能

接一个或多个字段对查询结果进行排序

知识点在本项目案例的运用

对栏目的商品按价格由高到低或由低到高排序

知识点的运用场合描述

各种排序场合,如取热点新闻,发帖状元等。

多重排序:

Limit在语句的最后起到了限制条目的作用。

Limitoffset,[N]

offset:

偏移量,N:

条目;如果不写,则从头开始写。

即:

limit0,N;

Truncatetable清空表

思考:

取出每个栏目下最贵的商品

解法一:

首先建个临时表g2,将goods表导入g2,

此时,g2中每个栏目的第一个goods_id就是该栏目下最贵的那个,再取出每个栏目下的第一个。

解法二:

思想类似解法一,将select后的结果看作是一张表。

五.良好的理解模型

1.Where表达式:

把表达式放在行中,看表达式是否为真,

2.列:

理解成变量,可以运算

3.取出结果:

可以理解成一张临时表

六.子查询

1.Where型子查询

2.From型子查询

3.Exist型子查询

一.Where型子查询

是指把内层的查询结果作为外层查询的比较条件。

二.From型子查询

把内层的查询结果当成表供外层继续查询

使用了from+where子查询。

三.Exists子查询

把外层的查询结果拿到内层,看内层的查询是否成立。

阶段总结二

查select

Where表达式

表达式在哪一行成立,哪一行就取出来

=,!

=/<>,>,<,>=,<=,in,betweenand,or,not

Groupby

分组,一般和统计函数配合使用

Max,min,avg,sum,count

Having

数据在表中,表在硬盘或内存以文件形式存在

Where就是针对表文件发挥作用的

查询的结果,也可以看成一张表,其文件一般临时存在缓冲区

针对查询的结果发挥作用

Orderby

作用:

排序

可以针对字段,升序

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 环境科学食品科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1