目录
一、笛卡尔积
二、表毗连
1、内部毗连
1.1 等值毗连
1.2 非等值毗连
2、外部链接
2.1 左外毗连-LEFT JOIN
2.2 右外毗连-RIGHT JOIN
2.3 全关联-FULL JOIN/UNION
三、子查询
1、嵌套子查询
2、相关子查询
3、insert和select语句添加数据
4、update和select语句(子查询)结合
四、数据库备份与还原
一、笛卡尔积
- SELECT * FROM student,class;
复制代码
观察笛卡尔积的特点:将两张表的数据组合在了一张二维表中,笛卡尔积中有些记录没故意义。
二、表毗连
在实际查询应用中,用户所需要的数据并不全在一个表中,可能存在多个表中,这时就需使用多表查询。
在数据库应用中,常常需要从多个相关的表中查询数据,这就需要举行表毗连。
1、内部毗连
内部毗连有以下两种语法情势:
- SELECT select_list FROM 表名1,表名2 WHERE 表1.列=表2.列;
复制代码 大概
- SELECT 别名.list FROM 表1 别名1 [INNER] JOIN 表2 别名2 ON 别名1.列=别名2.列;
复制代码 inner join on 内毗连
一般用inner join 或 join 关键字来指定内毗连。又可分为等值毗连,非等值毗连。
1.1 等值毗连
是在毗连条件中使用比力运算符即是号(=)来比力毗连列的列值,其查询结果中列出被毗连表中的所有列。
- SELECT S.学号,S.姓名,S.性别,S.籍贯,C.班级名称,C.年级
- FROM 学生信息 S INNER JOIN 班级信息 C
- ON S.班级编号=C.班级编号;
复制代码 1.2 非等值毗连
是在毗连条件中使用了除等号外的其它比力运算符,来比力毗连列的列值。
案例:查询结果大于40的门生个人环境,并按照结果降序分列。
- SELECT 学生信息 .学号,学生信息 .姓名,学生信息 .性别,学生信息 .班级编号,成绩表.成绩
- FROM 学生信息 INNER JOIN 成绩表
- ON 学生信息 .学号=成绩表.学号
- WHERE 成绩表.成绩>=40
- ORDER BY 成绩表.成绩 DESC;
复制代码 2、外部链接
• 外部毗连会返回FROM子句中提到的至少一个表或视图中的所有行。
• 外部毗连分为左外部毗连、右外部毗连
左外部毗连对毗连条件中左边的表不加限制;
右外部毗连对毗连条件中右边的表不加限制。
2.1 左外毗连-LEFT JOIN
使用关键字LEFT OUTER JOIN 关键字对两个表举行毗连,左外毗连的查询结果中包罗指定左表的所有行,而不仅仅是毗连列所匹配的行。如果左表的某行在右表中没有找到匹配的行,则结果会集的右表的相对应的位置为NULL。
- SELECT * FROM student s LEFT JOIN sc ON s.sno=sc.sno;
复制代码
2.2 右外毗连-RIGHT JOIN
使用RIGHT OUTER JOIN 关键字对两个表举行毗连,右外毗连是左外毗连的反向毗连,只不过在查询结果会集包罗的是指定右表的所有行。如果右边的某行在左表中没有找到匹配的行,则结果会集的左表的相对应位置为NULL。
- SELECT * FROM course c RIGHT JOIN teacher t ON c.tno=t.tno;
复制代码
2.3 全关联-FULL JOIN/UNION
mysql不支持FULL JOIN ,但是可以用左毗连UNION右毗连关键字实现全关联.
三、子查询
子查询在其他查询结果的底子上提供了一种有效的方式来表现where子句的条件。
子查询是可以嵌套在 SELECT、INSERT、UPDATE、DELETE 语句中。
子查询的 SELECT 查询总是使用圆括号括起来。
1、嵌套子查询
在MySQL中子查询是可以嵌套使用的,而且可以在一个查询中嵌套任意多个子查询,即一个子查询中还可以包罗另一个子查询,这种查询方式称为嵌套子查询。
例: 查询计算机系门生选修了哪些课程
- SELECT * FROM sc WHERE sno IN
- (SELECT sno FROM Student
- WHERE Sdept = ‘计算机系’);
复制代码 例: 查询修了‘c02’课程且结果高于此课程的平均结果的门生的学号和结果。
- SELECT Sno , Grade FROM SC
- WHERE Cno = 'c02‘and Grade > (
- SELECT AVG(Grade) from SC
- WHERE Cno = 'c02');
复制代码 2、相关子查询
相关子查询(单值子查询)
这样的子查询只返回一个值,然后将一列值与查询返回的值举行比力。
例:查询和'静静'在同一个班的门生的信息。
- SELECT 学生信息 .学号,学生信息 .姓名,学生信息 .性别,班级信息.班级编号,班级信息 .班级名称,班级信息 .年级
- FROM 学生信息 INNER JOIN 班级信息
- ON 学生信息 .班级编号=班级信息.班级编号
- WHERE 学生信息 .班级编号=
- (SELECT 班级编号 FROM 学生信息 WHERE 姓名='ff');
复制代码 3、insert和select语句添加数据
在INSERT语句中使用SELECT子句可以将一个或多个表或视图中的值添加到另一个表中。使用SELECT子句还可以同时插入多行。
INSERT语句中使用SELECT子句的语法情势为:
- INSERT [INTO] table_name[(column_list)]
- SELECT select_list FROM table_name;
复制代码 通过SELECT语句天生的结果集,再结合INSERT语句,可以把结果集插入到指定的表中,这种方法用于插入的数据不确定(通常多于一条),而且都具有一些特性时。
--拷贝表结构
- CREATE TABLE table_bak LIKE table;
复制代码 --拷贝表数据
- CREATE TABLE table_bak_1 AS SELECT * FROM table;
复制代码 4、update和select语句(子查询)结合
• 例:将计算机系全体门生的结果加5分。
- UPDATE SC SET Grade = Grade + 5
- WHERE Sno IN
- (SELECT Sno FROM Student
- WHERE Sdept = '计算机系' );
复制代码 四、数据库备份与还原
数据库热备份工具:mysqldump.exe(数据库在工作中备份)
备份:
- mysqldump -h IP地址 -u 用户名 -p 密码 要备份的数据库名>本地电脑路径/数据文件名.sql
复制代码 还原:
- mysql -h IP地址 -u 用户名 -p 密码 数据库名<本地电脑路径/数据文件名.sql
复制代码 或
- use 数据库名;
- source 本地电脑路径/数据文件名.sql;
复制代码 数据库冷备份工具:(数据库停止工作举行备份)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |