哈喽,大家好!我是保护小周ღ,本期为大家带来的是 MySQL 数据库常用的数据类型,数据表的基本操作:创建、删除、修改表,针对修改表的结构进行了讲解,随后是如何向数据表中添加数据,浅浅的提了一下表中数据的查询,更多相关知识敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★*
数值 1 2 3.14
tinyint 十分小的数据 1个字节
smallint 较小的数据 2个字节
mediumint 中等大小的数据 3个字节
int 标准的整数 4个字节
big 较大的数据 8个字节
float 浮点数 4个字节
double 浮点数 小数 8个字节(精度问题)
decimal 字符串形式的浮点数 (金融计算的时候一般使用)
字符串
char 固定大小字符串 0-255 char(5) 00001
varchar 可变字符串 0-65535 varchar(5) 1
tinytext 微型文本 2^8 - 1
text 文本串 2^16 -1 保存大文本
时间日期
date YYYY-MM-DD,日期 (year,month,day)
time HH: MM : SS 时间格式(hour:minutes,seconds)
datetime YYYY-MM-DD HH: MM:SS (年月日,时分秒)最常用的时间格式
timestamp 时间戳, 1970.1.1到现在的毫秒数!
year 年份
null
没有值, 未知
注意,不要使用null进行运算,结果肯定为null
上面看到的这类基本数值数据类型都是有符号的,MySql 也是支持无符号的数据类型,unsigned 作为前缀,但是 官方也建议无符号类型不建议使用,特定情况下会产生很严重的误差,例如,a - b, b > a,但是由于没有符号限制,两者相减反而会产生一个很大的数,在MySql 后续的版本中也不会在支持无符号类型了。
在使用浮点型数据时,最好选择decimal ,他的精度比 float 、double 更高,语法: decimal(M,N) M : 整个数据的总长度,N:数据小数的位数。例如: 3.14, M = 3, N = 2; 在表示货币的时候我们可以采用 int 类型,这样就不会有精度的问题,采用”分“为单位。例 :123,表示 1.23 元。
我们在使用时间类型是,不知道该用什么样的格式插入时间,在插入时间的时候,是通过特定的字符串来表示时间日期的,例如: "2023-02-9 16:12:00", 对于字符串来讲 英文单引号或者双引号都可以。日期年月日之间用 '-' 减号连接,与时间之间隔一个空格,时间之间用 ':' 连接。以这样的形式输入的字符串,服务器就会识别为时间。如果我们想使用当前系统时间,SQL 提供了一个返回当前系统时间的函数 now(),这个函数赋值即可。
书接上篇,我们已经学习了如何操作数据库,本篇学习如何操作数据表,在操作数据表的时候,需要选中数据库;
声明:本篇博客讲述的是基础操作,关于数据库的字段属性尽请期待下一篇博客。
基础语法 :
create table table_name (
`字段名` [属性] [索引] [注释],
`字段名` [属性] [索引] [注释],
...
`字段名` [属性] [索引] [注释],
…… ……
);
那么在创建一个表之前呢,也可以判断一下这个表是否存在,就像创建数据库时的操作一样。
create table if not exists student (
……
);
可以使用 comment 增加字段说明,只是给 sql语句提供一个注释作用,在创建的时候。
例如:
create table stu_test (
id int,
name varchar(20) comment '姓名',
password varchar(50) comment '密码',
);
例题:
-- 创建学生表(列,字段) 使用SQL创建
-- 学号int 姓名 varchar(10),varchar性别sex('男','女'),身高decimal(3,2),加入时间 datetime。
-- 字符串使用 单引号括起来!
-- 所有语句后面加,(英文的),最后一个不用加
目前我们已经创建好了一个student 的数据表,接下来的操作是查看一下这个表的结构。
desc teble_name;
desc ->describe 的缩写,描述一个表的结构。
创建了一个表,那自然要学习如何删除一个表,。
删除表(drop):(如果表存在再删除)
drop table if exists student;
--当然最稳妥的操作是 指定数据库之后再选择表,这样就可以避免误操作
drop table if exists school.student;
--这样删也是可以的,但是更容易报错
drop table student;
因为我们是student 数据表是创建在 school 数据库里面,然后可以通过 ‘.’这个符号来约束一下,避免误操作,这也是一种精确表示的方法。
==所有的创建和删除操作,尽量加上判断以免报错==
-- 修改表结构
依据上表 student 表为例,如果我们在创建好表的结构之后,难免在会有所纰漏,比如说少添加了一个字段,又或者是发现某个字段不合适需要删除,还有修改字段属性等等……
student 表 新增一个叫做 telephone (手机号)的字段,它的类型是可变字符串。
语法:add 是关键字
alter table 【表名】 add 【新增字段名】【属性】 ;
假如我们发现表中的telephone (手机号)的字段 属性的长度给少了,所以我们需要修改一下这个字段。
语法:modify 是关键字
alter table 【表名】 modify 【字段名】【修改后的属性】 ;
假如我们发现表中的某个字段的 字段名没取好名,也是可以修改的,例如将 sex 修改为 gender (性别)
语法: change 是关键字
alter table 【表名】 change 【原字段名】【修改后的字段名】【属性】 ;
这个就很好理解了,删除某个字段(列名), 本次删除 telephone 字段。
语法:
alter table 【表名】 drop 【字段名】;
将student 数据表 表名修改为 stud。
语法:关键字 rename
alter table 【表名】 rename 【修改后的表名】;
执行语句后表名已经被修改,以上操作,轻易不要操作,容易造成一系列的连锁反应(蝴蝶效应,动了一个表,可能需要修改多个表的数据,关系型数据库),在创建的时候就将表的结构计划好,尽可能的减少表结构的修改。
语法:
insert into 表名([字段名1,字段名2,字段名3])values('值1'),('值2)',('值3')...
into 其实可以不用写,可以根据个人意愿决定。
这种方式插入数据,需要指定需要插入的列名(字段),然后根据列名(在记录没有约束的情况下)插入数据。
意思就是你可以只插入“李四" 独占一行。注意观察插入日期的格式。
此处使用now() 函数来插入日期时间。
多行插入只需要写一个 values 即可,多行插入的性能也是优于 单行插入的,因为MySql 本质上就是客服端服务器的程序,客服端发出指令,服务器进行相应的处理,一行一行的插入意味着反复发送指令,这个点不知道大家能否能 get 到呢?
注意事项:
字段和字段之间使用英文逗号隔开
字段是可以省略的,但是后面的值必须要一一对应
可以同时插入多条数据,VALUES后面的值需要使用,隔开即可。
value,是一个具体的值,也可以是一个函数
语法:
SELECT 字段,...FROM 表
以student 表为例。
-- 查询所有的员工 SELECT 字段 FROM 表
如果我们需要一次性查找所有的字段,其实不用讲所有字段全部列举出来,可以使用 ”*“ 来替代。
可以看出两者的结果是一样的。
-- 查询指定字段,ID + Name
-- 别名,给查询结果起一个名字 AS, 可以给字段取别名,也可以给表取别名
-- as可以加也可以不加
这样看起来舒服多了吧,哈哈,as 不加也可以运行,但是最好是加上,避免将别名看成字段。
-- 别名可以简化字段或者表的名称,更精准的输入
-- 给student表起别名为stu
不使用 as 也是可以的,在复杂的查询中,使用别名查询,能提升效率。
好了好了,关于查询就浅浅的说一一下啦,关于查询还有许多知识,一篇写不下,下篇博客将着重讲解查询语句。
至此,Mysql 系列的第二篇内容博主已经分享完了,希望对大家有所帮助,如有不妥之处欢迎批评指正。
本期收录于博主的专栏——Java & MySQL,适用于编程初学者,感兴趣的朋友们可以订阅,查看其它“MySQL 数据库以及Java JDBC 编程的相关知识”。
下一期:MySQL 字段的基本属性,数据表的修改、删除、然后重点—— 查询。
感谢每一个观看本篇文章的朋友,更多精彩敬请期待:保护小周ღ *★,°*:.☆( ̄▽ ̄)/$:*.°★*
遇见你,所有的星星都落在我的头上……
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串
我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit