Questions tagged «sql»

结构化查询语言(SQL)是用于查询数据库的语言。问题应包括代码示例,表结构,示例数据以及正在使用的DBMS实现的标签(例如MySQL,PostgreSQL,Oracle,MS SQL Server,IBM DB2等)。如果您的问题仅涉及特定的DBMS(使用特定的扩展名/功能),请改用该DBMS的标签。使用SQL标记的问题的答案应使用ISO / IEC标准SQL。

9
外键是否可以提高查询性能?
假设我有2个表格,产品和产品类别。两个表在CategoryId上都有关系。这就是查询。 SELECT p.ProductId, p.Name, c.CategoryId, c.Name AS Category FROM Products p INNER JOIN ProductCategories c ON p.CategoryId = c.CategoryId WHERE c.CategoryId = 1; 当我创建执行计划时,表ProductCategories会执行群集索引查找,这与预期的一样。但是对于表Products,它执行集群索引扫描,这使我感到怀疑。为什么FK不能帮助提高查询性能? 因此,我必须在Products.CategoryId上创建索引。当我再次创建执行计划时,两个表都执行索引查找。并且估计的子树成本大大降低了。 我的问题是: 除了FK有助于关系约束之外,它还有其他用途吗?它会提高查询性能吗? 是否应该在所有表的所有FK列(如Products.CategoryId)上创建索引?

6
如何在PostgreSQL中将RETURNING和ON CONFLICT一起使用?
我在PostgreSQL 9.5中具有以下UPSERT: INSERT INTO chats ("user", "contact", "name") VALUES ($1, $2, $3), ($2, $1, NULL) ON CONFLICT("user", "contact") DO NOTHING RETURNING id; 如果没有冲突,则返回以下内容: ---------- | id | ---------- 1 | 50 | ---------- 2 | 51 | ---------- 但是,如果有冲突,则不会返回任何行: ---------- | id | ---------- id如果没有冲突,我想返回新的列,或者返回id冲突列的现有列。 能做到吗?如果是这样,怎么办?

4
向两个列的组合添加唯一约束
我有一张桌子,不知何故,同一个人Person两次进入了我的桌子。现在,主键只是一个自动编号,但是还有两个我想强制保持唯一性的字段。 例如,这些字段是: ID Name Active PersonNumber 我只希望1条记录具有唯一的PersonNumber和Active =1。 (因此,两个字段的组合必须是唯一的) 在SQL Server中现有表上的最佳方法是什么,我可以做到这一点,因此,如果其他人使用与现有值相同的值进行插入,则插入失败,因此我不必在应用程序代码中担心这一点。
149 sql  sql-server 

3
如何检查给定架构中是否存在表
Postgres 8.4和更高版本的数据库包含public架构中的通用表和架构中的公司特定表company。 company模式名称始终'company'以公司编号开头和结尾。 因此,可能会有类似以下的模式: public company1 company2 company3 ... companynn 应用程序始终与单个公司一起使用。 的search_path相应指定在ODBC或连接Npgsql的字符串,如: search_path='company3,public' 您如何检查指定表中是否存在给定表companyn? 例如: select isSpecific('company3','tablenotincompany3schema') 应该返回false,并且 select isSpecific('company3','tableincompany3schema') 应该回来true。 无论如何,该函数应仅检查companyn传递的架构,而不检查其他架构。 如果给定的表public和传递的模式中都存在一个表,则该函数应返回true。 它应该适用于Postgres 8.4或更高版本。

6
LINQ to SQL-具有多个联接条件的左外部联接
我有以下SQL,我正尝试将其转换为LINQ: SELECT f.value FROM period as p LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17 WHERE p.companyid = 100 我已经看到了左外部连接(即into x from y in x.DefaultIfEmpty()等)的典型实现,但是不确定如何引入其他连接条件(AND f.otherid = 17) 编辑 为什么AND f.otherid = 17条件是JOIN而不是WHERE子句的一部分?因为f某些行可能不存在,所以我仍然希望包含这些行。如果在JOIN之后在WHERE子句中应用了条件-那么我就没有想要的行为。 不幸的是: from p in context.Periods join f in context.Facts on p.id …
148 c#  sql  linq  linq-to-sql  outer-join 

10
如何在MySQL中获取当前日期和时间?
是否可以在手动查询中使用诸如DATETIME之类的值或命令来插入当前日期和时间? INSERT INTO servers ( server_name, online_status, exchange, disk_space, network_shares ) VALUES( 'm1', 'ONLINE', 'ONLINE', '100GB', 'ONLINE' 'DATETIME' ) 末尾引用的DATETIME值是我要添加当前日期和时间的位置。
148 mysql  sql  datetime 

13
高效的SQL测试查询或验证查询,可在所有(或大多数)数据库中使用
许多数据库连接池库都提供了测试其SQL连接是否空闲的功能。例如,JDBC池库c3p0具有一个名为的属性preferredTestQuery,该属性将在配置的时间间隔上在连接上执行。同样,Apache Commons DBCP具有validationQuery。 我看到的许多示例 查询都是针对MySQL的,建议将其SELECT 1;用作测试查询的值。但是,此查询不适用于某些数据库(例如HSQLDB,SELECT 1需要使用FROM子句)。 是否存在与数据库无关的查询,该查询同样有效,但适用于所有SQL数据库? 编辑: 如果没有(似乎是这种情况),有人可以建议一套适用于各种数据库提供程序的SQL查询吗?我的意图是根据数据库提供程序的配置以编程方式确定可以使用的语句。


8
ORA-00979不是依表达式分组
我正在使用以下查询获取ORA-00979: SELECT cr.review_sk, cr.cs_sk, cr.full_name, tolist(to_char(cf.fact_date, 'mm/dd/yyyy')) "appt", cs.cs_id, cr.tracking_number from review cr, cs, fact cf where cr.cs_sk = cs.cs_sk and UPPER(cs.cs_id) like '%' || UPPER(i_cs_id) || '%' and row_delete_date_time is null and cr.review_sk = cf.review_wk (+) and cr.fact_type_code (+) = 183050 GROUP BY cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_number ORDER BY …
147 sql  oracle  ora-00979 



18
使用SQL列出Postgres db 8.1中的所有序列
我正在将数据库从postgres转换为mysql。 由于我找不到能自行解决问题的工具,因此我将使用autoincrement值将所有postgres序列转换为mysql中的autoincrement id。 因此,如何在Postgres DB(8.1版)中列出所有序列,以及有关使用该表的信息,下一个值等信息(通过SQL查询)? 请注意,我无法使用information_schema.sequences8.4版本中的视图。

12
Java-转义字符串以防止SQL注入
我试图在Java中放置一些反SQL注入,并发现使用“ replaceAll”字符串函数非常困难。最后,我需要,将转换现有的功能\来\\,任何"到\",任何'到\',任何\n以\\n使得当字符串由MySQL的SQL注入评估将被阻止。 我已经整理了一些正在使用的代码,并且\\\\\\\\\\\该函数中的所有内容都使我大失所望。如果有人碰巧有这个例子,我将不胜感激。

15
从表中选择1是什么意思?
我已经看到了许多有关以下内容的查询。 Select 1 From table 这1意味着什么,它将如何执行,返回什么? 另外,在哪种类型的方案中可以使用?
146 mysql  sql  plsql 

9
如何从SQL Server用户定义的函数报告错误
我在SQL Server 2008中编写一个用户定义的函数。我知道这些函数不能以通常的方式引发错误-如果尝试包括RAISERROR语句,则SQL返回: Msg 443, Level 16, State 14, Procedure ..., Line ... Invalid use of a side-effecting operator 'RAISERROR' within a function. 但是事实是,该函数接受了一些输入,这可能是无效的,如果是,则该函数没有返回任何有意义的值。那我该怎么办? 我当然可以返回NULL,但是对于使用该函数进行故障排除的任何开发人员而言,这都是困难的。我还可能导致被零除或类似的结果-这将生成错误消息,但会产生误导。有什么办法可以以某种方式报告自己的错误消息?

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.