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

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

4
Foreign Key เป็นคีย์ที่ไม่ใช่คีย์หลัก
ฉันมีตารางที่เก็บข้อมูลและหนึ่งในแถวนั้นจำเป็นต้องมีอยู่ในตารางอื่น ดังนั้นฉันต้องการคีย์ต่างประเทศเพื่อรักษาความสมบูรณ์ของการอ้างอิง CREATE TABLE table1 ( ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY, AnotherID INT NOT NULL, SomeData VARCHAR(100) NOT NULL ) CREATE TABLE table2 ( ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY, AnotherID INT NOT NULL, MoreData VARCHAR(30) NOT NULL, CONSTRAINT fk_table2_table1 FOREIGN KEY (AnotherID) REFERENCES table1 (AnotherID) ) …
143 sql  sql-server 

24
ฉันควรตั้งชื่อตารางที่แมปสองตารางเข้าด้วยกันอย่างไร [ปิด]
ปิด . คำถามนี้เป็นคำถามความคิดเห็นตาม ขณะนี้ยังไม่ยอมรับคำตอบ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบพร้อมข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน3 ปีที่ผ่านมา ปรับปรุงคำถามนี้ สมมติว่าฉันมีสองโต๊ะ: Table: Color Columns: Id, ColorName, ColorCode Table: Shape Columns: Id, ShapeName, VertexList ฉันควรเรียกตารางที่แมปสีกับรูปร่างอย่างไร Table: ??? Columns: ColorId, ShapeId

10
อะไรคือความแตกต่างระหว่างขั้นตอนการจัดเก็บและมุมมอง?
ฉันสับสนเกี่ยวกับบางประเด็น: อะไรคือความแตกต่างระหว่างขั้นตอนการจัดเก็บและมุมมอง? ฉันควรใช้กระบวนงานที่เก็บไว้เมื่อใดและฉันควรใช้มุมมองใน SQL Server เมื่อใด มุมมองอนุญาตให้สร้างแบบสอบถามแบบไดนามิกที่เราสามารถส่งผ่านพารามิเตอร์ได้หรือไม่ อันไหนเร็วที่สุดและอันไหนเร็วกว่ากัน? มุมมองหรือขั้นตอนที่จัดเก็บจัดสรรหน่วยความจำอย่างถาวรหรือไม่? หมายความว่าอย่างไรถ้ามีคนบอกว่ามุมมองสร้างตารางเสมือนในขณะที่โพรซีเดอร์สร้างตารางวัสดุ โปรดแจ้งให้เราทราบเกี่ยวกับคะแนนเพิ่มเติมหากมี

8
ไม่รวม SQL“ ระหว่าง”
ฉันมีคำถามดังนี้: SELECT * FROM Cases WHERE created_at BETWEEN '2013-05-01' AND '2013-05-01' แต่สิ่งนี้ไม่ให้ผลลัพธ์แม้ว่าจะมีข้อมูลในวันที่ 1 ก็ตาม created_atดูเหมือนว่า2013-05-01 22:25:19ฉันสงสัยว่ามันจะเกี่ยวข้องกับเวลา? จะแก้ไขได้อย่างไร? จะใช้ได้ดีถ้าฉันทำช่วงวันที่ที่ใหญ่ขึ้น แต่ควร (รวม) กับวันที่เดียวด้วย

10
ข้อ MySQL ระหว่าง "ไม่รวม?
ถ้าฉันเรียกใช้แบบสอบถามด้วยbetweenประโยคดูเหมือนว่าจะไม่รวมค่าสิ้นสุด ตัวอย่างเช่น: select * from person where dob between '2011-01-01' and '2011-01-31' สิ่งนี้จะได้รับผลลัพธ์ทั้งหมดdobตั้งแต่ '2011-01-01' ถึง '2011-01-30'; ข้ามบันทึกที่dobอยู่ '2011-01-31' ทุกคนสามารถอธิบายได้ไหมว่าเพราะเหตุใดแบบสอบถามนี้จึงทำงานเช่นนี้และฉันจะแก้ไขเพื่อรวมระเบียนที่dobเป็น '2011-01-31' ได้อย่างไร (ไม่เพิ่ม 1 ถึงวันที่สิ้นสุดเนื่องจากถูกเลือกโดยผู้ใช้)
142 sql  mysql  between 


8
ตรวจสอบการเปลี่ยนแปลงตาราง SQL Server หรือไม่
ฉันจะตรวจสอบฐานข้อมูล SQL Server สำหรับการเปลี่ยนแปลงตารางโดยไม่ต้องใช้ทริกเกอร์หรือปรับเปลี่ยนโครงสร้างของฐานข้อมูลได้อย่างไร? สภาพแวดล้อมการเขียนโปรแกรมที่ฉันต้องการคือ. NETและ C # ฉันต้องการให้รองรับSQL Server 2000 SP4 หรือใหม่กว่า แอปพลิเคชันของฉันคือการแสดงข้อมูลแบบ bolt-on สำหรับผลิตภัณฑ์ของ บริษัท อื่น ฐานลูกค้าของเราอยู่ในหลักพันดังนั้นฉันไม่ต้องการที่จะใส่ข้อกำหนดที่เราแก้ไขตารางผู้จำหน่ายบุคคลที่สามในทุก ๆ การติดตั้ง โดย"การเปลี่ยนแปลงตาราง"ฉันหมายถึงการเปลี่ยนแปลงข้อมูลตารางไม่ใช่การเปลี่ยนแปลงโครงสร้างตาราง ในที่สุดฉันต้องการให้การเปลี่ยนแปลงเกิดขึ้นในแอปพลิเคชันของฉันแทนที่จะต้องตรวจสอบการเปลี่ยนแปลงเป็นระยะ หลักสูตรที่ดีที่สุดของการดำเนินการให้ความต้องการของฉัน (ไม่ทริกเกอร์หรือสคีแก้ไข, SQL Server 2000 และ 2005) น่าจะเป็นที่จะใช้BINARY_CHECKSUMฟังก์ชั่นในT-SQL วิธีที่ฉันวางแผนที่จะใช้คือ: ทุกๆ X วินาทีจะเรียกใช้คิวรีต่อไปนี้: SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM sample_table WITH (NOLOCK); และเปรียบเทียบกับค่าที่เก็บไว้ หากมีการเปลี่ยนแปลงค่าไปผ่านแถวตารางโดยแถวโดยใช้แบบสอบถาม: SELECT row_id, BINARY_CHECKSUM(*) FROM sample_table WITH (NOLOCK); …

4
แก้ไขตารางเพิ่มไวยากรณ์คอลัมน์
ฉันกำลังพยายามเพิ่มคอลัมน์ข้อมูลประจำตัวโดยทางโปรแกรมในตารางพนักงาน ไม่แน่ใจในสิ่งที่ฉันทำผิดกับไวยากรณ์ของฉัน ALTER TABLE Employees ADD COLUMN EmployeeID int NOT NULL IDENTITY (1, 1) ALTER TABLE Employees ADD CONSTRAINT PK_Employees PRIMARY KEY CLUSTERED ( EmployeeID ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ผมทำอะไรผิดหรือเปล่า? ฉันพยายามส่งออกสคริปต์ แต่ SQL Mgmt Studio ทำการเปลี่ยนชื่อ Temp Table …
142 sql  sql-server  tsql  ddl 

14
SQL WHERE clause ได้รับการประเมินหรือไม่
นิพจน์บูลีนใน SQL คำสั่งที่มีการประเมินการลัดวงจรอยู่ ที่ไหน? ตัวอย่างเช่น: SELECT * FROM Table t WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key) ถ้า@key IS NULLประเมินว่าเป็นจริง@key ไม่ได้เป็น NULL และ @key = t.Keyประเมินหรือไม่ ถ้าไม่ทำไมล่ะ ถ้าใช่มันรับประกันหรือไม่? มันเป็นส่วนหนึ่งของ ANSI SQL หรือเป็นฐานข้อมูลเฉพาะหรือไม่ ถ้าฐานข้อมูลเฉพาะ SqlServer ออราเคิล? MySQL?

4
คุณจะรันคำสั่ง SQL ด้วยตนเองใน Ruby On Rails โดยใช้ NuoDB อย่างไร
ฉันพยายามรันคำสั่ง SQL ด้วยตนเองเพื่อให้ฉันสามารถเข้าถึงโพรซีเดอร์ใน NuoDB ฉันใช้ Ruby on Rails และฉันใช้คำสั่งต่อไปนี้: ActiveRecord::Base.connection.execute("SQL query") "แบบสอบถาม SQL" อาจเป็นคำสั่ง SQL ใด ๆ ตัวอย่างเช่นฉันมีตารางชื่อ "คำติชม" และเมื่อฉันรันคำสั่ง: ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`") สิ่งนี้จะส่งกลับการตอบสนอง "จริง" แทนที่จะส่งข้อมูลทั้งหมดที่ขอมาให้ฉัน นี่คือผลลัพธ์บน Rails Console คือ: SQL (0.4ms) SELECT `feedbacks`.* FROM `feedbacks` => true ฉันต้องการใช้วิธีนี้เพื่อเรียกโพรซีเดอร์ที่เก็บไว้ใน NuoDB แต่เมื่อเรียกโพรซีเดอร์นี้จะส่งคืนการตอบกลับที่ "จริง" มีอยู่แล้วฉันสามารถดำเนินการคำสั่ง SQL และรับข้อมูลที่ร้องขอแทนที่จะได้รับการตอบสนอง "จริง"?

4
ฉันจะเข้าร่วม SQL หลายตารางโดยใช้ ID ได้อย่างไร
ฉันมี 4 ตารางที่แตกต่างกันที่ฉันต้องการเข้าร่วม ตารางมีโครงสร้างที่มีคอลัมน์ดังนี้ TableA - aID | nameA | dID TableB - bID | nameB | cID | aID TableC - cID | nameC | date TableD - dID | nameD เริ่มต้นด้วยตาราง A ฉันเข้าใจวิธีเข้าร่วมตาราง a และ c โดยใช้ b เนื่องจาก b มีคีย์หลักสำหรับตารางเหล่านั้น ฉันต้องการที่จะเข้าร่วม TableD บน TableA เช่นกัน ด้านล่างนี้เป็นคำสั่ง SQL …
141 mysql  sql  join 

3
กรณีในเลือกคำชี้แจง
ฉันมีคำสั่ง SQL ที่มีCASEจากSELECTและฉันไม่สามารถทำให้ถูกต้องได้ พวกคุณช่วยแสดงให้ฉันเห็นตัวอย่างของCASEกรณีและปัญหาได้อย่างไรและผลลัพธ์มาจากคดีความ ตัวอย่างเช่น: Select xxx, yyy case : desc case when bbb then 'blackberry'; when sss then 'samsung'; end from (select ???? ..... ตำแหน่งที่แสดงผลลัพธ์ name age handphone xxx1 yyy1 blackberry xxx2 yyy2 blackberry
141 sql  sql-server  case 


7
ไลบรารีตัวแยกวิเคราะห์ SQL สำหรับ Java [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา มีห้องสมุด Java โอเพ่นซอร์สสำหรับการแยกคำสั่ง SQL หรือไม่ หากเป็นไปได้ควรปรับแต่งหรือยืดหยุ่นพอที่จะสามารถแยกวิเคราะห์ (หรืออย่างน้อยละเว้น) ไวยากรณ์เฉพาะของผู้ขาย (เช่นคำจำกัดความของพื้นที่ตาราง Oracle หรือคำสั่ง LIMIT ของ MySQL) หากไม่ปฏิบัติตามมาตรฐาน SQL อย่างเข้มงวดก็สามารถทำได้เช่นกัน ปรับปรุง:ฉันต้องการสิ่งนี้สำหรับสองสิ่ง: การจัดเตรียมอินเตอร์เฟส SQL ไปยังฐานข้อมูลที่ไม่ใช่ SQL (การแม็พกับการเรียก API ภายใน) เขียนใหม่ SQL ก่อนที่จะไปยังฐานข้อมูลจริง (เช่น Oracle)
141 java  sql  parsing 


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