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

Structured Query Language (SQL) เป็นภาษาสำหรับการสืบค้นฐานข้อมูล คำถามควรมีตัวอย่างรหัสโครงสร้างตารางข้อมูลตัวอย่างและแท็กสำหรับการใช้งาน DBMS (เช่น MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 และอื่น ๆ ) หากคำถามของคุณเกี่ยวข้องกับ DBMS เฉพาะ (ใช้ส่วนขยาย / คุณลักษณะเฉพาะ) ให้ใช้แท็กของ DBMS นั้นแทน คำตอบของคำถามที่ติดแท็กด้วย SQL ควรใช้ SQL มาตรฐาน ISO / IEC


12
DDL และ DML คืออะไร
ฉันเคยได้ยินคำว่า DDL และ DML ในการอ้างอิงถึงฐานข้อมูล แต่ฉันไม่เข้าใจว่ามันคืออะไร พวกเขาคืออะไรและเกี่ยวข้องกับ SQL อย่างไร
347 sql  ddl  dml 


12
วิธีที่ดีที่สุดในการเลือกแถวสุ่ม PostgreSQL
ฉันต้องการสุ่มเลือกแถวใน PostgreSQL ฉันลองทำสิ่งนี้: select * from table where random() < 0.01; แต่บางคนก็แนะนำสิ่งนี้: select * from table order by random() limit 1000; ฉันมีตารางขนาดใหญ่มากที่มีแถว 500 ล้านแถวฉันต้องการให้มันเร็ว วิธีไหนดีกว่ากัน อะไรคือความแตกต่าง? วิธีที่ดีที่สุดในการเลือกแถวแบบสุ่มคืออะไร

6
Postgres และดัชนีคีย์ต่างประเทศและคีย์หลัก
Postgres วางดัชนีในคีย์ต่างประเทศและคีย์หลักโดยอัตโนมัติหรือไม่ ฉันจะบอกได้อย่างไร มีคำสั่งที่จะส่งคืนดัชนีทั้งหมดบนตารางหรือไม่?

15
Oracle: ถ้า Table มีอยู่
ฉันเขียนสคริปต์การย้ายข้อมูลบางอย่างสำหรับฐานข้อมูล Oracle และหวังว่า Oracle จะมีสิ่งที่คล้ายกับIF EXISTSโครงสร้างของ MySQL โดยเฉพาะอย่างยิ่งเมื่อใดก็ตามที่ฉันต้องการวางตารางใน MySQL ฉันทำอะไรเช่น DROP TABLE IF EXISTS `table_name`; วิธีนี้หากตารางไม่มีอยู่DROPจะไม่เกิดข้อผิดพลาดและสคริปต์สามารถดำเนินการต่อได้ Oracle มีกลไกที่คล้ายกันหรือไม่ ฉันรู้ว่าฉันสามารถใช้แบบสอบถามต่อไปนี้เพื่อตรวจสอบว่ามีตารางอยู่หรือไม่ SELECT * FROM dba_tables where table_name = 'table_name'; แต่ไวยากรณ์สำหรับการคาดเดาสิ่งนั้นพร้อมกับ a DROPคือการหลบหนีฉัน
343 sql  oracle  sql-drop 

23
มีข้อเสียใด ๆ ในการใช้ nvarchar (MAX) เสมอหรือไม่?
ใน SQL Server 2005 มีข้อเสียใด ๆ ในการสร้างฟิลด์อักขระทั้งหมด nvarchar (MAX) แทนที่จะระบุความยาวอย่างชัดเจนเช่น nvarchar (255) หรือไม่ (นอกเหนือจากความชัดเจนที่คุณไม่สามารถจำกัดความยาวของฟิลด์ที่ระดับฐานข้อมูล)

11
SQL เพื่อค้นหาจำนวนค่าที่แตกต่างในคอลัมน์
ฉันสามารถเลือกค่าที่แตกต่างทั้งหมดในคอลัมน์ด้วยวิธีต่อไปนี้: SELECT DISTINCT column_name FROM table_name; SELECT column_name FROM table_name GROUP BY column_name; แต่ฉันจะได้รับการนับแถวจากแบบสอบถามนั้นได้อย่างไร จำเป็นต้องใช้แบบสอบถามย่อยหรือไม่
342 sql  distinct 

5
แปลง INT เป็น VARCHAR SQL
ฉันกำลังใช้ Sybase และฉันกำลังเลือกตัวเลือกที่ส่งคืนคอลัมน์ที่เรียกว่า "iftype" แต่ประเภทของมันคือ int และฉันจำเป็นต้องแปลงเป็น varchar เมื่อฉันพยายามเลือกโดยไม่ใช้ฟังก์ชั่นแปลงฉันได้รับข้อผิดพลาดนี้: รหัสข้อผิดพลาด 257, สถานะ SQL 37000: การแปลงโดยนัยจากประเภทข้อมูล 'VARCHAR' เป็น 'INT' ไม่ได้รับอนุญาต ใช้ฟังก์ชัน CONVERT เพื่อเรียกใช้แบบสอบถามนี้ CONVERTฉันไม่ทราบวิธีการใช้ฟังก์ชั่น มีใครช่วยฉันทีได้ไหม

16
การตั้งค่า NOCOUNT ON
แรงบันดาลใจจากคำถามนี้ที่มีมุมมองที่แตกต่างกันใน SET NOCOUNT ... เราควรใช้ SET NOCOUNT ON สำหรับ SQL Server หรือไม่ ถ้าไม่ทำไมล่ะ การแก้ไข 6 ในวันที่ 22 กรกฎาคม 2011 คืออะไร จะไม่แสดงข้อความ "แถว xx ที่ได้รับผลกระทบ" หลังจาก DML ใด ๆ นี่เป็นชุดผลลัพธ์และเมื่อส่งลูกค้าจะต้องดำเนินการ มันเล็ก แต่วัดได้ (ดูคำตอบด้านล่าง) สำหรับทริกเกอร์ ฯลฯ ลูกค้าจะได้รับ "xx rows ที่ได้รับผลกระทบ" หลายครั้งและทำให้เกิดข้อผิดพลาดทุกรูปแบบสำหรับ ORMs บางตัว, MS Access, JPA และอื่น ๆ (ดูการแก้ไขด้านล่าง) พื้นหลัง: วิธีปฏิบัติที่ดีที่สุดที่เป็นที่ยอมรับทั่วไป (ฉันคิดว่าจนกระทั่งคำถามนี้) …

24
มีการรวมกันของ "LIKE" และ "IN" ใน SQL หรือไม่
Наэтотвопросестьответына Stack Overflow нарусском : Существуетликомбинацияоператоровเช่นเดียวกับในусловиизапроса? ใน SQL I (เศร้า) มักจะต้องใช้LIKEเงื่อนไข "" เนื่องจากฐานข้อมูลที่ละเมิดกฎการปรับมาตรฐานเกือบทุกครั้ง ฉันไม่สามารถเปลี่ยนแปลงได้ในตอนนี้ แต่นั่นไม่เกี่ยวข้องกับคำถาม นอกจากนี้ฉันมักจะใช้เงื่อนไขเช่นWHERE something in (1,1,2,3,5,8,13,21)เพื่อการอ่านที่ดีขึ้นและความยืดหยุ่นของคำสั่ง SQL ของฉัน มีวิธีใดบ้างที่สามารถรวมสองสิ่งนี้โดยไม่ต้องเขียนตัวเลือกย่อยที่ซับซ้อน? ฉันต้องการบางสิ่งที่ง่ายเหมือนWHERE something LIKE ('bla%', '%foo%', 'batz%')แทนที่จะทำสิ่งนี้: WHERE something LIKE 'bla%' OR something LIKE '%foo%' OR something LIKE 'batz%' ฉันทำงานกับ SQl Server และ Oracle ที่นี่ แต่ฉันสนใจถ้าเป็นไปได้ใน RDBMS ใด ๆ …
341 sql  sql-server  oracle  tsql  plsql 


5
ฉันจะค้นหาวันที่ทั้งหมดที่มากกว่าวันที่กำหนดใน SQL Server ได้อย่างไร
ฉันกำลังพยายาม: SELECT * FROM dbo.March2010 A WHERE A.Date >= 2010-04-01; A.Date ดูเหมือนกับ: 2010-03-04 00:00:00.000 อย่างไรก็ตามสิ่งนี้ไม่ทำงาน ทุกคนสามารถให้ข้อมูลอ้างอิงสำหรับสาเหตุได้หรือไม่
338 sql  sql-server  datetime 

17
การตรวจสอบล้มเหลวสำหรับเอนทิตี้อย่างน้อยหนึ่งรายการในขณะที่บันทึกการเปลี่ยนแปลงของฐานข้อมูลเซิร์ฟเวอร์ SQL โดยใช้ Entity Framework
ฉันต้องการบันทึก Edit to Database และฉันใช้ Entity FrameWork Code-First ใน ASP.NET MVC 3 / C # แต่ฉันได้รับข้อผิดพลาด ในคลาสกิจกรรมของฉันฉันมี DateTime และ TimeSpan datatypes แต่ในฐานข้อมูลของฉันฉันมี Date and time ตามลำดับ นี่อาจเป็นเหตุผลหรือไม่ ฉันจะส่งไปยังประเภทข้อมูลที่เหมาะสมในรหัสก่อนบันทึกการเปลี่ยนแปลงในฐานข้อมูลได้อย่างไร public class Event { public int EventId { get; set; } public int CategoryId { get; set; } public int PlaceId { …

12
วิธีที่ดีที่สุดในการทดสอบว่าแถวมีอยู่ในตาราง MySQL หรือไม่
ฉันพยายามค้นหาว่ามีแถวในตารางหรือไม่ การใช้ MySQL จะดีกว่าไหมถ้าทำเคียวรีเช่นนี้ SELECT COUNT(*) AS total FROM table1 WHERE ... และตรวจสอบเพื่อดูว่ายอดรวมไม่เป็นศูนย์หรือดีกว่าที่จะทำแบบสอบถามเช่นนี้: SELECT * FROM table1 WHERE ... LIMIT 1 และตรวจสอบเพื่อดูว่ามีการส่งคืนแถวหรือไม่ ในแบบสอบถามทั้งสองข้อ WHERE ใช้ดัชนี
337 sql  mysql  performance  exists 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.