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

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

13
ตั้งค่าทันที () เป็นค่าเริ่มต้นสำหรับประเภทข้อมูลวันที่หรือไม่
ฉันมีสองคอลัมน์ในผู้ใช้ตารางregisterDate and lastVisitDateซึ่งประกอบด้วยประเภทข้อมูลวันที่และเวลา ฉันต้องการทำสิ่งต่อไปนี้ ตั้งค่า registerDate เป็นค่าเริ่มต้นเป็น MySQL ทันที () ตั้ง lastVisitDate ค่าเริ่มต้นเป็น0000-00-00 00:00:00แทนที่จะเป็นโมฆะซึ่งจะใช้โดยค่าเริ่มต้น เนื่องจากตารางมีอยู่แล้วและมีระเบียนที่มีอยู่ฉันต้องการใช้ตารางแก้ไข ฉันลองใช้รหัสสองชิ้นด้านล่าง แต่ไม่ได้ผล ALTER TABLE users MODIFY registerDate datetime DEFAULT NOW() ALTER TABLE users MODIFY registerDate datetime DEFAULT CURRENT_TIMESTAMP; มันทำให้ฉันมีข้อผิดพลาด: ERROR 1067 (42000): Invalid default value for 'registerDate' เป็นไปได้ไหมที่ฉันจะตั้งค่าเริ่มต้นของวันที่และเวลาเป็น NOW () ใน MySQL?

4
SQL Server เทียบเท่ากับ MySQL ตอนนี้ ()?
ฉันเป็นคน MySQL ที่ทำงานในโครงการ SQL Server พยายามรับฟิลด์ datetime เพื่อแสดงเวลาปัจจุบัน ใน MySQL ฉันใช้ตอนนี้ () แต่ก็ไม่ยอมรับ INSERT INTO timelog (datetime_filed) VALUES (NOW())
197 sql  sql-server 


10
เพิ่มคีย์หลักให้กับตารางที่มีอยู่
Persionฉันได้ตารางที่มีอยู่เรียกว่า ในตารางนี้ฉันมี 5 คอลัมน์: persionId pname PMID Pdescription Pamt เมื่อฉันสร้างตารางนี้ผมตั้งPersionIdและPnameเป็นคีย์หลัก ตอนนี้ฉันต้องการรวมคอลัมน์อีกหนึ่งคอลัมน์ในคีย์หลัก - PMID ฉันจะเขียนALTERคำสั่งเพื่อทำสิ่งนี้ได้อย่างไร (ฉันมี 1,000 บันทึกในตารางแล้ว)

3
ข้อ จำกัด กุญแจต่างประเทศ: เมื่อใดที่จะใช้ ON UPDATE และ ON DELETE
ฉันออกแบบสคีมาฐานข้อมูลของฉันโดยใช้ MySQL Workbench ซึ่งค่อนข้างเจ๋งเพราะคุณสามารถทำไดอะแกรมและแปลงมัน: P อย่างไรก็ตามฉันตัดสินใจใช้ InnoDB เพราะมันรองรับ Foreign Key สิ่งหนึ่งที่ฉันสังเกตเห็นคือมันช่วยให้คุณสามารถตั้งค่าในการปรับปรุงและตัวเลือกการลบสำหรับคีย์ต่างประเทศ บางคนสามารถอธิบายว่า "จำกัด ", "เรียงซ้อน" และตั้งค่าเป็นโมฆะได้อย่างไรในตัวอย่างง่ายๆ ตัวอย่างเช่นสมมติว่าผมมีตารางซึ่งรวมถึงuser userIDและบอกว่าฉันมีตารางข้อความmessageซึ่งมีหลายต่อหลายคนที่มีคีย์ต่างประเทศ 2 อัน (ซึ่งอ้างอิงคีย์หลักเดียวกันuserIDในuserตาราง) การตั้งค่าตัวเลือก On Update และ On Delete มีประโยชน์ในกรณีนี้หรือไม่? ถ้าเป็นเช่นนั้นฉันจะเลือกอันไหน หากนี่ไม่ใช่ตัวอย่างที่ดีคุณช่วยยกตัวอย่างที่ดีเพื่ออธิบายว่าสิ่งเหล่านี้มีประโยชน์หรือไม่ ขอบคุณ

15
ไม่สามารถผูกตัวระบุหลายส่วนได้
ฉันเห็นข้อผิดพลาดที่คล้ายกันใน SO แต่ฉันไม่พบวิธีแก้ไขปัญหาของฉัน ฉันมีแบบสอบถาม SQL เช่น: SELECT DISTINCT a.maxa , b.mahuyen , a.tenxa , b.tenhuyen , ISNULL(dkcd.tong, 0) AS tongdkcd FROM phuongxa a , quanhuyen b LEFT OUTER JOIN ( SELECT maxa , COUNT(*) AS tong FROM khaosat WHERE CONVERT(DATETIME, ngaylap, 103) BETWEEN 'Sep 1 2011' AND 'Sep 5 2011' …

14
วิธีการปล่อยข้อ จำกัด เริ่มต้นของ SQL โดยไม่ทราบชื่อ
ใน Microsoft SQL Server ฉันรู้แบบสอบถามเพื่อตรวจสอบว่ามีข้อ จำกัด เริ่มต้นสำหรับคอลัมน์และวางข้อ จำกัด เริ่มต้นคือ: IF EXISTS(SELECT * FROM sysconstraints WHERE id=OBJECT_ID('SomeTable') AND COL_NAME(id,colid)='ColName' AND OBJECTPROPERTY(constid, 'IsDefaultCnst')=1) ALTER TABLE SomeTable DROP CONSTRAINT DF_SomeTable_ColName แต่เนื่องจาก typo ในรุ่นก่อนหน้าของฐานข้อมูลชื่อของข้อ จำกัด ที่อาจจะหรือDF_SomeTable_ColNameDF_SmoeTable_ColName ฉันจะลบข้อ จำกัด เริ่มต้นโดยไม่มีข้อผิดพลาด SQL ได้อย่างไร ชื่อข้อ จำกัด ที่เป็นค่าเริ่มต้นจะไม่แสดงในตาราง INFORMATION_SCHEMA ซึ่งทำให้สิ่งต่าง ๆ มีความซับซ้อนยิ่งขึ้น ดังนั้นบางอย่างเช่น 'ลบข้อ จำกัด เริ่มต้นในตาราง / คอลัมน์นี้' …
196 sql  sql-server  tsql 

6
PostgreSQL Crosstab Query
มีใครรู้วิธีสร้างแบบสอบถามแบบแท็บไขว้ใน PostgreSQL หรือไม่ ตัวอย่างเช่นฉันมีตารางต่อไปนี้: Section Status Count A Active 1 A Inactive 2 B Active 4 B Inactive 5 ฉันต้องการให้แบบสอบถามส่งคืนอ้างอิงไขว้ต่อไปนี้: Section Active Inactive A 1 2 B 4 5 เป็นไปได้ไหม
196 sql  postgresql  pivot  case  crosstab 

6
ตรวจสอบว่ามีค่าอยู่ในอาร์เรย์ Postgres
ใช้ Postgres 9.0 ฉันต้องการวิธีทดสอบว่ามีค่าอยู่ในอาร์เรย์ที่กำหนดหรือไม่ จนถึงตอนนี้ฉันก็เกิดเรื่องแบบนี้ขึ้นมา: select '{1,2,3}'::int[] @> (ARRAY[]::int[] || value_variable::int) แต่ฉันคิดอยู่ตลอดว่าควรจะมีวิธีที่ง่ายกว่านี้ฉันแค่มองไม่เห็น ดูเหมือนว่าจะดีกว่า: select '{1,2,3}'::int[] @> ARRAY[value_variable::int] ฉันเชื่อว่ามันจะเพียงพอ แต่ถ้าคุณมีวิธีอื่นที่จะทำโปรดแบ่งปัน!
196 sql  arrays  postgresql 

14
จะอัพเดตคอลัมน์ข้อมูลประจำตัวใน SQL Server ได้อย่างไร
ฉันมีฐานข้อมูล SQL Server และฉันต้องการเปลี่ยนคอลัมน์ข้อมูลประจำตัวเพราะมันเริ่มต้นด้วยจำนวนมาก10010และมันเกี่ยวข้องกับตารางอื่นตอนนี้ฉันมี 200 ระเบียนและฉันต้องการแก้ไขปัญหานี้ก่อนที่จะเพิ่มระเบียน วิธีที่ดีที่สุดในการเปลี่ยนหรือรีเซ็ตคอลัมน์นี้คืออะไร

9
เลือกค่าที่ไม่ซ้ำจากคอลัมน์
ฉันมีตาราง MySQL ซึ่งมีข้อมูลประเภทต่อไปนี้: Date product 2011-12-12 azd 2011-12-12 yxm 2011-12-10 sdx 2011-12-10 ssdd นี่คือตัวอย่างของสคริปต์ที่ฉันใช้เพื่อรับข้อมูลจากตารางนี้: <?php $con = mysql_connect("localhost","username","password"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("db", $con); $sql=mysql_query("SELECT * FROM buy ORDER BY Date"); while($row = mysql_fetch_array($sql)) { echo "<li><a href='http://www.website/". $row['Date'].".html'>buy ". date("j, M Y", strtotime($row["Date"]))."</a></li>"; …
195 php  mysql  sql 

6
แก้ไขตารางเพื่อเพิ่มคีย์หลักแบบรวม
providerผมมีตารางที่เรียกว่า ฉันมีคอลัมน์ที่สามเรียกว่าperson, ,place thingอาจมีบุคคลที่ซ้ำกันสถานที่ที่ซ้ำกันและสิ่งที่ซ้ำกัน แต่จะไม่มีการรวมกันระหว่างสิ่งที่อยู่ในสถานที่ที่ซ้ำกันได้ ฉันจะแก้ไขตารางเพื่อเพิ่มคีย์หลักรวมสำหรับตารางนี้ใน MySQL ด้วยสามคอลัมน์นี้ได้อย่างไร

6
MySQL: วิธีการคัดลอกแถว แต่เปลี่ยนฟิลด์ไม่กี่?
ฉันมีแถวจำนวนมากที่ฉันต้องการคัดลอก แต่ฉันต้องเปลี่ยนหนึ่งฟิลด์ ฉันสามารถเลือกแถวที่ฉันต้องการคัดลอก: select * from Table where Event_ID = "120" ตอนนี้ผมต้องการที่จะคัดลอกแถวทั้งหมดเหล่านั้นและสร้างแถวใหม่ในขณะที่การตั้งค่าไปEvent_ID 155ฉันจะทำสิ่งนี้ได้อย่างไร
195 sql  mysql 

12
การแทรกข้อมูลลงในตารางชั่วคราว
หลังจากสร้างตารางชั่วคราวแล้วประกาศประเภทข้อมูลเช่นนั้น CREATE TABLE #TempTable( ID int, Date datetime, Name char(20)) ฉันจะแทรกข้อมูลที่เกี่ยวข้องซึ่งมีอยู่แล้วในตารางทางกายภาพภายในฐานข้อมูลได้อย่างไร

18
ตัดทอน (ไม่ใช่รอบ) ทศนิยมใน SQL Server
ฉันกำลังพยายามหาวิธีที่ดีที่สุดในการตัดหรือวางทศนิยมพิเศษใน SQL โดยไม่ต้องปัดเศษ ตัวอย่างเช่น: declare @value decimal(18,2) set @value = 123.456 รอบนี้จะโดยอัตโนมัติ@valueจะเป็น123.46ซึ่งเป็นสิ่งที่ดีในกรณีส่วนใหญ่ อย่างไรก็ตามสำหรับโครงการนี้ฉันไม่ต้องการสิ่งนั้น มีวิธีง่ายๆในการตัดส่วนทศนิยมที่ไม่ต้องการหรือไม่? ฉันรู้ว่าฉันสามารถใช้left()ฟังก์ชันและแปลงกลับเป็นทศนิยม มีวิธีอื่นอีกไหม?
194 sql  sql-server  tsql  rounding 

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