Mysql查询相关知识点

第一章——为什么选择MySQL

数据库的分类

  • 层次式数据库

  • 网络式数据库

  • 关系型数据库

第二章——CRUD

创建表格

CREATETABLE`user`(

`id`INT(10)NOTNULL,

`mobile`VARCHAR(11)NOTNULL,

`nickname`VARCHAR(40)NOTNULL,

`gmt_created`datetime,

`gmt_modified`datetimeNOTNULL,

PRIMARYKEY(`id`)

)ENGINE=InnoDBDEFAULTCHARSET=utf8;

设置存储引擎和编码格式

ENGINE=InnoDBDEFAULTCHARSET=utf8

删除表格

droptabletable_name;

有时候我们这么写

DROPTABLEIFEXISTStable_name;

只有存在才会删除

自增主键

`id`INTUNSIGNEDAUTO_INCREMENT

插入语句

语法

INSERTINTOtable_name(field1,field2,...fieldN)

VALUES

(value1,value2,...valueN);

简化

INSERTINTOtable_name

VALUES

(value1,value2,...valueN);

  1. 如果主键设置为自增,则可以不插入主键和对应的数据

  1. 如果插入的是所有的字段,可以省略字段名,直接插入值,但是类型必须全部一致

批量插入数据

INSERTINTOtable_name

VALUES

(value1,value2,...valueN),

(value1,value2,...valueN);

查询语句

SELECT

*

FROM

timi_adc

where

win_rate > 0.5;

Limit子句

查询x-y行

SELECT

*

FROM

timi_adc

LIMIT

5, 6;

该语句代表查询6-11行

查询第x行

SELECT

*

FROM

timi_adc

LIMIT

4, 1;

该语句查询第5行

查询所有数据库

show databases

查看表的结构

desc 表名

查看所有表

show tables

返回整数类型

<select id="selectCounts" resultType="java.lang.Integer">

select count(*) from order;

</select>

排序

语法

SELECT

*

FROM

timi_adc

ORDER BY

win_rate;

降序排序

SELECT

*

FROM

timi_adc

ORDER BY

win_rate DESC;

与其他子句连用

SELECT

*

FROM

timi_adc

ORDER BY

win_rate DESC

LIMIT

3;

更新/删除

UPDATE

timi_adc

SET

ban_rate = 0.01

WHERE

hero_name = '艾琳';

delete from `user` where id<20;

删除所有数据

delete from user;

第三章——查询优化

like查询

SELECT

*

FROM

timi_adc

WHERE

hero_name LIKE '%孙%';

%表示任意字符,_表示一个字符

AND&OR

SELECT

*

FROM

timi_adc

WHERE

win_rate > 0.5

AND win_rate < 0.51

OR win_rate < 0.47;

IN/NOT IN

SELECT

*

FROM

timi_adc

WHERE

fever IN ('T0', 'T3');

SELECT

*

FROM

timi_adc

WHERE

fever NOT IN ('T0');

SELECT

*

FROM

timi_adc

WHERE

hero_name NOT LIKE '%孙%';

NULL值的处理

SELECT field_name1,field_name2

FROM table_name

WHERE field_name2 IS NOT NULL/IS NULL;

第四章——MySQL字符串处理

CONCAT函数

  • CONCAT函数可以拼接列名,也可以拼接字符串

  • 在使用CAT函数的时候也可以同时查询其他的列

  • CONCAT函数之间用英文 , 分隔

SELECT

id,

concat(hero_name, '的胜率是', win_rate)

FROM

timi_adc;

TRIM函数

用于去掉我们不需要的字符(空格等)

SELECT

trim(hero_name),

trim(fever)

FROM

timi_adc

WHERE

id = 20;

trim()函数可以去掉查询结果中的空格,但是不会修改原数据,修改原数据需要配合UPDATE/DELETE语句使用

语法拓展

trim()函数也可以精准的去掉前面或者后面的空格,或者其他的字符,语法如下:

TRIM( BOTH|LEADING|TRAILING removed_str FROM str);

  • LEADING只除去前面的空格,或者加上TRAILING只除去后面的空格,如果都不加,就是默认BOTH

  • TRIM函数可以删除指定的字符串内容,如果不加,则默认删除空格

SELECT

TRIM(

TRAILING 'Q'

FROM

fever

)

FROM

timi_adc

WHERE

id = 21;

删除fever尾部的Q

REPLACE函数

用于去掉字符串中间的值,但一般实用性不高,可以用UPDATE语句修改

它可以把找到的某个字符串替换成另一个字符串

UPDATE table_name

SET colunm_name =

REPLACE(column_name,string_find,string_to_replace)

WHERE conditions;

第五章——MySQL关联查询

左连接

SELECT

*

FROM

TableA LEFT JOIN

TableB

ON condition;

即使右表没有匹配的数据,右表会以NULL的形式匹配数据

SELECT

*

FROM

ykd_teacher

LEFT JOIN ykd_course ON ykd_teacher.id = ykd_course.teacher_id;

让相应的字段匹配

表结构设计规范

右连接

SELECT

*

FROM

ykd_teacher

RIGHT JOIN ykd_course ON ykd_teacher.id = ykd_course.teacher_id;

多表关联查询

SELECT

*

FROM

TableA

LEFT JOIN TableB ON conditionA

LEFT JOIN TableC ON conditionB;

有时候我们会对三张表以上进行关联查询,我们一般会选中一张表作为主表

比如:

SELECT

*

FROM

ykd_course

LEFTJOIN ykd_student ON ykd_student.course_id= ykd_course.id

LEFTJOIN ykd_teacher on ykd_course.teacher_id= ykd_teacher.id;

内连接

SELECT

*

FROM

Table_A

INNERJOIN Table_B

ON

Table_A.id= Table_B.student_id;

外连接示意图

想要得到如下的图:

SELECT

*

FROM

Table_A

LEFTJOIN Table_B ON Table_A.id= Table_B.student_id

WHERE

Table_B.student_idISNULL;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值