郑州高考网站建设,工业信息化部网站备案系统,成品影视app下载有哪些软件,大连网站建设 选领超科技大白话从0开始回顾MySQL#xff0c;去除了一些繁琐的操作的演示以及内容#xff0c;如MySQL安装等#xff0c;本篇文章适合复习MySQL语法#xff0c;学习MySQL语句#xff0c;对MySQL不太熟练的同学#xff0c;希望对大家有一些帮助。
MySQL初体验
首先#xff0c;我将…大白话从0开始回顾MySQL去除了一些繁琐的操作的演示以及内容如MySQL安装等本篇文章适合复习MySQL语法学习MySQL语句对MySQL不太熟练的同学希望对大家有一些帮助。
MySQL初体验
首先我将Mysql安装到了如下位置 我们点进bin目录bin目录存放了许多可执行文件 通常我们是可以双击执行这些bin目录下的可执行文件常常会出现错误我们需要传递一些参数让它们正常运行如bin目录下有许多客户端程序比方说mysqladminmysqldumpmysqlcheck等我们启动客户端可执行文件一般参数格式如下 mysql -h主机名 -u用户名 -p密码 -p和密码之间不要有空格 本机连接可以忽略-h连接成功的前提是必须开启服务器程序可以在任务管理器中查看 虽然之后编写sql语句可能不在小黑框中编写我们还是需要简单介绍一下MySQL语句的注意事项 书写结束符号 ;\g\G(不以表格形式展现 没有大小写问题 NOW语句可以随意换行可以一次性提交多个语句使用\c放弃本次操作字符串表示 MySQL数据类型
Mysql把数据存到表中表由若干行组成每一行由若干列组成下图是一张文章表 一行代表一个文章的基本信息一列代表基本信息的一个属性每个属性有一定格式不同格式是不能乱填的比如不能把title填到用户Id中为了更好的规范表数据MySQL设计者针对属性不同格式定义的不同的数据类型。
数值类型
整数类型 计算机采用若干个二进制来表示数字一个二进制位只能表示21种信息也就是0和1。 无符号整数 符号1就表示1符号0表示0数字范围0 ~ 1有符号整数 最左端的二进制数表示正负号符号1就表示-1符号0表示0 数字范围-1 ~ 0二进制位无符号数代表数值有符号代表数值0 0000 1111 02-21 13-1
一个二进制位所能存储的信息实在太少计算机一般采用8个二进制位作为分配空间的基本单位也就是一个字节Byte我们采用的字节数越多意味着数值范围就越大但消耗的存储空间也就多所以我们可以是根据字节数的不同将整数划分为以下几个类型 在数据类型后面加上UNSIGNED单词表明是无符号数在数据类型后面加上SIGNED单词或者不加表明有符号数
create table t3(age tinyint unsigned
);在数据类型后面加显示宽度 (zerofill)整型显示宽度, 位数不足时用 0 填充
create table t7(id int(10) zerofill primary key auto_increment,name char(32)
);
insert into t7 values(12345, 5个);
insert into t7 values(1234567890, 10个);
insert into t7 values(123456789012, 12个);
select * from t7;浮点数类型 create table t5 (a float(10, 2),b double(10, 2),c decimal(10, 2)
);注意浮点数表示小数是不准确的比如0.3用二进制是无限循环小数有时候是需要进行取舍的, MySQL8.0之后float和double不推荐使用MD格式直接使用float和double即可
如果我们事先知道小数的范围就可以使用float(M,D)和double(M,D)这种格式M 是支持多少个长度, D 是小数点后面的位数
如果想要精准的保存小数我们可以采用定点数DECIMALM, DM的最大值为65 D的最大值为30D的值不能超过M的值它占用的存储空间与M和D有关这和它是如何解决小数因为取舍不精确有关它将小数点分割开将小数点左右俩个十进制整数分别存储下来关于它是如何分配的便简单概述感兴趣的同学可以网上寻找。
从小数点分别向左向右每隔9个十进制划为一组不足9个十进制也同样进行
组中的十进制位数占用内存大小1或 21字节3 或 42字节5 或 63字节7 或 8 或 94字节 很多场景并不需要精细化处理比如0.3元可以转化成20分进行存储这样使用整数存储即可还有在floatdoubledecimal类型后面添加unsigned是没有必要的并不会增加它们所能表示的正数范围 日期和时间类型 datetime
create table datetime_test (create_at datetime
);insert into datetime_test values(2019-4-2 16:54:00);
insert into datetime_test values(2019/4/2 16:54:00);
insert into datetime_test values(now());
-- 年份最大支持4个长度
insert into datetime_test values(10000/4/2 16:54:00); -- 错误
insert into datetime_test values(9999/4/2 16:54:00);time
create table time_test (create_at time
);insert into time_test values(12:12:12);
insert into time_test values(100:12:12);
insert into time_test values(-100:12:12);
insert into time_test values(10 10:12:12);
-- 时间的范围是: [-838:59:59 - 838:59:59]
insert into time_test values(839:12:12); -- 错误的timestamp 时间戳类型
时间戳类型在显示方面和datetime是一样的, 在存储上不一样范围从 1970-1-1 0:0:0 到 2038-1-19 11:14:07时间戳使用 4 个字节表示该值大小与存储的位长有关: 2 ** (4* 8 - 1)
create table timestamp_test (create_time timestamp
);insert into timestamp_test values(now());
insert into timestamp_test values(2038-1-19 11:14:07); -- 时间戳最大值
insert into timestamp_test values(2038-1-19 11:14:08); -- 错误year create table year( create_at_year);
-- 从1900年开始 - 1900255
insert into year values(now());
insert into year values(2155);
-- 年份最大值
insert into year values(2156); -- 错误在MySQL 5.6.4版本之后DATETIME存储空间被优化成了5字节提供对毫秒微秒的支持比如DATETIME0表示精确到秒DATETIME3表示精确到毫秒小时秒位在0~6之间选择保留的小数秒位不同需要增加的内存空间也不同 保留的小数秒位额外需要增加的存储空间00字节1或 21字节3或42字节5或 63字节
字符串类型 表一行数据字节数不能超过165535字节这个对text是不生效的 字符编码 : 字符是面向人的概念 字节是面向计算机的概念根据字符使用的字节数量是否是固定的可以分为下面俩种 1.固定长度编码 ASCII编码采用一字节GB2312采用2字节 2.可变长度编码 UTF-8采用1~ 4字节编码GB2312采用1~2字节编码Mysql中使用的utf8mb4就是正宗的UTF-8 CHAR 与 VARCHAR 类型的区别 允许的最大值范围不同。 注意无论是char(n)还是varchar(n),n表示的都是字符数而不是字节数。 char(n)类型里无论数据库使用的是哪种编码方式n的最大取值都只能取到255,char char(1),char(0)只能存和null,varchar(n)类型里如果使用的是Latin1编码最大值允许到65535(但是实际取值只能到65532,还要保留三个字节用来记录长度);如果使用的是UTF8编码最大值允许到21845(但是实际取值只能到21844,还要保留一个字符用来记录长度)。 数据库内存存储的长度不同。 char(n)类型里无论输入的内容是什么存储的长度都是 n个字符。例如数据类型char(10)写入字符串’张三’在数据库里存入的数据长度是10个字符,所占字节数为n * 编码集编码一个字符需要的最大字节。varchar(n)类型里存储的长度是不固定可变的。 对于空格的处理不同。 char类型在存储字符串时会将右侧末尾的空格去掉。varchar类型在存储字符串时会将右侧末尾的空格保留。 create table student (id int primary key auto_increment ,name char(20),city varchar(20)); -- 创建数据表
insert into student values(0, zhangsan , shanghai ); -- 插入数据select concat(id,name,good) from student where id1;
/*
从查询的结果中可以看到name左侧的空格保留了但是右侧的空格被去掉了
------------------------
| concat(id,name,good) |
------------------------
| 1 zhangsangood |
------------------------
*/
select name,length(name) from student where id1;
/*
从查询的结果中可以看到长度只包括左边的空格不包括右边的空格
--------------------------
| name | length(name) |
--------------------------
| zhangsan | 10 |
--------------------------
*/select concat(id,city,good) from student where id1;
/*
从查询的结果中可以看到city右侧的空格也保留了
------------------------
| concat(id,city,good) |
------------------------
| 1 shanghai good |
------------------------
*/
select city,length(city) from student where id1;
/*
从查询的长度中也可以看到city两端的空格都被保留了
-------------------------------
| city | length(city) |
-------------------------------
| shanghai | 15 |
-------------------------------
*/
Copybinary和varbinary类似于char和varchar不同的是它们包含二进制字符串不支持模糊查询之类的BINARYM和VARBINARY这个M存的是最大字节数。
枚举(enum)
多选一的时候使用的一种数据类型
在前端使用单选框的时候, 枚举类型可以发挥作用
枚举类型的优点:
限制了可选值节省空间运行效率高
create table t6(name varchar(32),sex enum(男,女,保密) default 保密
);-- 枚举类型的计数默认从1开始
insert into t6 set name王宝强,sex1;
Copy集合(set)
SET最多可以有64个不同的成员。类似于复选框, 有多少可以选多少。
create table t7 (name varchar(32),hobby set(吃,睡,玩,喝,抽)
);insert into t7 values(张三,睡,抽,玩,吃,喝);
insert into t7 values(李四,睡,抽);BIT类型
类型占用存储空间含义BITM近似M 7/ 8存储M个二进制位的值
BLOG类型
这个可以用来存储图片压缩文件音频等但我们通常将他们村在文件系统中然后将路径存到数据库表中
MySQL初体验到这就结束啦如果您感觉有帮助的话请点赞收藏您的点赞是我创作的动力。