网球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