在学习PHP与MySQL时,利用PHP操作MySQL插入数据时,发现插入中文时时乱码,创建数据库以及数据库表时均制定了utf-8编码,一开始是html页面并没有设置为utf-8编码,在将html页面设置为

在SQL Server中,为Partition Scheme多次指定Next
Used,不会出错,最后一次指定的FileGroup是Partition Scheme的Next
Used,建议,在执行Partition Split操作之前,都要为Partition
Scheme指定Next Used。

1.Character 字符串:

<meta http-equiv="content-Type" content="text/html;charset=UTF8"> 

但是,SQL Server是否提供metadata,查看Partiton Scheme是否指定Next Used
FileGroup?答案是系统视图:sys.destination_data_spaces。如果存在FileGroup被指定为Next
Used ,那么视图返回的Partition的个数会比Partition
Function划分的分区数量多1个。

数据类型 描述 存储
char(n) 固定长度的字符串。最多8,000个字符。 n
varchar(n) 可变长度的字符串。最多8,000个字符。  
varchar(max) 可变长度的字符串。最多1,073,741,824个字符。  
text 可变长度的字符串。最多2GB字符数据  

以及PHP代码中添加

一,分析视图:sys.destination_data_spaces

 2.Unicode字符串:

header("Content-type:text/html; charset=utf-8"); 

该视图返回三列,表示Partition
Scheme的每个Partition和FileGroup之间的关系:

数据类型 描述 存储
nchar(n) 固定长度的Unicode数据。最多4,000个字符。  
nvarchar(n) 可变长度的Unicode数据。最多4,000个字符。  
nvarchar(max) 可变长度的Unicode数据。最多536,870,912个字符。  
ntext 可变长度的Unicode数据。最多2GB字符数据  

后,发现插入到数据库的中文依然是乱码。

  • partition_scheme_id
    :ID of the partition-scheme that is partitioning to the data space.
                     
  • destination_id
    :ID (1-based ordinal) of the destination-mapping, unique within the
    partition scheme.     
  • data_space_id
    :ID of the data space to which data for this scheme’s destination
    is being mapped.

 3.Binary类型:

   
百思不得其解,后经度娘发现,需要在连接数据库后,显示设置连接使用utf-8编码。。。。

从表的存储结构来分析这三列的意义:

数据类型 描述 存储
bit 允许0,1或NULL  
binary(n) 固定长度的二进制数据。最多8,000字节。  
varbinary(n) 可变长度的二进制数据。最多8,000字节。  
varbinary(max) 可变长度的二进制数据。最多2GB字节。  
image 可变长度的二进制数据。最多2GB。  
<?php
$sqldb = new mysqli("localhost", "root", "", "project");
if (mysqli_connect_errno())
{
    printf("Connect failed:%s\n", mysqli_connect_error());
    exit();
}
mysqli_query($sqldb, "set names utf8"); //utf8 设为对应的编码
...
mysqli_close($sqldb);
?>
  • **partition_scheme_id :**是数据表存储的空间,该空间不是具体的某个FileGroup。普通的表只有一个分区,只能存储在单个FileGroup中,但是,通过Partition
    Scheme,将表数据分割成多个分区,每个分区存储到指定的FileGroup中,在物理存储上,每个分区都是分开(separate)存储的。
  • destination_id:是Partition
    Number,每个分区的编号
  • data_space_id:是FileGroupID,分区存储的FileGroup。

4.Number类型:

mysqli因为默认是latin-1编码,当你的页面时utf-8编码是,就会产生页面乱码问题。

二,测试用例

数据类型 描述 存储
tinyint 允许从0到255的所有数字。 1字节
smallint 允许从-32,768到32,767的所有数字。 2字节
int 允许从-2,147,483,648到2,147,483,647的所有数字 4字节
bigint 允许介于 -9,223,372,036,854,775,808 和 9,223,372,036,854,775,807 之间的所有数字。 8字节
decimal(p,s)

固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。

p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。

s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。

5-17 字节
numeric(p,s)

固定精度和比例的数字。允许从 -10^38 +1 到 10^38 -1 之间的数字。

p 参数指示可以存储的最大位数(小数点左侧和右侧)。p 必须是 1 到 38 之间的值。默认是 18。

s 参数指示小数点右侧存储的最大位数。s 必须是 0 到 p 之间的值。默认是 0。

5-17 字节
smallmoney 介于 -214,748.3648 和 214,748.3647 之间的货币数据。 4 字节
money 介于 -922,337,203,685,477.5808 和 922,337,203,685,477.5807 之间的货币数据。 8 字节
float(n) 从 -1.79E + 308 到 1.79E + 308 的浮动精度数字数据。 参数 n 指示该字段保存 4 字节还是 8 字节。float(24) 保存 4 字节,而 float(53) 保存 8 字节。n 的默认值是 53。 4 或 8 字节
real 从 -3.40E + 38 到 3.40E + 38 的浮动精度数字数据。 4 字节

1,创建分区函数

5.Date类型

-- create parition function
CREATE PARTITION FUNCTION pf_int_Left (int)
AS 
RANGE LEFT 
FOR VALUES (10,20);
数据类型 描述 存储
datetime 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 3.33 毫秒。 8 bytes
datetime2 从 1753 年 1 月 1 日 到 9999 年 12 月 31 日,精度为 100 纳秒。 6-8 bytes
smalldatetime 从 1900 年 1 月 1 日 到 2079 年 6 月 6 日,精度为 1 分钟。 4 bytes
date 仅存储日期。从 0001 年 1 月 1 日 到 9999 年 12 月 31 日。 3 bytes
time 仅存储时间。精度为 100 纳秒。 3-5 bytes
datetimeoffset 与 datetime2 相同,外加时区偏移。 8-10 bytes
timestamp 存储唯一的数字,每当创建或修改某行时,该数字会更新。timestamp 基于内部时钟,不对应真实时间。每个表只能有一个 timestamp 变量。  

2,创建分区scheme

6.其他数据类型

--create partition scheme
CREATE PARTITION SCHEME PS_int_Left
AS 
PARTITION pf_int_Left
TO ([primary], [primary], [primary]);
数据类型 描述
sql_variant 存储最多 8,000 字节不同数据类型的数据,除了 text、ntext 以及 timestamp。
uniqueidentifier 存储全局标识符 (GUID)。
xml 存储 XML 格式化数据。最多 2GB
cursor 存储对用于数据库操作的指针的引用。
table 存储结果集,供稍后处理。

3,在split partition之前,必须使用alter partition scheme 指定一个Next
Used FileGroup。如果Partiton Scheme没有指定 next used
filegroup,那么alter partition function split range command
执行失败,不改变partition scheme。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注