mysql
几个基本概念:
数据data:
数据库database:用于存储一个项目/产品/软件所使用的各种数据的一个逻辑单位。
数据管理系统dbms:其实指一个具体的数据库软件:database management system
表(数据表)table: 用于存储一种数据的“结构形式”,基本就是行列对齐的外观样式。
字段filed,列column:一个数据表中的一个纵列,其有一个名字,又叫字段
行 row,记录record:
数据存储的“表现”:
我们通过代码(语句),可以对各种数据进行操作,但其实,在文件表现,其实只是几个文件名而已,具体在数据库的存储目录中:
1. 每个数据库,会对应一个文件夹
2. 每个数据表对有对应的一个或者多个文件
mysql数据库操作时的基本模式(和流程)
1. 建立连接(认证身份)
2. 客户端向服务器端发送sql命令。
3. 服务器端执行命令,并返回执行的结果
4. 客户端接收结果(并显示)
5. 断开连接
mysql数据库的系统级操作及基本语法规定
启动/停止mysql数据库服务:
命令行模式(管理员模式):
启动: net start mysql
停止: net stop mysql
数据库的备份与恢复
备份: 就是将一个数据库,完整地"转换为"一个可以随时"携带和传送"的文件.
恢复: 就是将一个备份的数据库文件,完整地还原为一个可以使用的数据库.
语法:
备份: mysqldump -h 服务器地址 -u 登录名 -p 数据库名>文件名
恢复: mysql-h 服务器地址 -u登录名 -P 端口号 -p 数据库名<文件名
注意:
1. 这两个命令,都是在"没有登录进入"的时候使用
2. 其中mysqldump命令还要求为管理员身份
3. 通常,恢复,就是指恢复原来数据库中的所有表数据信息及其他信息,而数据库名可以随便取.
基础语法规定
注释: 1. 单行注释: #注释内容 -- 注释内容(注意: 两个--后面有一个空格)
2.多行注释: /*注释内容*/
语句行:
默认情况下,以一个英文分好作为一条语句的结束!而且,常规的操作中,都是"一次执行一条语句";
但: mysql中,可以认为设定语句结束符,做法如下:delimiter 新的结束符 此行之后,就可以使用新的结束符.
数据库定义语句:
创建数据库:create databse 数据库名 charset 编码名 collate 排序规则
说明: 1. 字符编码名称是用于设定当前数据库中存储的字符串内容以什么编码来存储.
2. collate排序规则用于设定其中的字符内容的"大小关系"(先后排序):对于英文,基本没有任何问题,但对于中文就成问题了.排序规则,就是用于设定类似这种字符大小关系或先后顺序的一种规定.实际我们的代码中只是一个排序规则名.而且,通常每种字符编码(字符集),都有一个默认的排序规则,所以 通常都是不写的.
显示mysql中所以可用的字符编码: show charset;
实际应用中, 我们使用某个字符集(字符编码),然后可用的与之对应的排序规则其实可选项很少,通常只有两个.当然,我们一般也都不使用它.
删除数据库: drop database[if exists] 数据库名称;
说明: 1.if exists 是用于一直"安全运行"考虑.如果数据库不存在,也不会报错.
修改数据库(字符编码):
基本上,就是修改数据库的"数学而已":只有2个:
修改编码:
修改排序规则:
alter database 数据库名 charset 新的编码 collate 新的排序规则名
显示所有数据库: show databases;
显示一个数据的创建语句: show create database 数据库名.
选择某个数据库: use 数据库名:
字段类型(数据类型):
总览:
mysql中,数据类型主要分3大累: 数字型,字符型,时间型;
数据类型,在mysql中,主要用于创建一个表的时候,设定字段的类型.
比如: create table 表名(id int, f1 float, f2 double, f3 time, f4 text);
整数类型:
主要有: int, tinyint, smallint, mediumint, bigint
整数类型所占空间(字节):
int: 4个字节,即32位
tinyint: 占一个字节,即8位; 最多能存储256个数字,默认范围是-128-127
bigint: 占8个字节,即64位.
整数类型字段的设定形式:
类型名 [M] [unsigned] [zerofill]
说明:
1. M表示设定给整数的"显示长度",即select输出的时候,123可能显示为000123(假设M为6)
2. unsigned 用于设定该整数位"无符号整数",其实就是没有负数.
3. zerofill 用于设定是否填充"0"到一个数字的左边.此时,需与设定的长度M配合使用.
4. 如果设置了zerofill,则自动也就表示同时具备了unsingned
小数类型
主要有3种: float, double, decimal
float: 单精度浮点型,使用4个字节存储数据,其精度大约只有6-7个有效数字数位;
double: 双精度浮点型,使用8个字节存储数据,其精度大约只有20个有效数字数位;
decimal:定点小数类型,整数部分最长可以有65位,小数部分最长可以有30位.一般设置格式为:decimal(总位数,小数位)
扩展PHP中操作mysql数据的几个函数:
$n1 = mysql_num_rows(结果集); //获得该结果集的数据行数
$n2 = mysql_num_fields(结果集); //获得该结果集
$name = mysql_field_name(结果集,$i); //获得结果集的第i个字段的名字!i从0开始算起\
字符号类型:
mysql中的字符串,应该使用单引号引起来.
varchar类型: 可变长度字符串,使用时我们必须设定其长度,最大长度" 理论值"65535,实际其实最大只能65533.但考虑到存储的字符编码不同,也会有进一步的减少,比如如果存储中文gbk,则最多是65533/2个;如果是存储中文utf8,最多是65533/3个.
注意: 这里的存储限制,其实都来源于一个表格的"一行"的数据存储最大容量限制:65535.
char类型: 不可变字符串,使用时通常需要设定其长度,如果不舍得,默认是1,最大理论长度是255个.定长字符串适用于存储的数据都是可预见的明确的固定长度的字符,比如手机号,中国邮政编码,实际存储的时候,如果少于设定长度,也能存储,但都会不空格填满.
enum类型: 单选项字符串数据类型.它非常适合于存储表单界面中的"单项选值";它设定的时候,是需要给"固定的几个选项".然后存储的时候,就可以存储,就只存其中一个值:
形式如下: enum(选项1,选项2,选项3);
实际内部: 这些字符串选项值对应的是如下数字值: 1, 2, 3, 4, 5.
set类型: 多选项字符串数据类型.它非常适合于存储表单界面中的"多选项值";
它设定的时候,也需要给定"固定的几个选项",然后存储的时候,就可以存储其中若干个值;
形式如下: set("选项1","选项2","选项3",......);
实际内部: 这些字符串选项值对应的是如下数字值:1,2,4,8,16,...最多64个选项.
写入形式: 可以用该选项字符串并用逗号分开本身,也可以用对应数字的和:
text类型: 它成为"长文本"字符类型.通常,其中存储的数据不占据表格中的数据限制.其最长可存储65533个字符. 其他同字符类型:smalltext,tinytext,longtext.
其他: binary类型:不可变二进制字符串类型 varbinary:可变二进制字符串类型 blob类型: 二进制数据类型,但其适用于存储"图片","其他文件"等,但极少用!
时间类型:
datetime类型: 时间日期类型
date类型: 日期类型
time类型: 时间类型
year类型: 年份类型
timestamp: 时间戳类型,就是指一个时间的"数据值" --本质其实一个数字,类似js中的GetTime(),或php中是Time(),他们都得到的是一个"整数数字". 它的一个重要作用是: 它会自动获取时间戳的数据值--相当于"now()".
在应用中,时间日期类型,在们自己给的的数据情形下,需要使用'单引号'引起来,跟字符串一样!