คำถามติดแท็ก sql-standard

สำหรับคำถามเกี่ยวกับ SQL Standard เอง (หรือที่เรียกว่า ANSI หรือ ISO SQL Standard) รวมถึงการเขียนแบบสอบถามที่เป็นไปตามมาตรฐานนั้น แท็กนี้ห้ามใช้สำหรับคำถามเกี่ยวกับ SQL Server Standard Edition

11
SQL: SELECT คอลัมน์ทั้งหมดยกเว้นบางคอลัมน์
มีวิธีSELECTใดคอลัมน์ทั้งหมดในตารางยกเว้นคอลัมน์ที่เฉพาะเจาะจง มันจะสะดวกมากสำหรับการเลือกคอลัมน์ที่ไม่ใช่หยดหรือไม่ใช่รูปทรงเรขาคณิตทั้งหมดจากตาราง สิ่งที่ต้องการ: SELECT * -the_geom FROM segments; ฉันเคยได้ยินว่าฟังก์ชั่นนี้ถูกยกเว้นโดยเจตนาจากมาตรฐาน SQLเพราะการเปลี่ยนการเพิ่มคอลัมน์ลงในตารางจะเปลี่ยนผลการสืบค้น มันเป็นเรื่องจริงเหรอ? อาร์กิวเมนต์นั้นใช้ได้หรือไม่ มีวิธีแก้ปัญหาเฉพาะอย่างยิ่งใน PostgreSQL หรือไม่

3
เหตุใด ANSI SQL จึงกำหนด SUM (ไม่มีแถว) เป็น NULL
กำหนด ANSI SQL มาตรฐาน (บทที่ 6.5 เปฟังก์ชั่นชุด) พฤติกรรมต่อไปนี้สำหรับฟังก์ชันการรวมในชุดผลลัพธ์ที่ว่างเปล่า COUNT(...) = 0 AVG(...) = NULL MIN(...) = NULL MAX(...) = NULL SUM(...) = NULL การส่งคืนค่า NULL สำหรับ AVG, MIN และ MAX เหมาะสมอย่างยิ่งเนื่องจากค่าเฉลี่ยค่าต่ำสุดและค่าสูงสุดของชุดว่างเปล่านั้นไม่ได้ถูกกำหนด อย่างไรก็ตามอันสุดท้าย, ทำให้ฉันรำคาญใจ: ในทางคณิตศาสตร์, SUM ของเซตว่างนั้นถูกนิยามไว้อย่างดี: 0. การใช้ 0 องค์ประกอบที่เป็นกลางของการเติมเนื่องจากเคสฐานทำให้ทุกอย่างสอดคล้องกัน: SUM({}) = 0 = 0 SUM({5}) = 5 = 0 …

2
สร้างดัชนีเทียบกับแก้ไขตารางเพิ่มดัชนี - MySQLism หรือ SQL Standard?
เพิ่งเจอปัญหาแปลก ๆ โดยขึ้นอยู่กับว่าฉันจะสร้างดัชนีได้อย่างไรจำเป็นต้องใช้ชื่อดัชนี http://dev.mysql.com/doc/refman/5.5/en/create-index.html http://dev.mysql.com/doc/refman/5.5/en/alter-table.html CREATE INDEX `random_name` ON `my_table` (`my_column`); # Requires an index name ALTER TABLE `my_table` ADD INDEX (`my_column`); # Does not require an index name สำหรับฉันแล้วดูเหมือนว่าการเรียก CREATE INDEX ไม่ควรใช้ชื่อดัชนี ฉันสงสัยว่านี่เป็น MySQLism หรือมาตรฐาน SQL ใช่หรือไม่

1
ลักษณะการทำงานของรั้วการปรับให้เหมาะสมของ CTE (ด้วยแบบสอบถาม) ระบุไว้ในมาตรฐาน SQL: 2008 หรือไม่ ถ้าเป็นเช่นนั้นอยู่ที่ไหน
ฉันเห็นการอ้างอิงบ่อย ๆ กับWITHแบบสอบถาม (นิพจน์ตารางทั่วไปหรือ CTE) ซึ่งทำหน้าที่เป็นรั้วการเพิ่มประสิทธิภาพซึ่งเซิร์ฟเวอร์ไม่ได้รับอนุญาตให้ส่งตัวกรองลงในการสืบค้น CTE ดึงการแสดงออกทั่วไปออกมาจาก CTE เป็นต้นมันมักอ้างว่า เพื่อให้เป็นพฤติกรรมที่กำหนดโดยมาตรฐาน SQL CTEs มีแน่นอนรั้วการเพิ่มประสิทธิภาพใน PostgreSQL ... แต่นี้ต้องตามมาตรฐานหรือรายละเอียดการดำเนินงานจริงเพียง? ตัวอย่างเช่นการโพสต์รายชื่อผู้รับจดหมายเหล่านี้อ้างสิทธิ์หรือแนะนำว่าเป็นมาตรฐาน: http://www.digipedia.pl/usenet/thread/11566/101385/ หลังจากพูดถึงมันในความคิดเห็นฉันถูกถามว่ามีการระบุไว้ที่ไหนและหลังจากดูที่ร่างฉบับเดียวของ SQL: 2008 ฉันสามารถเข้าถึงฉันไม่ได้โชคดีมากที่ได้พบมัน ฉันยังไม่ได้ศึกษามาตรฐานอย่างเข้มข้นดังนั้นฉันหวังว่าจะได้รับคำแนะนำจากใครบางคนที่: การฟันดาบการเพิ่มประสิทธิภาพของ CTEs ใน PostgreSQL นั้นเป็นสิ่งจำเป็นตามมาตรฐานหรือไม่ และถ้าเป็นเช่นนั้นมันอยู่ที่ไหนระบุ? หรือข้อความที่อยู่ในรายชื่อผู้รับจดหมายของ Pg มีข้อผิดพลาดหรือไม่? ดูเพิ่มเติมที่รั้วการปรับให้เหมาะสมเธรดCTE ในรายการสิ่งที่ต้องทำ? .

2
ฉันจะหามาตรฐานแรกของ SQL, SQL-86 ได้ที่ไหน
คำถามนี้เป็นคำถามที่แตกต่างกัน แต่คล้ายกับคำขอนี้มองสำหรับ SQL-89 ร่างแรกของ SQL มีชื่อว่า SQL-86 มีการอ้างอิงจำนวนมาก สามารถดาวน์โหลดได้หรือไม่ Wikipedia ไม่มีหน้าสำหรับมัน ฉันสนใจมันด้วยเหตุผลทางประวัติศาสตร์ ดูเหมือนว่าจะถูกเรียกว่า ANSI X3.135-1986 CAN / CSA Z243.47-88 ISO 9075: 1987 SQL / 1 NBS FIPS 127 ข้อมูลจำเพาะถูกอ้างถึงในเอกสารตั้งแต่ช่วงเวลาที่มาจากคณะกรรมการด้านเทคนิค ANSI X3H2X3H2 ฉันรู้ว่ามี webstore.ansi.org แต่ฉันไม่พบX3.135-1986เอกสาร อย่างไรก็ตามฉันสามารถหาX3.168-1989สเป็คที่มีอยู่ภายใต้การX3.135-1992ค้นหาboth X3.168และX3.135ไม่อนุญาตให้ฉันซื้อสเป็ค 1986

3
ผลลัพธ์ที่ถูกต้องสำหรับแบบสอบถามนี้คืออะไร
ฉันเจอปริศนานี้ในความคิดเห็นที่นี่ CREATE TABLE r (b INT); SELECT 1 FROM r HAVING 1=1; SQL ServerและPostgreSQLส่งคืน 1 แถว MySQLและOracleคืนค่าศูนย์แถว อันไหนถูกต้อง? หรือทั้งสองอย่างนั้นถูกต้องเท่าเทียมกัน?


1
แผน ANSI / ISO สำหรับการ จำกัด มาตรฐานหรือไม่
ปัจจุบันมีแผนที่จะสร้างมาตรฐานวิธีที่ดีที่สุดวิธีหนึ่งในการ จำกัด จำนวนผลลัพธ์ที่ส่งคืนโดยแบบสอบถามหรือไม่ คำถามล้นสแต็คที่มีทางเลือก ANSI SQL กับคำหลัก MYSQL LIMIT หรือไม่ แสดงวิธีการต่างๆในการจัดการพฤติกรรมนี้ในภาษาต่างๆ: DB2 -- select * from table fetch first 10 rows only Informix -- select first 10 * from table Microsoft SQL Server and Access -- select top 10 * from table MySQL and PostgreSQL -- select * from table …

1
SQL Spec ต้องการ GROUP BY ใน EXISTS () หรือไม่
Microsoft อนุญาตให้ใช้ไวยากรณ์นี้ในขณะนี้ SELECT * FROM ( VALUES (1) ) AS g(x) WHERE EXISTS ( SELECT * FROM ( VALUES (1),(1) ) AS t(x) WHERE g.x = t.x HAVING count(*) > 1 ); ขอให้สังเกตว่าไม่มีGROUP BYในEXISTSข้อเป็น ANSI SQL ที่ถูกต้อง หรือเป็นเพียงการเปิดเผยรายละเอียดการปฏิบัติ สำหรับการอ้างอิงไวยากรณ์เดียวกันนี้ไม่ได้รับอนุญาตใน PostgreSQL ข้อผิดพลาด: คอลัมน์ "tx" จะต้องปรากฏในกลุ่มตามข้อหรือจะใช้ในฟังก์ชั่นรวม แต่ไวยากรณ์นี้ได้รับอนุญาต .. SELECT * FROM ( …

2
มีฟังก์ชัน SQL มาตรฐานที่มีผลข้างเคียงหรือไม่?
มาตรฐาน SQL กำหนดฟังก์ชันที่มีผลข้างเคียงหรือไม่? ตัวอย่างเช่นพวกเขามีฟังก์ชั่นสำหรับการเขียนลงในไฟล์ * หรือเพื่อปรับปรุงค่าในคอลัมน์บางคอลัมน์ของตารางเมื่อคุณทำสิ่งที่ชอบ SELECT myfunction(params...); ฉันเคยเห็นสิ่งเหล่านี้บางครั้ง แต่ฉันแค่อยากรู้ว่ามาตรฐาน SQL ทำเช่นเดียวกัน * นี่ไม่ใช่คำถามเกี่ยวกับ PostgreSQL โดยเฉพาะ ฉันใช้ตัวอย่างผลข้างเคียงที่ฉันเห็นใน PostgreSQL เท่านั้น

3
คำหลัก“ ALIAS” ใช้จริงหรือไม่
ตาม PostgreSQL 7.1 ถึง 9.1 (ไม่สนับสนุนในขณะนี้) ALIASจะแสดงรายการเป็นคำสงวนอย่างน้อยสำหรับ SQL-99 รุ่นที่ใหม่กว่าจะไม่แสดง - แนะนำว่ามันถูกทิ้งเป็นคำสงวน เอกสาร PostgreSQL เก่ากล่าวว่า"การปรากฏตัวของคำสำคัญไม่ได้บ่งบอกถึงการมีอยู่ของคุณสมบัติ" เมื่อ aliasing ตารางหรือคอลัมน์ที่ผมเคยเห็นแต่ไม่เคยASALIAS คีย์เวิร์ด SQL ALIASใช้อยู่ที่ไหน (หรือเคย) มันเคยใช้งานหรือสงวนไว้สำหรับใช้ในอนาคตเท่านั้นหรือไม่
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.