Questions tagged «mysql»

MySQL是使用结构化查询语言(SQL)的免费,开放源代码关系数据库管理系统(RDBMS)。请勿将此标签用于其他数据库,例如SQL Server,SQLite等。那些是不同的数据库,它们都使用自己的SQL方言来管理数据。

6
如何为MySQL表添加索引?
我有一个非常大的MySQL表,其中包含约15万行数据。目前,当我尝试运行 SELECT * FROM table WHERE id = '1'; 该代码运行良好,因为ID字段是主要索引。但是,对于该项目的最新开发,我必须按另一个字段搜索数据库。例如: SELECT * FROM table WHERE product_id = '1'; 该字段先前未编制索引;但是,我添加了一个,因此mysql现在为该字段建立索引,但是当我尝试运行上述查询时,它运行非常缓慢。一个EXPLAIN查询显示,当我已经添加了product_id字段时,没有针对product_id字段的索引,因此该查询需要20分钟到30分钟的任何时间才能返回单行。 我完整的EXPLAIN结果是: | id | select_type | table | type | possible_keys| key | key_len | ref | rows | Extra | +----+-------------+-------+------+--------------+------+---------+------+-------+------------------+ | 1 | SIMPLE | table | ALL | …

8
MySQL索引如何工作?
我对MySQL索引的工作方式非常感兴趣,更具体地说,它们如何在不扫描整个表的情况下返回请求的数据? 我知道这是题外话,但是如果有人可以向我详细解释一下,我将非常非常感谢。
402 mysql  indexing 


30
如何在SQL数据库表中选择第n行?
我有兴趣学习一些(理想情况下)从数据库表中选择第n行的数据库不可知方法。看看如何使用以下数据库的本机功能来实现此目的也将很有趣: SQL服务器 的MySQL PostgreSQL的 SQLite的 甲骨文 我目前正在SQL Server 2005中执行类似以下的操作,但是我希望了解其他人不可知论的方法: WITH Ordered AS ( SELECT ROW_NUMBER() OVER (ORDER BY OrderID) AS RowNumber, OrderID, OrderDate FROM Orders) SELECT * FROM Ordered WHERE RowNumber = 1000000 感谢上述SQL:Firoz Ansari的Weblog 更新:有关SQL标准,请参见Troels Arvin的答案。Troels,您有没有我们可以引用的链接?


6
如何修改MySQL栏以允许NULL?
MySQL 5.0.45 更改表以允许列为空的语法是什么,或者这是怎么回事: ALTER mytable MODIFY mycolumn varchar(255) null; 我将手册解释为仅运行上面的手册,它将重新创建该列,这次允许为空。服务器告诉我我有语法错误。我只是看不到他们。
396 mysql  syntax 


17
MySQL中的多个更新
我知道您可以一次插入多行,是否可以在MySQL中一次更新多行(如在一个查询中)? 编辑:例如,我有以下内容 Name id Col1 Col2 Row1 1 6 1 Row2 2 2 3 Row3 3 9 5 Row4 4 16 8 我想将以下所有更新合并到一个查询中 UPDATE table SET Col1 = 1 WHERE id = 1; UPDATE table SET Col1 = 2 WHERE id = 2; UPDATE table SET Col2 = 3 WHERE …
388 mysql  sql  sql-update 


7
如何在MySQL中声明变量?
如何在mysql中声明变量,以便我的第二个查询可以使用它? 我想写一些像: SET start = 1; SET finish = 10; SELECT * FROM places WHERE place BETWEEN start AND finish;
386 mysql  sql 

30
无法通过套接字'/var/mysql/mysql.sock'连接到本地MySQL服务器(38)
我在尝试连接mysql时遇到大问题。当我跑步时: /usr/local/mysql/bin/mysql start 我有以下错误: Can't connect to local MySQL server through socket '/var/mysql/mysql.sock' (38) 我的确mysql.sock在/var/mysql目录下。 在/etc/my.cnf我有: [client] port=3306 socket=/var/mysql/mysql.sock [mysqld] port=3306 socket=/var/mysql/mysql.sock key_buffer_size=16M max_allowed_packet=8M 并且在/etc/php.ini我有: ; Default socket name for local MySQL connects. If empty, uses the built-in ; MySQL defaults. mysql.default_socket = /var/mysql/mysql.sock 我已经使用重新启动了Apache sudo /opt/local/apache2/bin/apachectl restart 但是我仍然有错误。 否则,我不知道这是否相关,但是当mysql_config …
385 mysql 


15
MySQL:如果表中不存在,则插入记录
我正在尝试执行以下查询: INSERT INTO table_listnames (name, address, tele) VALUES ('Rupert', 'Somewhere', '022') WHERE NOT EXISTS ( SELECT name FROM table_listnames WHERE name='value' ); 但这会返回错误。基本上,如果该记录的“名称”字段已经存在于另一条记录中,我不想插入一条记录-如何检查新名称是否唯一?
384 mysql 

15
错误1698(28000):用户'root'@'localhost'的访问被拒绝
我正在设置新服务器,并继续遇到此问题。 当我尝试以root用户登录MySQL数据库时,出现错误: 错误1698(28000):用户'root'@'localhost'的访问被拒绝 是否通过终端(SSH),PHPMyAdmin或MySQL客户端(例如Navicat)连接都没有关系。他们都失败了。 我在mysql.user表中查看了以下内容: +------------------+-------------------+ | user | host | +------------------+-------------------+ | root | % | | root | 127.0.0.1 | | amavisd | localhost | | debian-sys-maint | localhost | | iredadmin | localhost | | iredapd | localhost | | mysql.sys | localhost | | phpmyadmin | …
382 mysql  iredmail 

10
您不能在FROM子句中指定要更新的目标表
我有一个简单的mysql表: CREATE TABLE IF NOT EXISTS `pers` ( `persID` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(35) NOT NULL, `gehalt` int(11) NOT NULL, `chefID` int(11) DEFAULT NULL, PRIMARY KEY (`persID`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; INSERT INTO `pers` (`persID`, `name`, `gehalt`, `chefID`) VALUES (1, 'blb', 1000, 3), (2, 'as', 1000, 3), …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.