MySQL学习笔记(二)

简易工厂笔记
 两栽办法:
 第一种植:通过实例化对象创建
 第二栽:通过创设一个初指向象然后装进增强其性质和成效来实现
 差异性:前一模一样种通过类似创建的
对象,如果这些类继承同一个父类,他们父类原型上之法子是足以共用之;后同样栽通过寄生方式开创的对象还是一个初的个人,所以他们的法门就是不可知共同用了
 第一种与亚栽都 以产足球、篮球、网球也例
 第一种办法

— 回顾

 1         var Basketball = function(){
 2              this.intro = '篮球盛行于美国';
 3          }
 4          Basketball.prototype={
 5              getMember:function(){
 6                  console.log("每个队伍需要5名队员")
 7              },
 8              getBallSize:function(){
 9                  console.log("篮球很大");
10              }
11          }
12          var Football = function(){
13              this.intro="足球在全世界范围类很流行";
14          }
15          Football.prototype={
16              getMember:function(){
17                  console.log("每个队伍需要11名队员")
18              },
19              getBallSize:function(){
20                  console.log("足球很大");
21              }
22          }
23          var Tennis = function(){
24              this.intro="每年有很多网球系列赛";
25          }
26          Tennis.prototype={
27              getMember:function(){
28                  console.log("每个队伍需要1名队员")
29              },
30              getBallSize:function(){
31                  console.log("网球很小");
32              }
33          }
34          
35          //第一种球工厂
36          var ballFactory=function(name){
37              switch(name){
38                  case 'basketball':
39                    return new Basketball();
40                  case 'football':
41                    return new Football();
42                  case 'tennis':
43                    return new Tennis();
44              }
45          }

数据库基础知识:

第一栽简单工厂测试代码

1.涉项目数据库(磁盘),建立以提到模型上之数据库,数据结构(二维表),浪费空间。

1          //第一种测试
2          var football=ballFactory("football");
3          console.log(football.intro);
4          football.getMember();
5          football.getBallSize();

操作数据的一声令下集合:SQL(DDL,DML[DQL]和DCL)

仲栽简易工厂

完整性约束:表内和发明中(实体)

 1          //第二种
 2          function createBall(type,intro,num,ballsize){
 3              var o = new Object();
 4              o.intro = intro;
 5              o.num = num;
 6              o.ballsize = ballsize;
 7              o.getMember = function(){
 8             //公共方法getNember
 9                  console.log("每个队伍需要"+this.num+"名队员");
10              }
11              o.getBallSize = function(){
12             //公共方法getBallSize
13                  console.log(this.ballsize);
14              }
15              if(type == 'basketball'){
16                  //篮球差异部分
17              }
18              if(type=="football"){
19                  //足球差异部分
20              }
21              if(type=="tennis"){
22                  //网球差异部分
23              }
24              return o;
25          }

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

其次种简易工厂测试

mysql服务端对象:DBMS->Datebase->Table->fields

         //第二种测试
         var football2=createBall("football","足球在全世界范围类很流行",11,"足球很大");
         console.log(football2.intro);
         football2.getMember();
         football2.getBallSize();

sql 基本操作:库操作,表操作(字段)和数据操作

 

字符集问题:中文数据问题

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

改变服务器返回数据的字符集:character_set_results

快捷方式:set names 字符集(三码事)

web乱码问题:浏览器解析,php处理(本地文件),数据库处理

校队会合问题:比较规则:_bin , _cs和_ci

— 数据类型(列类型)

所谓的数据类型:对数码进行合并之归类,从网的角度出发为了能够使统一之方式展开田间管理再好的使用有限的空间。

SQL 中将数据类型分成三要命类:数值类,字符串类型及时空项目。

图片 1

一.数值型

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

1.整数型

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

Tinyint :迷你整型,使用一个字节存储,表示的状态最好多号256只(常用)

smallint:小整形,使用2个字节存储,表示的状态太多位65536栽

mediumint:中整型,使用3独字节存储,表示

int:标准整型,使用4单字节存储(常用)

bigint:大整型,使用8只字节存储

图片 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

证明:显示涨幅的意思是以当数码不够显示涨幅的时刻,会活动为数据化对应之亮涨幅;通常要追加配一个前导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
: 单精度,占用4个字节存储数据,精度范围约为7各项左右

Double: 双精度,占用8独字节存储数据,精度方位大概也15员左右

图片 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 表示的限制是自1000年始至9999年,有0值:0000-00-00 00:00:00

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

Time:时间(段),指定的某部区间内,-时间到+时间

Timestamp:时间戳,并无是时间穿,只是从1970年开班的YYYY-mm-dd HH:ii:ss 格式和datetime 完全一致

Year:年份,两种象征形式,year(2)和year(4):1901-2156

图片 21

创时间日期表

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

图片 22

安插数据:时间time可以是负数,而且得是充分特别之负数,year 可以下2位数插入,也堪采取4位

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届2只字节来规定存储的其实尺寸:但是事实上要长逾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; #会师中:每个元素还是针对许一个二进制位,被选中为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
中确定:任何一样长长的记下最丰富无可知超过65535个字节,(varchar 永远达不至理论值) varchar 的实在存储长度会达多少用看字符集

UTF8
下 varchar 的实际上顶配:21844 字符

GBK
下 varchar 的莫过于顶配;32766 字符

图片 36

假若想用完65535个字节长度要追加个tinyint 字段

图片 37

mysql记录在要出另一个字段允许为空,那么网会自动从全体记录被保留一个字节来囤null(若想释放null所占用的字节,必须保证所以的字段都同意空)

图片 38

Mysql
中 text 文本字符串,不占用记录长度;额外存储,但是text文本字符串也是属记录之同有些,一定需要占用记录受之片段长度10个字节。(保存数据的地点和长度)

text 占用十只字节长度

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