Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL关系与查询_Sql - Fatal编程技术网

SQL关系与查询

SQL关系与查询,sql,Sql,我正在尝试创建一个包含两个表的数据库。如果这有帮助,我已经包含了create_tables.sql代码。我正在尝试设置关系,使STKEY成为定义键,这样就可以使用查询来搜索thr键,并显示这个学生遇到的问题。在我使用以下工具进行搜索时: SELECT * FROM student, student_log WHERE 'tilbun' like student.stkey 它显示表中的所有问题,而不考虑STKEY。我想我的外键可能设置不正确。我在这里包括了create_tables.sql

我正在尝试创建一个包含两个表的数据库。如果这有帮助,我已经包含了create_tables.sql代码。我正在尝试设置关系,使STKEY成为定义键,这样就可以使用查询来搜索thr键,并显示这个学生遇到的问题。在我使用以下工具进行搜索时:

SELECT *
FROM student, student_log
WHERE 'tilbun' like student.stkey 
它显示表中的所有问题,而不考虑STKEY。我想我的外键可能设置不正确。我在这里包括了create_tables.sql

CREATE TABLE `student`
(
`STKEY` VARCHAR(10),
`first_name` VARCHAR(15),
`surname` VARCHAR(15),
`year_group` VARCHAR(4),
PRIMARY KEY (STKEY)
)
;

CREATE TABLE `student_log`
(
`issue_number` int NOT NULL AUTO_INCREMENT,
`STKEY` VARCHAR(10),
`date_field` DATETIME,
`issue` VARCHAR(150),
PRIMARY KEY (issue_number),
INDEX (STKEY),
FOREIGN KEY (STKEY) REFERENCES student (STKEY)
)
;   

为帮助干杯

尽管已在表中正确定义了外键关系,但在执行查询时仍必须指定联接条件。否则,您将得到两个表的笛卡尔乘积(一个表的所有行乘以另一个表的所有行)

请注意,我没有使用隐式连接(逗号分隔的表列表),而是使用了显式的
内部连接
,这是首选的现代语法

最后,除非您还使用通配符,否则使用
LIKE
子句来代替
=

WHERE student.STKEY LIKE '%tilbun%'

尽管已在表中正确定义了外键关系,但在执行查询时仍必须指定联接条件。否则,您将得到两个表的笛卡尔乘积(一个表的所有行乘以另一个表的所有行)

请注意,我没有使用隐式连接(逗号分隔的表列表),而是使用了显式的
内部连接
,这是首选的现代语法

最后,除非您还使用通配符,否则使用
LIKE
子句来代替
=

WHERE student.STKEY LIKE '%tilbun%'