Tag: MySQL

ms-access中是否有一个group_concat函数?

ms-access中是否有一个group_concat函数?

将dynamic列转移到行

我想知道如何将Table_1转换为Expected_Result_Table : Table1 —————————————– Id abc brt ccc ddq eee fff gga hxx —————————————– 12345 0 1 0 5 0 2 0 0 21321 0 0 0 0 0 0 0 0 33333 2 0 0 0 0 0 0 0 41414 0 0 0 0 5 0 0 1 55001 0 0 0 0 […]

mysql_real_escape_string的缺点?

我已经看到这里有几个人声明,使用mysql_real_escape_string连接查询不会保护你(完全)SQL注入攻击。 但是,我还没有看到一个input示例,说明了mysql_real_escape_string不会保护您的攻击。 大多数示例忘记mysql_query仅限于一个查询,并且不正确地使用mysql_real_escape_string 。 我能想到的唯一例子如下: mysql_query('DELETE FROM users WHERE user_id = '.mysql_real_escape_string($input)); 这不会保护您免受以下input: 5 OR 1=1 我会看到这是mysql_real_escape_string不正确使用,而不是一个缺点,它是专为string而不是数值。 您应该转换为数字types,或者如果要在input消息时将input视为string,则应在查询中执行相同的操作,并在其周围引号。 任何人都可以提供一个input的例子, mysql_real_escape_string不依赖不正确的数值处理,或忘记mysql_query只能执行一个查询吗? 编辑:我感兴趣的是mysql_real_escape_string的限制,而不是比较它的替代品,我知道有新项目更好的select,而不是争议。

SQL:使用2个不同的auto_increment创build一个关系表

我有2个表,都有自己的自动递增的ID,这当然是主键。 当我想创build第三个表来build立这两个表之间的关系时,我总是有一个错误。 首先是你可以只有一个自动递增的列,第二个是我从这两个删除auto_increment语句时发生的,所以sql不允许我把它们作为外键,因为types匹配失败。 有没有办法可以创build一个关系表,而不会丢失自动递增function? 另一个可能的(但不是优先的)解决scheme可能是第一个表中有另一个主键,当然是用户的用户名,而不是自动增量语句。 这是不可避免的吗? 提前致谢。

使用SQL来确定文本字段的字数统计

我最近一直在研究一些数据库searchfunction,并希望获得一些信息,如每个文档的平均词(例如数据库中的文本字段)。 我迄今发现的唯一的东西(没有在DB以外的select语言处理)是: SELECT AVG(LENGTH(content) – LENGTH(REPLACE(content, ' ', '')) + 1) FROM documents 这似乎工作*但你有其他的build议吗? 我目前正在使用MySQL 4(希望尽快转移到这个应用程序的版本5),但也有兴趣在一般的解决scheme。 谢谢! *我可以想象,这是一个相当粗糙的方式来确定这一点,因为它并没有考虑内容中的HTML等。 这对于这个特定的项目来说没问题,但是还有更好的方法吗? 更新:定义我的意思是“更好”:要么更准确,更有效率地执行,要么更“正确”(易于维护,良好的实践等)。 对于我提供的内容,上面的查询速度足够快,对于这个项目来说是准确的,但是我将来可能需要类似的东西(所以我问了一下)。

从Oracle迁移到MySQL

我们在Oracle数据库中遇到了严重的性能问题,我们希望尝试将其迁移到基于MySQL的数据库(无论是直接MySQL还是更优选Infobright)。 事情是,我们需要让旧系统和新系统在至less几个星期(如果不是几个月)重叠,然后才能真正知道新数据库的所有function是否符合我们的需求。 所以,这是我们的情况: Oracle数据库由多个表组成,每个数百万行。 白天几乎有成千上万的声明,我们无法阻止移民。 每天早上,新数据被导入到Oracle数据库中,replace成千上万行。 复制这个过程不是一个问题,所以我们可以在理论上同时导入两个数据库。 但是,这里面临的挑战在于,为了实现这个目标,我们需要从Oracle数据库中导出一个一致的状态。 (星期一我们不能出口一些表格,星期二出口一些表格等等)。这意味着至less出口应该在不到一天的时间内完成。 我们的第一个想法是转储模式,但我无法find一个工具来将Oracle转储文件导入到MySQL中。 在CSV文件中导出表格可能会起作用,但是恐怕可能需要很长时间。 所以我现在的问题是: 我该怎么办? 有什么工具可以将Oracle转储文件导入到MySQL中吗? 有没有人有这么大规模的迁移经验? PS:请不要为Oracle提供性能优化技术,我们已经尝试了很多:-) 编辑:我们之前已经尝试了一些ETL工具,只是发现它们不够快:导出只有一个表已经花费了4个多小时… 第二编辑:来吧人们…没有人试图尽可能快地导出整个数据库,并转换数据,以便它可以导入到另一个数据库系统?

什么是“= null”和“IS NULL”

“= null”和“IS NULL”有什么区别? 他们是如何使用不同的?

将图像直接存储在数据库中或作为base64数据存储?

将图像存储在数据库中的常用方法是在存储数据之前将图像转换为base64数据。 这个过程将增加33%的大小。 或者,可以将图像直接存储为BLOB ; 例如: $image = new Imagick("image.jpg"); $data = $image->getImageBlob(); $data = $mysqli->real_escape_string($data); $mysqli->query("INSERT INTO images (data) VALUES ('$data')"); 然后显示图像 <img src="data:image/jpeg;base64,' . base64_encode($data) . '" /> 采用后一种方法,我们节省了1/3的存储空间。 为什么在MySQL数据库中将图像存储为base64更为常见? 更新:关于在数据库中存储图像的优点和缺点有许多争论,大多数人认为这不是一个实际的方法。 无论如何,在这里我假设我们将图像存储在数据库中,并讨论这样做的最佳方法。

找不到合适的驱动程序'jdbc:mysql:// localhost:3306 / mysql

使用Java,当试图连接到一个mysql数据库时,我得到这个错误: java.sql.SQLException: No suitable driver found for 'jdbc:mysql://localhost:3306/mysql at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at MyTest1.main(MyTest1.java:28) 我正在使用mysql-connector-java-5.1.18-bin.jar驱动程序。 这是在我的build设path。 我已经重新启动MySQL。 我也从根目录没有密码的命令行login,它连接正常。 我目前不在netstat中看到一个端口3306。 以前我得到了一个不同的错误(我没有改变代码)。 错误是“jdbc mysql拒绝用户root'@'localhost password NO” try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { String url = "'jdbc:mysql://localhost:3306/mysql"; Connection con = DriverManager.getConnection(url, "root", ""); } catch […]

MySQL将datetime转换为Unix时间戳

如何将以下格式转换为unix时间戳? Apr 15 2012 12:00AM 我从DB获得的格式最后看起来有AM 。 我试过使用以下,但它没有奏效: CONVERT(DATETIME, Sales.SalesDate, 103) AS DTSALESDATE, CONVERT(TIMESTAMP, Sales.SalesDate, 103) AS TSSALESDATE where Sales.SalesDate value is Apr 15 2012 12:00AM