"""" 上节课复习: 登入:mysql -uroot -padmin (本机) 一.库的操作(文件夹): 创建:create database mydb; 修改:alter database mydd charset gbk 看:show create database mydb 删除:drop database mydb 二.表的操作: 创建:create table mydb.t1(id int ,name char ,age int); 删除:drop table t1; 看:show table t1 ;show create table t1;desc t1 修改:alter table t1 add|drop|modfiy|change 三.数据: 创建:insert into t1 values(1,'jxl",11); 删除:delete from t1 name where id =1 查看:selele * from t1; 修该:update t1 set name = "JXL" where id =1; 今日内容: 1.数据的存储引擎: 存储数据的核心代码 什么是引擎? >>>>>一个功能的核心部分 引擎可以分几类: 为什么要分类? ..... mysql : 核心功能是存储数据 涉及到存储数据的代码, 查看引擎:show engines 不同的引擎测试: 创建表时在最后指定引擎的名称 :engine=xxx create table t1(id int )engine= innodb; 默认支持的功能多 create table t2(id int not null)engine= csv ; >>数据存储的为表格 create table t2(id int not null)engine= menory ; >>数据存储在数据库服务端的缓存中,重启服务器就没有 create table t2(id int not null)engine= blackhole ; 2.建表的完整语句 table create table 文件夹.表名(字段名称 数据类型[长度,约束条件]) 必选:字段名称,数据类型 表名 可选:长度,约束条件 长度:指的是数据的长度 数据类型也是一种约束条件 约束条件:数据设置的规范,(指的是除了数据类型额外的规范) create table t1(id int(10),name char(3)); 如果添加的数据超过了指定的长度,超出范围的数据会被丢弃 注意:字段名 表名 库名 不能和mysql的关键字相同(select create) 3.数据类型: 1. 为了更加准确地描述某种事物 2. 描述起来更加方便 3. 节省内存空间 1 啊 你 utf8下占5 1 啊 你 unidcode 下占6 mysql 支持的数据类型:unsigned(无符号) 一. 整型: 默认是有符号的 需要一个二进制位存放符号 tinyint(1个字节):(默认是有符号的:最大值是127 需要一个二进制位存放符号) 无符号的最大值:255 有符号的最大值:127 smallint(2个字节): mediumint(3个字节): int(4个字节):****** bigint(8个字节): 给整形加上约束 unsigned 来表示无符号;如果数据超出范围尽可能的保存最大的 eg: tinyint模式下 在无符号输入128 则会保存127 在有符号的输入-1280 则会保存-128 修改严格模式: 以上出现的现象为:mysql的非严格模式 查看当前的模式:show variables like "sql_mode"; 修改为严格模式:set global sql_mode="STRICT_TRANS_TABLES"; 如果值超出范围会报错 在一些版本下默认的就是严格模式 怎么选着:能够保存数据的最小的类型 长度限制对于整型的意义: create table t1(id int(10) ); insert into t1 values(111111) select * from t1 ; 发现存储成功 说明这里的10(宽度) 限制的不是数据的长度,而是显示的宽度 如果你的数据超过了显示的宽度,有几个显示几个,如果不足的话,需要的告诉他用什么来补全 create table t1(id int(10) serofill); 不足用零补全 ******** 要限制显示宽度: 1.创建表时,给整形加上宽度 2.用zerofill 二.浮点型: float(4个字节): ****** double(8个字节):**** decimal(不确定 手动自定):**** 相同点: 小数部分的最大长度为30 float 和 double 的整体的(加上小数点部分)最大长度为255 不同点: decimal的整体的最大长度为65 精度不同 double 比 float 精度高 decimal 是准确的 不会丢失精度 给浮点设置宽度限制: float(m,d) double(m,d) decimal(m,d) m表示:浮点数的整体的长度, d表示 小数部分的长度 例如:float(5,3) 最大值:99.999 如何选着:按照需求选着 三. 字符串; char:定长字符 长度是固定的 无论你存储的数据是有多,占的容量是一样的 char(3) 在硬盘保存数据还是占用3字符长度 "a" 实际是" a" varchar: 变长字符:存储的数据有多长就占用多长 varchar(3) 在硬盘保存数据还是占用1 字符长度 "a" 实际是:"a" 能支持的最大长度为65535 ,用于保存数据长度最长为两个bytes yxx exx lxx zxx char(3) (1bytes + yx)(1bytes +exx )(1bytes+1x) varchar() 如果是可变的长度(varchar):不知道数据从哪里开始从哪里结束,所以要一个位置保存数据逇长度,保存数据的长度最大占用2bytes 1 验证: 使用一个函数:插char_length 的长度 create table t1(a char(4), b varchar(4)) insert into t1 value("x","x"); select char_length(a),char_length(b) from t1 ; 两各字段都为1 >>> 是因为mysql在存储时 自动加上个空格的 对使用者而言都是无意义的,所以mysql会自动将空格处理掉 设置现原形: set glodal sql_mode = "PAD_CHAR_TO_FULL_LENGTH,STRICT_TRANS_TABLES" 重启服务器 当你在执行这样的查询语句是 mysql会自动将参数末尾的空格去掉 模糊查询:select * from t1 where name like "yh%"; % 0 个或多个字符 模糊查询:select * from t1 where name like "yh_"; _一个任意字符 当你在使用模糊查询时,要注意 定长字符 后面可能会有空格 所以最好在后面加上百分号 % 如何选择: char : 存取效率高 浪费存储空间 varchar: 存取效率低于char 节省存储空间 char varchar 长度都比较小 最大是65535 大文本类型: Text:TINYTEXT TEXT MEDIUMTEXT LOGINTEXT BLOB系列 TINYBLOB BLOB MEDIUMBLOB LONGBLOB 二进制类型:用于存储多媒体数据 比如视频 但是我们一般不会将真实的内容存储,而是将而文件路径存储在数据库中 BINARY系列 BINARY VARBINARY 四.时间日期: time 是分秒 year 年份 data 日期 年月日 datatime 日期加时间 年月日 十分秒 年份最大是9999 可以为空 默认为当前的时间 timestamp 时间戳 从1970-1-1 开始算 年份最大是2037 共同点: 时间的获取都是通过字符串类型 都可以用now()函数来来插入当前的时间