MySQL学习笔记(二)

打扰了哈~ 分享二个招聘音信,微店诚招账户产品经理 ~

— 回顾

账户产品老董 1六千-三千0/月
【职位描述】
-负责微店全部账户种类的规划与设计,实施用户分析、制定发展方针。
-负责账户基础意义、账户等级、账户权限、账户安全、主子账户设计。
-负责账户管理等模块的方案设计,完善账户规范化水平,确认保证账户安全,提高用户体验。
【职位需求】
-本科及以上学历,专业不限。
-2年以上账户相关制品规划与规划经验。
-善于挖掘需要,在全局层面把握供给,系统化思考并推进落地。
-主动性强,执行力高,具备优异的联系能力和组织协调能力,具备较强的剖析与缓解难点能力

数据库基础知识:

商厦介绍:
微店,手提式有线电话机开店商业形式的成立人,行业内的遥远超越者,同时也是去中央化网络的主动探索者。
今日,我们已有所六千万+的小卖部,14亿+商品,那几个组合了微店生态圈及其首要的一环。
商家集中了800多名海内外最棒的位移互连网专家,以“在活动互连网、社交互连网等全新的景观下,建立新的经济贸易文明”为重任,致力于将集团建设变成“全世界最大的商务网络”。集团重视移动网络世界抢先的技能和营业组织,在存款和储蓄技术、数据挖掘、有线技术上面落到实处了周到的自主研究开发种类。
行事的豪情与参预感,产品从无到有的成就感,卓越的团队精英引导一群可信的营业、技术、产品牛人创制着伟大的事业。

1.关系型数据库(磁盘),建立在论及模型上的数据库,数据结构(二维表),浪费空间。

商户福利
一 、双休,六险一金,1年14薪,季度、年度优异职员和工人奖励,每年二回提高发展机遇;
二 、苹果电脑、高分显示屏,市面最新的电子装备,人体艺术学办公椅…
最大化进步工作经验和频率;
三 、六条班车线:大明门&安慕希桥、望京西站、孙河线 、昌平线、燕郊线;
四 、无限供应的早餐、零食、水果、牛奶、咖啡、饮料、清晨茶、晚饭、夜宵;
五 、全体成员不限次的浩沙健身、游泳,定期组织的篮球、足球、羽球等移动,每一日可享用的中医水疗及调理咨询;
六 、图书购买销售,福利体格检查,team
building,大型节日假日日活动,年度旅游(可携家带口亲戚哟);
柒 、创业的豪情和加入感,产品从无到部分成就感,专家大咖共事、定期行业/专业交换培训,不断成长发挥的满意感;
惠及事项还在不停的丰裕扩充中哦~
当然,最大的便利是和一群可以的人做一件伟大的事!

操作数据的吩咐集合:SQL(DDL,DML[DQL]和DCL)

欢迎联系与合营~
关联邮箱:lylhyh一九七六@163.com

完整性约束:表内和表之间(实体)

QQ:1841823294

mysql
关系型数据库:c/s结构软件(连接认证,发送SQL指令,服务器处理指令回到结果,客户端接收结果分析结果)

微信:15201570684

mysql服务端对象:DBMS->Datebase->Table->田野(field)s

sql 基本操作:库操作,表操作(字段)和多少操作

字符集难题:汉语数据难题

转移服务器接收数据的字符集:chatacter_set_client

改变服务器再次来到数据的字符集:character_set_results

飞速格局:set names 字符集(三件事)

web乱码难点:浏览器解析,php处理(本和姑件),数据库处理

校队集难点:相比较规则:_bin , _cs和_ci

— 数据类型(列类型)

所谓的数据类型:对数码开始展览合并的归类,从系统的角度出发为了能够使用统一的法门展开管理更好的行使有限的上空。

SQL 中校数据类型分成三大类:数值类型,字符串类型和时间档次。

图片 1

一.数值型

数值型数据:都以数值,系统将数值型分为整数和小数型

1.整数型

寄存整型数据:再SQL中因为越多着想什么节约磁盘空间,所以系统将整型分为5类

Tinyint :迷你整型,使用一个字节存储,表示的气象最多位257个(常用)

smallint:小整形,使用1个字节存款和储蓄,表示的情状最多位65536种

mediumint:中整型,使用3个字节存款和储蓄,表示

int:标准整型,使用伍个字节存款和储蓄(常用)

bigint:大整型,使用八个字节存款和储蓄

图片 2

例:创制一张整型表

mysql> create
table my_int(int_1 tinyint, int_2smallint, init_3int) charset
utf8;

图片 3

例:输入数据:只可以插入整型,范围内的整型

mysql> insert
into my_int values (100,100,100,100); #实用数据

mysql> insert
into my_int values (‘a’,’b’,’199′,’f’); #失效数据,类型限定

mysql> insert
into my_int values (255,1000,10000,100000); #超出范围

图片 4

SQL中的数值类型全部都以暗中同意有标志:分正负,但神迹须求使用无符号数据:要求给多少限定:int unsigned; #无符号,从0开始

例:给表扩展一个无符号类型

mysql> alter
table my_int add int_5 tinyint unsigned;

图片 5

例:插入数据

mysql> insert
into my_int values(127,1000,10000,100000,255);

图片 6

查看表结构的时候,发现各样字段的数据类型之后都自带叁个括号里面有数值,这一个是展现上涨幅度,但它没有其他意义只是报告用户能够来得的款型而已;实际上用户是可以操纵的,这种操纵不会改变多少自己尺寸;

图片 7

例:mysql> alter table my_int add int_6
tinyint(1) unsigned; #内定展现上涨幅度为1

图片 8

表达:显示上涨幅度的意义是在当数码不够呈现上涨幅度的时候,会自动让数据变成对应的展现涨幅;平日要求搭配3个前导0来增加幅度,可是值大小不变。zerofill(零填充):零填充会导致数据自动变成无符号

例:mysql> alter table my_int add int_7
tinyint (2) zerofill; #表示展现上涨幅度为2,0填充

图片 9

例:mysql> insert into my_int
values(1,1,1,1,1,1,1); #零填充+彰显上涨幅度的效益

mysql> insert
into my_int values(100,100,100,100,100,100,100);

图片 10

零填充的含义(展现上涨幅度):保障数据格式

2.小数型

小数型:带有小数点或然限制超出整型,SQL中将小数型分成三种:浮点型和定点型

浮点型:小数点浮动,精度有限,而且会丢掉精度

定点型:小树点固定,精度是平昔的,不会丢掉精度

2.1浮点型

浮点型数据是一种精度型数据:超出钦点范围之后,会丢掉精度(自动四舍五入)

Float
: 单精度,占用多少个字节存款和储蓄数据,精度范围大致为三个人左右

Double: 双精度,占用八个字节存储数据,精度方位大约为十五位左右

图片 11

例:创制浮点数表

浮点数的采取格局:直接float 表示并未小数部分;float(M,D):M代表总委员长度,D代表小数部分长度,整数有的尺寸为 M-D

mysql> create
table my_float (f1 float,f2 float(10,2),f3 float(6,2)) charset
utf8;

图片 12

例:插入符合条件数据,能够是直接小数也能够是科学计数法

mysql> inster
into my_float values(1000.10,1000.10,1000.10); #符合条件

mysql> inster
into my_float values(1234567890,12345678.90,1234.56); #符合条件

mysql> inster
into my_float values(9999999999,99999999.99,9999.99); #最大值

mysql> inster
into my_float values(3e38,3.01e7,1234.56); #符合条件

图片 13

浮点型数据的插入:整数片段是不能够凌驾长度的,可是小数部分能够高于长度(系统会自动四舍五入)

例:超出长度插入数据

mysql> inster
into my_float values(123456,1234.12345678,123.9876543);#小数部分是足以的

mysql> inster into my_float
values(123456,1234.12,123456.56); #平头有的压倒

图片 14

结果:浮点数一定会开始展览四舍五入(超出精度范围):浮点数假诺是因为系统进位导致整数超出钦点的长度那么系统也允许成立

图片 15

2.2 定点型

定点型:相对保证整数部分不会被四舍五入(不会丢掉精度),小数部分有或然(理论小数部分也不会丢掉)

图片 16

成立定点数表

mysql> create
table my_decimal(f1 float(10,2),d1 decimal(10,2)) charset utf8;

图片 17

安插数据:定点数的平尾部分一定不可能超过长度(进位不得以),小数部分的长度能够随便超出(系统自动四舍五入)

mysql> inster
into my_decimal values(12345678.90,12345678.90); #实惠数据

mysql> inster
into my_decimal values(1234.123456,1234.123456); #小数部分超越

图片 18

意识有一条警告,查看警告的命令位: mysql> show warnings;

浮点数假使进位导致长度溢出是足以的,但定点数不行

mysql> insert
into my_decimal values(99999999.99,99999999.99);

mysql> insert
into my_decimal values(99999999.99,99999999.999); #进位超出范围

图片 19

翻看数据

图片 20


. 时间日期类型

Datetime:时间日期,格式是 YYYY-mm-dd HH:ii:ss 表示的限制是从壹仟年始于到9999年,有0值:0000-00-00 00:00:00

Date:日期,就是datetime 中的date部分

Time:时间(段),钦定的有个别区间之间,-时间到+时间

Timestamp:时间戳,并不是光阴戳,只是从1966年上马的YYYY-mm-dd HH:ii:ss 格式和datetime 完全一致

Year:年份,三种象征格局,year(2)和year(4):壹玖零肆-2156

图片 21

创制时间日期表

mysql> create
table my_date(d1 datetime,d2 date,d3 time,d4 timestamp,d5 year) charset
utf8;

图片 22

布署数据:时间time能够是负数,而且能够是不小的负数,year 能够采纳二人数安插,也能够运用二人

mysql> insert
into my_date values(‘2015-9-28
11:50:36′,’2015-9-28′,’11:50:54′,’2015-9-28 11:51:08’,2015);

mysql> insert
into my_date values(‘2015-9-28
11:50:36′,’2015-9-28′,’-11:50:54′,’2015-9-28 11:51:08′,2015);

mysql> insert
into my_date values(‘2015-9-28
11:50:36′,’2015-9-28′,’-211:50:54′,’2015-9-28 11:51:08′,2015);

year 能够动用两位依然二个人

mysql> insert
into my_date values(‘2015-9-28
11:50:36′,’2015-9-28′,’-11:50:54′,’2015-9-28 11:51:08′,69);

mysql> insert
into my_date values(‘2015-9-28
11:50:36′,’2015-9-28′,’-11:50:54′,’2015-9-28 11:51:08′,70);

图片 23

Timestramp 字段:只要当前所在的记录被更新,该字段一定会自动更新成当下时刻

修改记录

mysql> update
my_date set d1 = ‘2015-9-28 11:55:45’ where d5 = 2069;

图片 24

三.字符串类型

在SQL中,将字符串类型分成了6类:char,varchar,text,blob,enum和set

1.1 定长字符串

定长字符串:char,磁盘(二维表)在概念结构的时候,就曾经分明了最后的储存长度,现在不能够改变

char(L):L
代表length,能够储存的长度,单位为字符,最大尺寸为255.

char(4):在 utf8 环境下,需要4 * 3 = 12 字节

1.2 变长字符串

变长字符串:varchar,在分配空间的时候,遵照最大的长空分配,不过事实上最后用了略微,是基于具体的数据来规定。

1.2 变长字符串

varchart(L):L
代表字符长度理论长度是65536 个字符,可是会多出1到1个字节来分明存款和储蓄的莫过于尺寸:不过实际上假设长度当先255,就既不用定长也不用变长,使用文本字符串text

varchar(10):的确存了10个汉字,utf8环境,10*3+1=31

存储了3个汉字 3*3+1=10(bytes)

定长与边长的存款和储蓄实际空间(utf8)

图片 25

什么选拔定长只怕是变长字符串呢?

定长的磁盘空间相比较浪费,但效用高;即使数量大概显著长度都如出一辙,那么就应用定长,如:身份证,电话号,手提式有线话机号等;

 

 

变长的磁盘空间比较节省,可是功效低;倘使数量不能够分明长度(不相同数额有转变),如姓名,地址等

 

1.2 文本字符串

假若数据量相当的大,平日当先255个字节就会接纳文本字符串

文本字符串依据存款和储蓄的数码的格式进行归类:text和blob

Text :存款和储蓄文字(二进制数据实际上都以储存路径)

Blob :存款和储蓄二进制数据(常常并非)

四:枚举字符串

枚举:enum,事先将兼具或许出现的结果都规划好,实际上存款和储蓄的数目必须是规定号中的四个

枚举的应用方法

概念:enum(恐怕出现的因素列表);

选择:存款和储蓄数据,只可以存款和储蓄方面定义好的多少

始建枚举表:

mysql> create table my_enum(gender
enum(‘男’,’女’,’保密’)) charset utf8;

图片 26

插入数据:成效之一:规范数据,数据只可以是中间的五个

mysql> insert into my_enum
values(‘男’),(‘保密’); #有效数据

mysql> insert
into my_enum values(‘male’); #不当数据,没有该因素

图片 27

效用二:节省存款和储蓄空间(枚举别称:单选框):枚举实际存款和储蓄的是数额而不是字符串

在mysql中,系统也是电动转换数据格式的:而且着力和php一样(尤其是字符串数字)

注解字段存款和储蓄的数据是数值:将数据取出来+0就能够判定出原先的数据存的到底是字符串如故数值:假诺是字符串最终结出永远为0

mysql> select gender + 0, gender from
my_enum; #将字段取出来实行+0运算

图片 28

找出了枚举成分的实在规律:根据成分现身的顺序;从1发端上马编号

图片 29

枚举原理:枚举在展开数据正式的时候系统会自动建立数字与枚举成分的应和关系(关系放到日志中):然后在进行数据插入的时候,系统活动将字符转换到对应的数字存款和储蓄,然后在开展多少抓取的时候,系统活动将数值转换来对应的字符串显示。

因为枚举实际存款和储蓄的是数值所以可以直接插入数值

mysql> insert
into my_enum values (1),(2);

图片 30

五:集合字符串

聚拢跟枚举很接近:实际存款和储蓄的是数值,而不是字符串(集合是多选)

相会使用办法

概念:set(成分列表)

行使:能够动用要素列表中的成分(八个),使用,分隔

图片 31

mysql> create table my_set(hobby
set(‘篮球’,’足球’,’乒乓球’,’羽毛球’,’排球’,’台球’,’网球’,’棒球’)) charset utf8; #晤面中:每种成分都以对应2个二进制位,被入选为1,没有则为0,组后反过来。

 

创办集合表:

图片 32

安顿数据:能够选择三个因素字符串组合,有能够直接插入数值

mysql> insert into my_set
values(‘足球’,’台球’,’网球’);

mysql> insert
into my_set values(3);

图片 33

翻开集合数据

mysql> select
hobby + 0, hobby from my_set;

聚集中各样成分都以对应二进制位;

mysql> inster
into my_set values(255);

图片 34

聚拢七月素的逐条没有关系,最终系统都会去匹配顺序。

颠倒成分出现的顺序

mysql> inster into my_set
values(‘网球’,’台球’,’足球’);

图片 35

聚集的兵不血刃在于能够规范数据和空中,在其实使用中效能优先,所以很少使用。

六:Mysql记录长度

Mysql
中规定:任何一条记下最长不可能跨越65533个字节,(varchar 永远达不到理论值) varchar 的实际存款和储蓄长度能达到规定的标准多少需看字符集

UTF8
下 varchar 的其实顶配:21844 字符

GBK
下 varchar 的实际上顶配;32766 字符

图片 36

万一想用完655叁十一个字节长度需追加个tinyint 字段

图片 37

mysql记录着只要有别的1个字段允许为空,那么系统会自行从一切记录中保留一个字节来储存null(若想释放null所占据的字节,必须确定保障所以的字段都允许空)

图片 38

Mysql
中 text 文本字符串,不占用记录长度;额外部存款和储蓄器储,可是text文本字符串也是属于记录的一局地,一定须要占用记录中的部分长度十二个字节。(保存数据的地方和尺寸)

text 占用13个字节长度

mysql> create
table my_utf82(age tinyint not null,name varchar(21843) not
null,content text) charset utf8;

图片 39

七.列属性

列属性:真正约束字段的是数据类型,可是数据类型的牢笼很纯粹,因而要求部分卓越的封锁来扩展入保障证数据的合法性

列属性有众多:NULL/NOT NULL,defaul,prinary key,uniquee
key,auto_increment,comment

空属性:NULL(默认的)和NOT NULL(不为空)

即使暗许的,数据库基本都以字段为空,不过实际大家尽量确定保障拥有数据都不应有为空:空数据尚未意思;空数据尚未艺术出席运算。

图片 40

创立实际案例表:班级表(名字,体育场合)

mysql> creare table my_class(name
varchar(20) not null,room varchar(20) null) charset utf8; #代表允许为空,null不写暗中同意就是为空

图片 41

八.列描述

列描述:comment,描述没有实际意义:是专门用来叙述字段,会依据表创造语句保存:用来给数据库管理员来进行打探的。

创建表

mysql> create table my_teacher(name
varchar(20) not null comment ‘姓名’,money decimal(10,2) not null comment
‘工资’) charset utf8;

图片 42

九.默认值

暗中认可值:某一种数据会平日性的产出有些具体的值,能够再一初阶就钦赐好,再须要真实的数量时,用户能够选取性的运用暗中同意值。

暗许值关键字:default

mysql> create table my_default(name
varchar(20) not null ,age tinyint unsigned default 0,gender
enum(‘男’,’女’,’保密’) default ‘男’) charset utf8;

图片 43

暗中同意值的生效:使用,在数据开始展览插队时,不给改字段赋值

插入数据

mysql> insert into my_default (name)
values(‘高强’);

图片 44

想要使用暗许值,能够不一定区钦命列表;能够应用default关键字代替值

mysql> insert into my_default
values(‘范立峰’,’18,default);

图片 45