有可能我做一个简单的查询来计算我在一个确定的时间段内有多少记录,如年,月或日,有一个TIMESTAMP
字段,如:
SELECT COUNT(id)
FROM stats
WHERE record_date.YEAR = 2009
GROUP BY record_date.YEAR
Run Code Online (Sandbox Code Playgroud)
甚至:
SELECT COUNT(id)
FROM stats
GROUP BY record_date.YEAR, record_date.MONTH
Run Code Online (Sandbox Code Playgroud)
要有月度统计数据.
谢谢!
我正在尝试学习编写查询的最佳方法.我也理解保持一致的重要性.到现在为止,我已经随机使用了单引号,双引号和后退,没有任何实际想法.
例:
$query = 'INSERT INTO table (id, col1, col2) VALUES (NULL, val1, val2)';
Run Code Online (Sandbox Code Playgroud)
此外,在上面的例子中,考虑table
可能是变量.
这是什么标准?你是做什么?
我一直在这里阅读类似问题的答案大约20分钟,但看起来这个问题没有明确的答案.
是否可以暂时禁用MySQL中的约束?
我有两个Django模型,每个模型都有一个ForeignKey到另一个.由于ForeignKey约束,删除模型的实例会返回错误:
cursor.execute("DELETE FROM myapp_item WHERE n = %s", n)
transaction.commit_unless_managed() #a foreign key constraint fails here
cursor.execute("DELETE FROM myapp_style WHERE n = %s", n)
transaction.commit_unless_managed()
Run Code Online (Sandbox Code Playgroud)
是否可以暂时禁用约束并删除?
我想在MySQL中创建一个新用户,并且只对一个数据库提供完全访问权限,比如dbTest
我用一个命令创建的数据库create database dbTest;
.那些MySQL命令会做什么?
为什么没有一个TRUNCATE上mygroup
工作?即使ON DELETE CASCADE SET
我得到了:
错误1701(42000):无法截断外键约束中引用的表(
mytest
.instance
,CONSTRAINTinstance_ibfk_1
FOREIGN KEY(GroupID
)REFERENCESmytest
.mygroup
(ID
))
drop database mytest;
create database mytest;
use mytest;
CREATE TABLE mygroup (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY
) ENGINE=InnoDB;
CREATE TABLE instance (
ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
GroupID INT NOT NULL,
DateTime DATETIME DEFAULT NULL,
FOREIGN KEY (GroupID) REFERENCES mygroup(ID) ON DELETE CASCADE,
UNIQUE(GroupID)
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud) 即使使用mysql_real_escape_string()
函数,是否存在SQL注入的可能性?
考虑这个示例情况.SQL是用PHP构造的,如下所示:
$login = mysql_real_escape_string(GetFromPost('login'));
$password = mysql_real_escape_string(GetFromPost('password'));
$sql = "SELECT * FROM table WHERE login='$login' AND password='$password'";
Run Code Online (Sandbox Code Playgroud)
我听过很多人对我说,这样的代码仍然很危险,即使使用了mysql_real_escape_string()
函数也可以破解.但我想不出任何可能的漏洞?
像这样的经典注射:
aaa' OR 1=1 --
Run Code Online (Sandbox Code Playgroud)
不工作.
你知道任何可能通过上面的PHP代码注入的注入吗?
创建MySQL表时PRIMARY,UNIQUE,INDEX和FULLTEXT之间有什么区别?
我该如何使用它们?
我创建了数据库,例如'mydb'.
CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
现在我可以从任何地方登录到数据库,但无法创建表.
如何授予该数据库和(将来)表的所有权限.我无法在'mydb'数据库中创建表.我总是得到:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
Run Code Online (Sandbox Code Playgroud) story_category
我的数据库中有一个表有损坏的条目.下一个查询返回损坏的条目:
SELECT *
FROM story_category
WHERE category_id NOT IN (
SELECT DISTINCT category.id
FROM category INNER JOIN
story_category ON category_id=category.id);
Run Code Online (Sandbox Code Playgroud)
我试图删除它们执行:
DELETE FROM story_category
WHERE category_id NOT IN (
SELECT DISTINCT category.id
FROM category
INNER JOIN story_category ON category_id=category.id);
Run Code Online (Sandbox Code Playgroud)
但我得到了下一个错误:
#1093 - 您无法在FROM子句中为更新指定目标表'story_category'
我怎么能克服这个?
我在localhost中使用MySQL作为在R中执行统计的"查询工具",也就是说,每次运行R脚本时,我创建一个新数据库(A),创建一个新表(B),将数据导入B ,提交查询以获得我需要的内容,然后我删除B并删除A.
它对我来说很好,但我意识到ibdata文件大小正在迅速增加,我在MySQL中没有存储任何内容,但ibdata1文件已超过100 MB.
我使用或多或少的默认MySQL设置进行设置,有没有办法可以在一段固定的时间后自动缩小/清除ibdata1文件?