小编Jak*_*son的帖子

使用 ENUM 与 Integer 类型的优缺点?

假设在某个随机表中,您有一个名为status的列。它的实际值将是enableddisabled

此列的数据类型是 int/bool(1 或零)还是ENUM与值为enabledand一起使用更好disabled?有什么优点或缺点?

假设您有 4 个或 10 个甚至更多,而不仅仅是两个有效状态?随着所需值数量的增加,优势和劣势会向一侧倾斜还是向另一侧倾斜?

mysql database-design datatypes

136
推荐指数
3
解决办法
7万
查看次数

从 Linux 命令行测试 MySQL 凭据?

如何在 Linux 服务器上从命令行测试 MySQL 凭据?

mysql linux command-line

21
推荐指数
3
解决办法
5万
查看次数

如何记录 mysqldump 的详细输出?

您通常会像这样保存 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 …

mysql mysqldump backup

12
推荐指数
2
解决办法
8万
查看次数

SELECT LIMIT 1 每列值?

假设我有下表

-----------------------------
| 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)

mysql greatest-n-per-group

11
推荐指数
1
解决办法
4万
查看次数

如何通过表字段的组合使用唯一键?

看看下面的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_idnetwork_contact_id字段包含链接到其他表的ID号码。

我希望能够运行INSERT IGNORE查询,此表,但我想用的组合network_id,并network_contact_id作为唯一键来匹配。

因此,举例来说,如果我试图插入一个接触的是有network_id = 4network_contact_id = 12中,INSERT IGNORE查询将看到该条目已经存在,而忽略被抛出任何错误。

所以基本上,network_id不是唯一的。network_contact_id不是唯一的。但两者的结合是独一无二的。我该如何设置?我是否必须有一个其他字段作为其他两个字段的串联值?或者有没有办法为此表设置密钥,以便它可以满足我的需要?

mysql uniqueidentifier insert unique-constraint

10
推荐指数
2
解决办法
2万
查看次数

MySQL - CSV 更新(不是插入)到现有表中?

我有一个包含以下列的表格:

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列更新行吗?

mysql csv

8
推荐指数
2
解决办法
4万
查看次数

是否值得制作单独的 DATE 表?

如果我有一张这样的桌子:

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个字节),以获得相同的结果。一种正常INTBIGINT超出存储要求的DATE类型。

单独表的一个缺点是查询会更复杂,因为我要加入另一个表。

关于是否将date字段拆分到它自己的表中,是否还有其他需要考虑的后果?我的直觉反应是,除非您处理一小组日期(小到可以使用TINYINTor SMALLINT),否则不值得这样做。

mysql datatypes

6
推荐指数
1
解决办法
1314
查看次数

外键约束失败

我有以下表格:

// 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 foreign-key

3
推荐指数
1
解决办法
3万
查看次数