假设在某个随机表中,您有一个名为status的列。它的实际值将是enabled或disabled。
此列的数据类型是 int/bool(1 或零)还是ENUM与值为enabledand一起使用更好disabled?有什么优点或缺点?
假设您有 4 个或 10 个甚至更多,而不仅仅是两个有效状态?随着所需值数量的增加,优势和劣势会向一侧倾斜还是向另一侧倾斜?
您通常会像这样保存 Linux 命令的详细输出:
# command > output.txt
Run Code Online (Sandbox Code Playgroud)
但是,当您使用类似的命令时mysqldump,该>选项会将数据库表的转储输出到所需的文件:
# mysqldump --username=whatever --password=whatever -h localhost database > dump.sql
Run Code Online (Sandbox Code Playgroud)
If you add in the -v (verbose) option to mysqldump, it outputs help information about what the command is doing. How do I save this verbose output to a file since the > option is used to output the database table information to a file?
More specifically, I'm dumping the output of one database into another database like …
假设我有下表
-----------------------------
| user_id | comment |
-----------------------------
| 2 | thats cool |
| 2 | awesome |
| 3 | i hate this |
| 3 | okay |
| 6 | this is weird |
| 6 | hello? |
| 6 | what is it |
| 9 | how are you |
| 16 | too slow |
| 16 | yes |
| 17 | alrighty |
-----------------------------
Run Code Online (Sandbox Code Playgroud)
你怎么能选择一行user_id?所以我的结果是:
-----------------------------
| user_id …Run Code Online (Sandbox Code Playgroud) 看看下面的sqlfiddle:http ://sqlfiddle.com/#!2/dacb5/1
CREATE TABLE contacts
(
id int auto_increment primary key,
name varchar(20),
network_id int,
network_contact_id int
);
INSERT INTO contacts
(name, network_id, network_contact_id)
VALUES
('John', 4, 10),
('Alex', 4, 11),
('Bob', 4, 12),
('Jeff', 4, 45),
('Bill', 7, 11),
('Walter', 7, 45),
('Jessie', 7, 360) ;
Run Code Online (Sandbox Code Playgroud)
我有一个基本的联系人表。该network_id和network_contact_id字段包含链接到其他表的ID号码。
我希望能够运行INSERT IGNORE查询,此表,但我想用的组合network_id,并network_contact_id作为唯一键来匹配。
因此,举例来说,如果我试图插入一个接触的是有network_id = 4和network_contact_id = 12中,INSERT IGNORE查询将看到该条目已经存在,而忽略被抛出任何错误。
所以基本上,network_id不是唯一的。network_contact_id不是唯一的。但两者的结合是独一无二的。我该如何设置?我是否必须有一个其他字段作为其他两个字段的串联值?或者有没有办法为此表设置密钥,以便它可以满足我的需要?
我有一个包含以下列的表格:
id | name | city
Run Code Online (Sandbox Code Playgroud)
该表中有 1000 个条目。
我有一个行数有限的 CSV 文件,如下所示:
id,city
34,Denver
45,Kansas City
145,New York
Run Code Online (Sandbox Code Playgroud)
我可以LOAD DATA INFILE用来将我的 CSV 导入到我的表中,而不是插入新条目,而是根据id列更新行吗?
如果我有一张这样的桌子:
my_table
=======================
id date some_data
Run Code Online (Sandbox Code Playgroud)
把它拉到date自己的桌子上有意义吗?该date字段将使用date数据类型。所以它现在看起来像这样:
my_table
==========================
id date_id some_data
dates
==========
id date
Run Code Online (Sandbox Code Playgroud)
根据 MySQL,date数据类型 = 3 个字节。的date_id需要是最大的MEDIUMINT(3个字节),以获得相同的结果。一种正常INT或BIGINT超出存储要求的DATE类型。
单独表的一个缺点是查询会更复杂,因为我要加入另一个表。
关于是否将date字段拆分到它自己的表中,是否还有其他需要考虑的后果?我的直觉反应是,除非您处理一小组日期(小到可以使用TINYINTor SMALLINT),否则不值得这样做。
我有以下表格:
// Base Scans
CREATE TABLE `basescans` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NULL DEFAULT NULL,
`status_id` INT(10) UNSIGNED NULL DEFAULT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `status_id_fk` FOREIGN KEY (`status_id`) REFERENCES `statuses` (`id`) ON UPDATE CASCADE ON DELETE SET NULL
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
ROW_FORMAT=COMPACT
AUTO_INCREMENT=29
// Statuses
CREATE TABLE `statuses` (
`id` INT(10) UNSIGNED NULL AUTO_INCREMENT,
`name` VARCHAR(100) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
ROW_FORMAT=DEFAULT
AUTO_INCREMENT=4
Run Code Online (Sandbox Code Playgroud)
当我放入该外键约束时,尝试保存第一个表失败。想不通为什么。约束中引用的两列具有相同的类型、大小等:
INT(10) UNSIGNED NULL
Run Code Online (Sandbox Code Playgroud)
它们只有不同的默认值。一个的默认值是 NULL,另一个是 AUTO_INCREMENT。我认为这对外键约束没有影响,但我可能是错的。
两个表都是 …
mysql ×8
datatypes ×2
backup ×1
command-line ×1
csv ×1
foreign-key ×1
insert ×1
linux ×1
mysqldump ×1