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

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

4
เลือกแถวที่ไม่ปรากฏในตารางอื่น
ฉันมีตาราง postgresql สองตาราง: table name column names ----------- ------------------------ login_log ip | etc. ip_location ip | location | hostname | etc. ฉันต้องการที่จะได้รับทุกที่อยู่ IP จากซึ่งไม่ได้มีแถวในlogin_log ฉันลองใช้แบบสอบถามนี้ แต่มีข้อผิดพลาดทางไวยากรณ์เกิดขึ้นip_location SELECT login_log.ip FROM login_log WHERE NOT EXIST (SELECT ip_location.ip FROM ip_location WHERE login_log.ip = ip_location.ip) ERROR: syntax error at or near "SELECT" LINE 3: …

9
งบที่เตรียมไว้สามารถป้องกันการโจมตีจากการฉีด SQL ได้อย่างไร
วิธีการทำงบเตรียมช่วยเราป้องกันการฉีด SQLการโจมตี? Wikipedia พูดว่า: คำสั่งที่เตรียมไว้มีความยืดหยุ่นต่อการฉีด SQL เนื่องจากค่าพารามิเตอร์ซึ่งถูกส่งในภายหลังโดยใช้โปรโตคอลที่แตกต่างกันจึงไม่จำเป็นต้องหลบหนีอย่างถูกต้อง หากเทมเพลตคำสั่งดั้งเดิมไม่ได้มาจากอินพุตภายนอกการฉีด SQL จะไม่เกิดขึ้น ฉันไม่เห็นเหตุผลที่ดีมาก อะไรจะเป็นคำอธิบายที่ง่ายในภาษาอังกฤษง่าย ๆ และตัวอย่างบางส่วน?

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

12
การออกแบบฐานข้อมูลสำหรับการติดแท็ก
คุณจะออกแบบฐานข้อมูลเพื่อสนับสนุนคุณสมบัติการแท็กต่อไปนี้ได้อย่างไร: รายการอาจมีแท็กจำนวนมาก ค้นหารายการทั้งหมดที่ติดแท็กด้วยชุดแท็กที่กำหนดจะต้องเป็นแบบด่วน (รายการนั้นต้องมีแท็กทั้งหมดดังนั้นจึงเป็นการค้นหาแบบ AND ไม่ใช่การค้นหาแบบ OR) การสร้าง / การเขียนรายการอาจช้าลงเพื่อเปิดใช้การค้นหา / อ่านอย่างรวดเร็ว ตามหลักการแล้วการค้นหารายการทั้งหมดที่ติดแท็กด้วย (อย่างน้อย) ชุดของแท็กที่กำหนดควรทำโดยใช้คำสั่ง SQL เดี่ยว เนื่องจากไม่ทราบจำนวนแท็กรวมถึงจำนวนแท็กในรายการใด ๆ และอาจสูงดังนั้นการใช้ JOIN จึงเป็นไปไม่ได้ ความคิดใด ๆ ขอบคุณสำหรับคำตอบทั้งหมด อย่างไรก็ตามหากฉันไม่เข้าใจผิดคำตอบที่ระบุจะแสดงวิธีการค้นหาในแท็ก (เลือกรายการทั้งหมดที่มีแท็กหนึ่งรายการขึ้นไป) ฉันกำลังมองหาที่มีประสิทธิภาพและค้นหา (เลือกรายการทั้งหมดที่มีแท็ก n ทั้งหมด - และอาจมากกว่า)

10
ชื่อตารางเป็นตัวแปร
ฉันพยายามเรียกใช้แบบสอบถามนี้: declare @tablename varchar(50) set @tablename = 'test' select * from @tablename สิ่งนี้ทำให้เกิดข้อผิดพลาดดังต่อไปนี้: เกี่ยวกับ 1087 ระดับ 16 สถานะ 1 บรรทัด 5 ต้องประกาศตัวแปรตาราง "@tablename" วิธีที่ถูกต้องในการตั้งชื่อตารางเป็นแบบไดนามิกคืออะไร


15
คำนวณผลรวมสะสมใน SQL Server
ลองนึกภาพตารางต่อไปนี้ (เรียกว่าTestTable): id somedate somevalue -- -------- --------- 45 01/Jan/09 3 23 08/Jan/09 5 12 02/Feb/09 0 77 14/Feb/09 7 39 20/Feb/09 34 33 02/Mar/09 6 ฉันต้องการข้อความค้นหาที่ส่งคืนผลรวมการเรียงลำดับตามวันที่ที่ต้องการเช่น: id somedate somevalue runningtotal -- -------- --------- ------------ 45 01/Jan/09 3 3 23 08/Jan/09 5 8 12 02/Feb/09 0 8 77 14/Feb/09 7 …

17
ไม่สามารถลบหรืออัพเดทแถวพาเรนต์: ข้อ จำกัด ของรหัสต่างประเทศล้มเหลว
เมื่อทำ: DELETE FROM `jobs` WHERE `job_id` =1 LIMIT 1 มันผิดพลาด: #1451 - Cannot delete or update a parent row: a foreign key constraint fails (paymesomething.advertisers, CONSTRAINT advertisers_ibfk_1 FOREIGN KEY (advertiser_id) REFERENCES jobs (advertiser_id)) นี่คือตารางของฉัน: CREATE TABLE IF NOT EXISTS `advertisers` ( `advertiser_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT …
170 mysql  sql 

8
วัตถุ 'DF __ *' ขึ้นอยู่กับคอลัมน์ '*' - การเปลี่ยน int เป็นสองเท่า
โดยทั่วไปฉันได้รับตารางในฐานข้อมูล EF ที่มีคุณสมบัติดังต่อไปนี้: public int Id { get; set; } public string Title { get; set; } public string Description { get; set; } public string Image { get; set; } public string WatchUrl { get; set; } public int Year { get; set; } public string Source { get; …

8
SQL WHERE ID IN (id1, id2, …, idn)
ฉันต้องเขียนแบบสอบถามเพื่อดึงรายการรหัสขนาดใหญ่ เรารองรับแบ็กเอนด์จำนวนมาก (MySQL, Firebird, SQLServer, Oracle, PostgreSQL ... ) ดังนั้นฉันต้องเขียน SQL มาตรฐาน ขนาดของชุด id อาจมีขนาดใหญ่แบบสอบถามจะถูกสร้างขึ้นโดยทางโปรแกรม ดังนั้นวิธีที่ดีที่สุดคืออะไร? 1) การเขียนแบบสอบถามโดยใช้ IN SELECT * FROM TABLE WHERE ID IN (id1, id2, ..., idn) คำถามของฉันที่นี่คือ จะเกิดอะไรขึ้นถ้า n ใหญ่มาก? นอกจากนี้สิ่งที่เกี่ยวกับประสิทธิภาพ? 2) การเขียนแบบสอบถามโดยใช้ OR SELECT * FROM TABLE WHERE ID = id1 OR ID = id2 …
170 sql  select 

21
เข้าร่วมเป็นคนขี้เกียจ?
เมื่อเร็ว ๆ นี้ฉันได้พูดคุยกับนักพัฒนารายอื่นที่อ้างกับฉันว่า JOIN (SQL) ไร้ประโยชน์ นี่เป็นความจริงทางเทคนิค แต่เขาเสริมว่าการใช้การเข้าร่วมนั้นมีประสิทธิภาพน้อยกว่าการร้องขอหลายครั้งและตารางลิงก์ในรหัส (C # หรือ Java) สำหรับเขาเข้าร่วมสำหรับคนขี้เกียจที่ไม่สนใจเรื่องการแสดง มันเป็นเรื่องจริงเหรอ? เราควรหลีกเลี่ยงการใช้การเข้าร่วม?
169 c#  java  sql  join 

9
ใช้ '=' หรือ LIKE เพื่อเปรียบเทียบสตริงใน SQL?
มีการสนทนา (เกือบทางศาสนา) หากคุณควรใช้ LIKE หรือ '=' เพื่อเปรียบเทียบสตริงในคำสั่ง SQL มีเหตุผลในการใช้ LIKE หรือไม่ มีเหตุผลให้ใช้ '=' หรือไม่? ประสิทธิภาพ? การอ่าน?
169 sql  comparison 

10
SQL Query เพื่อต่อค่าคอลัมน์จากหลายแถวใน Oracle
เป็นไปได้ไหมที่จะสร้าง SQL เพื่อต่อค่าคอลัมน์จากหลายแถวเข้าด้วยกัน? ต่อไปนี้เป็นตัวอย่าง: ตารางที่ PID B ค ตาราง B PID SEQ เรียงลำดับ 1 มี 2 ดี 3 วัน B 1 การทำงานที่ดี C 1 ใช่ C 2 เราทำได้ C 3 ทำได้ C 4 งานนี้! ผลลัพธ์ของ SQL ควรเป็น - PID A ขอให้เป็นวันที่ดี B Nice Work C ใช่เราสามารถทำงานนี้ได้! ดังนั้นโดยทั่วไปคอลัมน์ Desc สำหรับการวางตารางจึงเป็นการรวมกันของค่า SEQ …

7
ประโยค SQL OVER () - เมื่อใดและทำไมจึงมีประโยชน์?
USE AdventureWorks2008R2; GO SELECT SalesOrderID, ProductID, OrderQty ,SUM(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Total' ,AVG(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Avg' ,COUNT(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Count' ,MIN(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Min' ,MAX(OrderQty) OVER(PARTITION BY SalesOrderID) AS 'Max' FROM Sales.SalesOrderDetail WHERE SalesOrderID IN(43659,43664); ฉันอ่านเกี่ยวกับข้อนั้นและฉันไม่เข้าใจว่าทำไมฉันต้องการมัน ฟังก์ชั่นOverทำอะไร? อะไรPartitioning Byทำอย่างไร ทำไมฉันไม่สามารถทำแบบสอบถามที่มีการเขียนGroup By SalesOrderID?

5
OPTION (RECOMPILE) เร็วกว่าเสมอ ทำไม?
ฉันพบสถานการณ์แปลก ๆ ที่ผนวกOPTION (RECOMPILE)กับแบบสอบถามของฉันทำให้การทำงานในครึ่งวินาทีในขณะที่ละเว้นมันทำให้แบบสอบถามใช้เวลานานกว่าห้านาที นี่คือกรณีที่เมื่อแบบสอบถามจะถูกดำเนินการจากการวิเคราะห์คำถามหรือจากโปรแกรมของฉัน C # SqlCommand.ExecuteReader()ผ่าน โทร (หรือไม่โทร) DBCC FREEPROCCACHEหรือDBCC dropcleanbuffersสร้างความแตกต่าง; ผลลัพธ์การสืบค้นจะส่งคืนทันทีด้วยOPTION (RECOMPILE)และมากกว่าห้านาทีโดยไม่มี แบบสอบถามจะถูกเรียกด้วยพารามิเตอร์เดียวกันเสมอ [เพื่อประโยชน์ในการทดสอบนี้] ฉันใช้ SQL Server 2008 ฉันค่อนข้างสบายใจกับการเขียน SQL แต่ไม่เคยใช้OPTIONคำสั่งในแบบสอบถามมาก่อนและไม่คุ้นเคยกับแนวคิดทั้งหมดของแผนแคชจนกว่าจะสแกนโพสต์ในฟอรัมนี้ ความเข้าใจของฉันจากโพสต์OPTION (RECOMPILE)คือการดำเนินการที่มีราคาแพง ดูเหมือนจะสร้างกลยุทธ์การค้นหาใหม่สำหรับแบบสอบถาม แล้วเหตุใดจึงเป็นเช่นนั้นแบบสอบถามที่ตามมาที่ละเว้นOPTION (RECOMPILE)จึงช้ามาก? แบบสอบถามที่ตามมาไม่ควรใช้กลยุทธ์การค้นหาที่คำนวณจากการโทรก่อนหน้าซึ่งรวมถึงคำแนะนำการคอมไพล์ใหม่หรือไม่ มันผิดปกติหรือไม่ที่มีคิวรีที่ต้องการคำแนะนำการคอมไพล์ซ้ำในการโทรทุกครั้ง? ขออภัยสำหรับคำถามระดับเริ่มต้น แต่ฉันไม่สามารถสร้างหัวหรือก้อยของเรื่องนี้ได้ อัปเดต: ฉันถูกขอให้โพสต์ข้อความค้นหา ... select acctNo,min(date) earliestDate from( select acctNo,tradeDate as date from datafeed_trans where feedid=@feedID and feedDate=@feedDate …

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