未分类

数值分为两类整数小数整数类型概述SQL的整数类型有5种有符号就是正负数都可以存储,无符号只能存正数,需要unsigned修饰。Tinyint:占位1字节有符号:-128~127无符号:0~255Smallint:占位2字节有符号:-32768~32767无符号:0~65535Mediumint:占位3字节有符号:-8388608~8388607无符号:0~1677215Int:占位4字节有符号:-2147483648~2147483647无符号:0~4294967295Bigint:占位8字节有符号:-9223372036854775808~9223372036854775807无符号:0~9223372036854775807*2+1使用只用int举个例子,其他也是同理。创建表createtablet(t1int,#默认有符号t2intunsigned,#无符号不能插入负数t3int(4),/*数值代表查询结果显示的长度(不是范围,范围是intbigdata使用什么类型确定的),这样单独写是看不出效果的。*/t4int(4)unsignedzerofill/*1.需要转换成无符号添加不足长度0填充(zerofill)来显示。2.如果使用某些软件查询,查询结果可能会把填充的0去掉。*/)插入数据insertintotvalues(-1,1,1,1)查询有填充的0。mysql>select*fromt;+------+------+------+------+|t1|t2|t3|t4|+------+------+------+------+|-1|1|1|0001|+------+------+------+------+1rowinset(0.00sec)小数类型概述SQL的小数类型可以分为两大类小数型,常用于计算,浮点的运算在精度上要求不高(了解)。float(M,D):占有4字节范围:±1.75494351E-38~±3.402823466E+38double(M,D):占有8字节范围:±2.2250738585072014E-308~±1.7976931348623157E+308定点型,常用于货币的计算dec(M,D)是decimal(M,D)的缩写。dec(M,D):占有M+2个字节范围:最大取值范围与double相同,给定dec的有效取值范围由M和D决定特点M&D详解M&D的作用M:整数位数+DD:小数的位数M&D都是可以省略的小数类型省略,就不受位数限制定点数省略,将会默认dec(10,0)使用创建表createtablenum.f(f1float,#不带参数f2float(5,2),#带参数,超过范围会报错f3dec,#不带参数默认dec(10,0)f4dec(5,4)#达不到5长度,小数后0填充)查看表的结构关注表字段的Type。mysql>descf;+-------+---------------+------+-----+---------+-------+|Field|Type|Null|Key|Default|Extra|+-------+---------------+------+-----+---------+-------+|f1|float|YES||NULL|||f2|float(5,2)|YES||NULL|||f3|decimal(10,0)|YES||NULL|||f4|decimal(5,4)|YES||NULL||+-------+---------------+------+-----+---------+-------+4rowsinset(0.01sec)插入数据insertintofvalues(-1,1.56,1,1.56)查看结果dec类型填充的0,在某些软件查询会被过滤。mysql>select*fromf;+------+------+------+--------+|f1|f2|f3|f4|+------+------+------+--------+|-1|1.56|-1|1.5600|+------+------+------+--------+2rowsinset(0.00sec)

2020-3-7 845 0
2020-3-6 719 0
2020-3-6 771 0
2020-3-6 702 0
2020-3-5 731 0
2020-3-5 596 0
2020-3-5 609 0
2020-3-4 703 0
2020-3-4 719 0
未分类

概述连接查询又称多表查询,查询的字段来自于多个表,推荐使用SQL99语法内连接(SQL92语法不推荐使用)就是1992年推出的语法笛卡尔乘积在连接查询不加以限制时,就会产生笛卡尔乘积现象。笛卡尔乘积:A表字段3个值,B表字段4个值,最终结果3X4=12个值。selectb.name,b2.boyNamefrombeautyb,boysb2#----------------------#name|boyName|----------|-------|柳岩|张无忌|柳岩|鹿晗|柳岩|黄晓明|柳岩|段誉|Angelababy|张无忌Angelababy|鹿晗|Angelababy|黄晓明Angelababy|段誉|热巴|张无忌|热巴|鹿晗|热巴|黄晓明|热巴|段誉|等值连接对字段进行一定的限制selectb.name,b2.boyNamefrombeautyb,boysb2whereb.boyfriend_id=b2.id#--------------------------#name|boyName|----------|-------|热巴|鹿晗|Angelababy|黄晓明|非等值连接#统计不同工资的等级selecte.salaryas工资,jg.grade_levelas等级frommyemployees.employeese,myemployees.job_gradesjgwheree.salarybetweenjg.lowest_salandjg.highest_salorderby等级,工资#------------------------------------------------------#工资|等级|-----|--|2900|A|2900|A|3000|B|3000|B|3100|B|4800|B|4800|B|5800|B|6000|C|6000|C|自连接两个需要作连接条件的字段在一张表上。就是把同一张表重名为不同的名字,就可以当做两张表查询了selecte.employee_id,e.first_name,m.first_name,m.manager_idfrommyemployees.employeese,myemployees.employeesmwheree.employee_id=m.manager_id连接查询(SQL99)语法格式select字段from表1[连接格式]join表2on连接条件[连接格式]join表3on连接条件[where限定条件][groupby分组][having查询后限定条件][orderby排序]内连接内连接:查询的是两表的交集等值连接on后的连接条件是相等#每个职位的员工个数selectj.job_title职位名称,count(*)数量frommyemployees.jobsjjoinmyemployees.employeeseonj.job_id=e.job_id#相等groupby职位名称非等值连接on后的连接条件是不等的#职工的工资等级selecte.first_name名称,e.salary工资,j.grade_level等级frommyemployees.employeesejoinmyemployees.job_gradesjone.salarybetweenj.lowest_salandj.highest_sal============================名称|工资|等级|-----------|-----|--|Steven|24000|E|Neena|17000|E|Lex|17000|E|Alexander|9000|C|Bruce|6000|C|David|4800|B|Valli|4800|B|自连接连接的两张表数据来自于同一张,只要别名不同就好selecte.employee_id领导编号,e.first_name领导名称,e1.first_name职工名称,e1.manager_id职工编号frommyemployees.employeesejoinmyemployees.employeese1one.employee_id=e1.manager_id;=================================领导编号|领导名称|职工名称|职工编号|----|---------|-----------|----|100|Steven|Neena|100|100|Steven|Lex|100|102|Lex|Alexander|102|103|Alexander|Bruce|103|103|Alexander|David|103|103|Alexander|Valli|103|外连接外连接其实是:内连接的结果+主表中有而从表里没有的可以使用where、having添加条件去掉null值左外连接左外连接:from后的主表#查询女生里没有男朋友的selectgby.name,gbs.boyNamefromgirls.beautygbyleftjoingirls.boysgbsongby.boyfriend_id=gbs.id============================name|boyName|----------|-------|周芷若|张无忌|小昭|张无忌|赵敏|张无忌|热巴|鹿晗|Angelababy|黄晓明|王语嫣|段誉|柳岩||苍老师||周冬雨||岳灵珊||双儿||夏雪||右外连接结果与上面一样,但是换成了右外连接,主从表的位置也换了,现在就是join后是主表#查询女生里没有男朋友的selectgby.name,gbs.boyNamefromgirls.boysgbsrightjoingirls.beautygbyongby.boyfriend_id=gbs.id============================name|boyName|----------|-------|周芷若|张无忌|小昭|张无忌|赵敏|张无忌|热巴|鹿晗|Angelababy|黄晓明|王语嫣|段誉|柳岩||苍老师||周冬雨||岳灵珊||双儿||夏雪||交叉连接(笛卡尔乘积)注意没有on关键字selectgby.*,gbs.*fromgirls.beautygbycrossjoingirls.boysgbs=========================id|name|sex|borndate|phone|photo|boyfriend_id|id|boyName|userCP|--|----------|---|---------------------|-----------|-----|------------|--|-------|------|3|Angelababy|女|1989-02-0300:00:00.0|18209876567||3|1|张无忌|100|3|Angelababy|女|1989-02-0300:00:00.0|18209876567||3|2|鹿晗|800|3|Angelababy|女|1989-02-0300:00:00.0|18209876567||3|3|黄晓明|50|3|Angelababy|女|1989-02-0300:00:00.0|18209876567||3|4|段誉|300|4|热巴|女|1993-02-0300:00:00.0|18209876579||2|1|张无忌|100|4|热巴|女|1993-02-0300:00:00.0|18209876579||2|2|鹿晗|800|4|热巴|女|1993-02-0300:00:00.0|18209876579||2|3|黄晓明|50|4|热巴|女|1993-02-0300:00:00.0|18209876579||2|4|段誉|300|

2020-3-1 819 0