MySql

发布时间:2019-05-10  栏目:MySQL  评论:0 Comments

1.length:总结字段的长度。三个汉字–>三个字符,三个数字或字母–>一个字符

MySql 多表查询,MySql

多表查询必然要用到多表关联

多表关联 分三类:

A:内部连接  join  或inner join

B:外部链接  外部连接又分为两类   :左外连接 left join 和右外连接 right
join

C:交叉连接 cross  join 

以下 比方表明  有两张表

格 一张学生的   一张老师的  一张中间表的

图片 1

图片 2

 

图片 3

 

 

一、内部链接 应用场景 

图片 4

 

 

 这种条件下是收获 A B  共同的数据 同时满意AB 的规格   称之为内部连接

代码 是 :

SELECT *FROM stu_tea st JOIN student s ON st.学生=s.name

结果是:

 

图片 5   

 

从表中清楚
看出,studnet表中的新闻会安分守己鲜明的条条框框(中间表中的“学生字段”=student表中的name
字段)拼接在关系的末尾,并且精心看 能够窥见
少了学生陈建和芦涛的音信,因为陈建和杨东那七个学生在三个表中并区别时存在

 

如果要对结果表中的学生和name重复的 只展现一行,可以对代码以下管理

SELECT st.`学生`,st.`老师`,s.`birth`FROM stu_tea st JOIN student
s ON st.学生=s.name

结果如下:

图片 6

还足以对s.birth普通话化处理,在后头加上别称呈现:

SELECT st.`学生`,st.`老师`,s.`birth` ‘生日’ FROM stu_tea st JOIN
student s ON st.学生=s.name

结果如下:

图片 7

在意:以上代码中的普通话字段,加不加引号都得以,系统一般默许加单引号;

 

2、外部链接 应用场景 

左外连接

图片 8

这种景观是得到A的全体数据和B满意一定规范的局地数据

 

代码是:SELECT *FROM stu_tea st LEFT JOIN student s ON
st.`学生`=s.`name`

结果为:

图片 9  图片 10  图片 11

从表中可以看看,左外连接完全以左边手的中级表为模板,学生表接在中等标的后边,,没有数量用null补齐,学生表有的而中间表未有的数目则不会议及展览示

 对以上结果,还足以用where 从句 进一步筛选

 例如要去掉未有学生信息的数码:SELECT *FROM stu_tea st LEFT JOIN
student s ON st.`学生`=s.`name` WHERE s.`name`IS NOT NULL 

结果是:

图片 12

大家还询问一下,去掉了哪些学生消息:SELECT *FROM stu_tea st LEFT JOIN
student s ON st.`学生`=s.`name` WHERE s.`name`IS NULL 

结果是:

图片 13

注意:MySQL 只能用 is 不能用”=“

右外连接

图片 14

这种气象是得到B的全体数据和A知足一定标准的局地数据

 右外部连接与左外部连接 完全相反,不现实介绍

 

 

三、交叉连接

 实际行使中还有那样一种状态,想获得A,B记录的排列组合,即笛卡儿积,那个就不佳用会集和因一贯表示了。供给用到cross
join

代码是:SELECT *FROM stu_tea st CROSS JOIN student

结果是:

图片 15

 

 能够窥见student表中累计有伍行数据 ,stu_tea表中 有12行数据,60=12*5;

此代码也足以写成SELECT *FROM stu_tea st  JOIN student

 

注意事项:

一.延续表格使用的是逗号,会被解释为交叉连接;

即SELECT *FROM stu_tea st,student   SELECT *FROM stu_tea st  JOIN
student      SELECT *FROM stu_tea st CROSS JOIN student  是等价的

二.形似内连接都亟需足够on限定标准,即便不加会被分解为交叉连接

三.形似交叉连接(, cross join join
都得以)后边加上where条件,也得以写成on

http://www.bkjia.com/Mysql/1220548.htmlwww.bkjia.comtruehttp://www.bkjia.com/Mysql/1220548.htmlTechArticleMySql 多表查询,MySql 多表查询必然要用到多表关联
多表关联 分3类: A:内部连接 join 或inner join B:外部链接
外部连接又分为两类 :左外连…

  select length(username) from user;

  select * from user where length(username)>6;

2.UNIX_TIMESTAMP:将时刻转载为时间戳。date类型转化为timestamp整数(秒数)。

   FROM_UNIXTIME:将timestamp 方式整数 转化为 date类型。

  select UNIX_TIMESTAMP(ifnull(hangup_time; create_time)) –
UNIX_TIMESTAMP(dial_time) from call_log;

  select from_unixtime(1355272360);

PS:

现阶段timestamp 所能表示的限量在 196陆  –  203八里边 。超过这一个限制
获得的时光将会溢出 获得的年华是null。

select from_unixtime(0);   >>>  1970-01-01 08:00:00

select from_unixtime(2147483647);  >>>   2038-01-19 11:14:07

select UNIX_TIMESTAMP(‘2038-01-19 11:14:08’)   >>>   0

3.select for update

  在SELECT 的读取锁定入眼分为二种方法:

  SELECT … LOCK IN SHARE MODE

  SELECT … FOR UPDATE

  那两种方法在专门的学问(Transaction) 实行个中SELECT
到同一个数目表时,都无法不等待其余事情数据被交给(Commit)后才会施行。而重要的例外在于LOCK
IN SHARE MODE 在有1方职业要Update 同1个表单时很轻松形成死锁 。

  

四.判定语句

  select if(sex=1,’男’,’女’) as 性别 from User where id=1

  select CASE 

    WHEN platform=1 THEN ‘平台1’

    WHEN platform=2 THEN ‘平台2’

    ELSE ‘非平台’ END

  select CASE platform

    WHEN 1 THEN ‘平台1’

    WHEN 2 THEN ‘平台2’

    ELSE ‘非平台’ END

  SELECT CASE WHEN 1>0 THEN ‘true’ ELSE ‘false’ END

IFNULL(expr1,expr2) 
若是expr1 不为 NULL,则 IFNULL() 的再次来到值为 expr壹; 不然其重回值为
expr二。IFNULL()的再次来到值是数字恐怕字符串

IFNULL(expr一,expr二)的暗中认可结果值为七个表明式中愈发“通用”的三个,顺序为STPAJEROING、
REAL或 INTEGE陆风X八。

留下评论

网站地图xml地图