高级查询
DML语句
插入数据记录(INSERT)
插入单条:INSERT INTO 表名 [(字段名列表)] VALUES (值列表);
插入多条:INSERT INTO 新表(字段名列表VALUES(值列表1),(值列表2),……,(值列表n);
更新数据记录(UPDATE)
UPDATE 表名 SET 字段1=值1,字段2=值2,…,字段n=值n [WHERE 条件];
删除数据记录(DELETE/TRUNCATE)
DELETE FROM 表名 [WHERE条件];
TRUNCATE TABLE 表名;
TRUNCATE语句删除后将重置自增列,表结构及其字段、约束、索引保持不变,执行速度比DELETE语句快
将查询结果插入新表
添加主键:ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);
添加外键:ALTER TABLE 表名 ADD CONSTRAINT 外键名FOREIGN KEY(外键字段)REFERENCES 关联表名(关联字段);
查询语句中LIMIT子句
对查询结果进行限定、可指定查询起始位置和条数
查询多表数据
表连接
子查询
比较运算符:子查询只能返回单个数值
SELECT `studentNo`,`studentName`,`sex`,`bornDate`,`address`FROM `student`
WHERE `bornDate` > (SELECT `bornDate` FROM `student` WHERE `studentName`='李斯文');
IN/NOT IN:子查询可返回多条记录
SELECT `studentName` FROM `student` stu
INNER JOIN `result` r ON stu.studentNO = r.studentNo
INNER JOIN `subject` sub ON r.subjectNo = sub.subjectNo
WHERE `studentResult` = 60 AND `subjectName` = 'Logic Java';
EXISTS关键字
检测对象是否存在 IF EXISTS
DROP TABLE IF EXISTS temp;
EXISTS子查询
SELECT …… FROM 表名 WHERE EXISTS(子查询);
子查询有返回行:返回TRUE
子查询无返回行:返回FALSE
外层查询不执行
子查询注意事项
子查询语句可以嵌套在SQL语句中任何表达式出现的位置
任何允许使用表达式的地方都可以使用子查询
嵌套在父查询SELECT语句的子查询可包括
SELECT子句
FROM子句
WHERE子句
GROUP BY子句
HAVING子句
只出现在子查询中而没有出现在父查询中的列不能包含在输出列中
只出现在子查询中而没有出现在父查询中的表不能包含在输出列中