高级查询

SQL语句
490
0
0
2022-11-15
标签   SQL语句

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语句快

将查询结果插入新表

img

img

img

添加主键:ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);

添加外键:ALTER TABLE 表名 ADD CONSTRAINT 外键名FOREIGN KEY(外键字段)REFERENCES 关联表名(关联字段);

查询语句中LIMIT子句

对查询结果进行限定、可指定查询起始位置和条数

img

img

img

img

查询多表数据

表连接

子查询

比较运算符:子查询只能返回单个数值

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子句

只出现在子查询中而没有出现在父查询中的列不能包含在输出列中

只出现在子查询中而没有出现在父查询中的表不能包含在输出列中