我正在学习SQL。我发现很少有关于网络命令行的信息。在我在网上看到的每个教程中,他们都会使用create / drop / select命令,然后传递给phpmyadmin。
我想知道如何通过命令行执行以下操作: - 我有3张桌子,想象一下:用户,汽车,燃料; - 每个用户都有一辆车(来自汽车桌),每辆车都有燃料(来自燃料表)。
我想在他们之间建立关系。不仅用户只能从汽车表中选择汽车,而且我可以检查(通过加入命令)谁拥有该汽车类型以及每个用户花费该汽车燃料的费用。
我只想通过命令行学习如何做到这一点,这是一个能够解决更大问题的自制练习,因为关系是数据库中最重要的事情之一,我不知道如何使用它并且无法在任何地方找到它。
答案 0 :(得分:0)
如果您喜欢在命令行中工作,可以通过
完成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