ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 5.1 union 将多条查询语句的结果合并成一张表 ``` 语法:(默认将合并后的表格去除重复数据) 查询语句1 union 查询语句2 union 查询语句n... ``` * 条件:查询语句的格式必须相同,类型要兼容 * 案例:-- 4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩 ``` -- (包括有成绩的和无成绩的) SELECT s1.s_id,s1.s_name,avg(s_score) 平均 from student s1 LEFT JOIN score s2 on s1.s_id=s2.s_id GROUP BY s1.s_id,s1.s_name HAVING 平均<60 UNION SELECT s1.s_id,s1.s_name,0 平均 #将没在成绩表里的学生找出来 from student s1 WHERE s1.s_id not in( SELECT s_id FROM score) ``` ``` 语法:(union all 不会去除重复数据) 查询语句1 union all 查询语句2 union all 查询语句n... ``` >[info]SQL不支持全外连接,但可以通过union间接实现全外连接 ## 5.2 DDL数据定义语言和DML数据操作语言 create database [if not exists]库名; RENAME DATABASE books TO 新库名; -- mysql5.1.23后就把他给删除了,想要重命名要找其他方法 > 更改库的字符集 ALTER DATABASE books CHARACTER SET gbk; > 库的删除 DROP DATABASE IF EXISTS books; create table 表名(列名1 类型,列名2 类型,列名n 类型) alter table 表名 add|drop|modify|change column 列名 【列类型 约束】; drop table IF EXISTS 表名 ``` insert into 表名(字段) values(值) update 表名 set 字段=值 delete from 表 where 条件 ``` - 1.仅仅复制表的结构 `CREATE TABLE copy LIKE author; ` - 2.复制表的结构+数据 ``` CREATE TABLE copy2 SELECT * FROM author; ``` - 3.只复制部分数据 ``` CREATE TABLE copy3 SELECT id,au_name FROM author WHERE nation='中国'; ``` - 4.修改多表的记录 *案例 1:修改张无忌的女朋友的手机号为114 ``` UPDATE boys bo INNER JOIN beauty b ON bo.`id`=b.`boyfriend_id` SET b.`phone`='119',bo.`userCP`=1000 WHERE bo.`boyName`='张无忌'; ``` *案例2:修改没有男朋友的女神的男朋友编号都为2号 ``` UPDATE boys bo RIGHT JOIN beauty b ON bo.`id`=b.`boyfriend_id` SET b.`boyfriend_id`=2 WHERE bo.`id` IS NULL; ``` >[danger]delete pk truncate【面试题★】 ~~~ /* 1.delete 可以加where 条件,truncate不能加 2.truncate删除,效率高一丢丢 3.假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始(从被删除的数据值之后开始), 而truncate删除后,再插入数据,自增长列的值从1开始。 4.truncate删除没有返回值,delete删除有返回值 5.truncate删除不能回滚,delete删除可以回滚. */ ~~~