Java小白学习指南【day26】---MySQL进阶

1、多表查询

查询两个或两个以上的表

1、笛卡尔积(在实际查询中要避免笛卡尔积)

假设集合A={a,b},集合B={0,1,2},则两个集合的笛卡尔积为{(a,0),(a,1),(a,2),(b,0),(b,1),(b,2)};就是所有集合之间的组合

消除笛卡尔积需要通过WHERE的有效条件

2、内连接:没有对应关系的就不会显示

隐式内连接:SELECT  查询内容 FROM1,2 WHERE 消除笛卡尔积的条件;
显示内连接:SELECT  查询内容 FROM1 [INNER] JOIN2 ON 消除笛卡尔积的条件;

3、外连接

左外连接:左边表的内容均会显示
SELECT	<selectList>
	FROM A  LEFT JOIN B
	ON A.column_name = B.column_name;
右外连接:右边表的内容均会显示
SELECT	<selectList>
	FROM A  RIGHT JOIN B
	ON A.column_name = B.column_name;

4、子查询:在SELECT查询语句中还WHERE之后的条件是不确定的,还是由一个SELECT查询语句构成

需求:查询零售价比罗技MX1100更高的所有商品信息:
SELECT * FROM product WHERE salePrice > (SELECT salePrice FROM product WHERE productName = '罗技MX1100')

5、自连接;把一张表看成两张来做查询,一定要取别名。自连接实际上也属于子查询

在这里插入图片描述

/*查询表中所有员工以及所在部门的经理姓名*/
SELECT emp.id,emp.name,manager.name 主公
FROM employee2 emp
LEFT JOIN employee2 manager ON emp.manager_id = manager.id

2、数据操作(增删改)

1、插入数据
INSERT INTO 表名 (列名,列名,...) VALUES (,,...);
INSERT INTO 表名 (列名,列名,...) VALUES (,,...),(,,...);
注意:一般不会添加主键。
2、修改数据
UPDATE 表名 SET 列名=,列名=,... WHERE ....
注意:一般都需要加上WHERE条件,否则全表的数据都会被修改。
3、删除数据
DELETE FROM 表名 WHERE ....
注意:如果省略了where子句,则全表的数据都会被删除

3、MySQL函数

1、聚集函数

COUNT:统计结果记录数,如果列的值为NULL,不会计算在内的,即会忽略NULL值

扫描二维码关注公众号,回复: 12600335 查看本文章

MAX: 统计计算最大值

MIN: 统计计算最小值

SUM: 统计计算求和

AVG: 统计计算平均值,如果列的值为NULL,不会计算在内的,即会忽略NULL值

2、类型准换函数

CAST(value AS type), CONVERT(value, type) :用来获取一个类型的值,并产生另一个类型的值;

(1)SELECT CAST('123abc' AS signed) + 1; --> 124
(2)SELECT CONVERT('123abc', signed) + 2; --> 125

3、字符串函数

concat():拼接

lenght() : 长度

upper() :转大写

lower() :转小写

trim() : 去空格

4、日期函数

now() 当前日期(年月日 时分秒)

CURDATE() : 当前日期(年月日)

5、控制流程函数

if(test,val1,val2) ------>类似于三目运算, test : 判断条件 判断条件为true,返回 val1 判断条件为false, 返回 val2

ifnull(val1,val2) -------->val1不为空,返回val1 val1为空,返回val2

4、数据备份于恢复

1、在dos命令行窗口进行,若操作系统版本高,则使用管理员模式

备份:mysqldump -u数据库名 -p密码 表名字>绝对地址

恢复:mysqldump -u数据库名 -p密码 表名字<绝对地址

2、使用可视化工具,存储sql文件/运行sql文件

猜你喜欢

转载自blog.csdn.net/WLK0423/article/details/109918309
今日推荐