繁体   English   中英

mysql中表之间的关系

[英]relationship between tables in mysql

我正在学习SQL。 我在网上找不到有关命令行的信息。 在网上看到的每个教程中,它们都保留了create / drop / select命令,然后传递给phpmyadmin。

我想知道如何通过命令行执行以下操作:-我有3张桌子,想象一下:用户,汽车,燃料; -每个用户都有一辆汽车(从汽车表中),每辆汽车都有燃料(从燃料表中)。

我想在他们之间建立关系。 不仅用户不仅可以从“汽车”表中选择汽车,而且我还可以(通过加入命令)检查谁拥有该汽车类型以及每个用户为该汽车的燃料花费了多少。

我只是想学习如何通过命令行来完成此任务,这是一个能够解决更大问题的自我练习,因为关系是数据库上最重要的事情之一,我不知道如何使用它并且可以做到。在任何地方都找不到。

如果您喜欢在命令行中工作,可以通过

shell> mysql --user=[user_name] --password=[your_password db_name]

这将启动mysql命令行工具。 看起来像这样:

mysql>

现在您可以执行以下查询:

mysql> show databases; // to list all your dbs
mysql> use [db_name]; // to change to your db
mysql> show tables; // to list all tables of your db

参见手册: http : //dev.mysql.com/doc/refman/5.6/en/mysql.html

您可以在命令行中执行所需的操作,但是使用诸如sqlyog,heidisql或基于Web的phpmyadmin工具之类的gui工具要舒适得多。 您可以在此处查看和编辑您的数据/数据库/表,并且可以通过自己喜欢的GUI工具发送相同的查询。

使用约束

如果您要求创建关系,这听起来就像您要创建约束。 您实际上并不需要数据库架构的约束。 可以不受任何限制地构建所需的内容。 关系本身仅在您的大脑中。

用户和汽车的小例子(MYISAM表)

table user
 - id_user (int)
 - name (varchar)

table car
 - id_car (int)
 - name (varchar)
 - fi_user (int)

创建查询:

CREATE TABLE `user` (
`id_user` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 64 ) NOT NULL
) ENGINE = MYISAM ;

CREATE TABLE `car` (
`id_car` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 64 ) NOT NULL ,
`fi_user` INT NOT NULL
) ENGINE = MYISAM ;

这就是您所需要的。 只需将您的用户ID放入汽车的fi_user字段中,便可以建立关系。

INSERT INTO `user` (`id_user`,`name`) VALUES (1, 'testuser');
INSERT INTO `car` (`id_car`, `name`, `fi_user`) VALUES (1, 'testcar', 1);

现在您可以执行以下操作:

SELECT * FROM `car` c JOIN `user` u ON (u.id_user=c.fi_user) WHERE 1

可以在INNODB中使用约束,但是您不必使用它们。 我更喜欢MYISAM,因为它速度更快。 请阅读本文以了解什么是约束,以及为什么要使用它

http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM