我正在学习sql查询。如果我的查询结果像给定的query result一样返回,那是有效的查询结果吗?如果不是,我应该怎么做才能将结果作为固定表取回,因此不应让我编辑结果。我正在使用phpmyadmin。
查询是列出所有未提供NOK详细信息的学生。 我的sql语句如下:
select CONCAT(s.fname,' ', s.lname) as Names,s.bannerNo
from Student s
where NOT EXISTS (select*from NOK n where n.studentID = s.bannerNo)
学生桌:
Student (bannerNo,fName,lName, street,city,postcode,mobile,email,DOB,gender,category,nationality,special needs, comments,status,courseNo,staffNo)
Primary Key bannerNo
NOK表:
NOK (StudentID,fName,lName,relationship,street,city,postcode,phoneNo)
Primary Key StudentID
Foreign key StudentID references Student(bannerNo)
答案 0 :(得分:0)
如果我理解正确,则想在可视工具(phpmyadmin)上删除一个元组,该元组将向您显示查询结果。
我不知道该工具,但确实显示了“删除”按钮,如您的图像所示。
让我将其翻译成SQL术语:您看到一个“结果集”,并且您想知道对其进行操作是否有效,因此它将影响基础数据。我说对了吗?
如果是,则此问题类似于使用视图对数据的操作。视图是一个或多个表的投影。然后... 视图是否可更新?答案是:其中一些。
哪个?那取决于数据库引擎。 Oracle非常擅长于此。其他数据库实际上不允许这样做,但是在少数情况下。
那么,主要思想是什么?在大多数数据库中,主要概念都是关于“可追溯性”的。每个结果行都对应于一个基础表中的一行吗?如果是这种情况,那么很可能您将能够更新/删除它。如果没有,那你就不走运了。
为什么?因为,数据库引擎需要某种方式返回到您正在查看的数据源。如果您的查询包含表的主键,那是个好消息。如果没有,那将更加困难。也许其他某些列具有唯一约束或可能有用的东西。
底线取决于:
bannerNo
就在那里。