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

Data Definition Language เป็นส่วนย่อยของ SQL เพื่อจัดการกับองค์ประกอบโครงสร้างของฐานข้อมูลไม่ใช่เนื้อหาของตาราง สร้างปล่อยแก้ไขและคำสั่งที่เกี่ยวข้อง



10
เพิ่มหลายคอลัมน์หลังจากคอลัมน์เฉพาะใน MySQL
ฉันต้องการที่จะเพิ่มหลายคอลัมน์ในตาราง แต่ตำแหน่งคอลัมน์หลังจากlastnameคอลัมน์ที่เรียกว่า ฉันได้ลองสิ่งนี้แล้ว: ALTER TABLE `users` ADD COLUMN ( `count` smallint(6) NOT NULL, `log` varchar(12) NOT NULL, `status` int(10) unsigned NOT NULL ) AFTER `lastname`; ฉันได้รับข้อผิดพลาดนี้: คุณมีข้อผิดพลาดในไวยากรณ์ SQL ของคุณ ตรวจสอบคู่มือที่สอดคล้องกับเวอร์ชั่นเซิร์ฟเวอร์ MySQL ของคุณเพื่อหาไวยากรณ์ที่ถูกต้องที่จะใช้ใกล้ ') หลังจากlastname' ที่บรรทัด 7 ฉันจะใช้ AFTER ในแบบสอบถามแบบนี้ได้อย่างไร
361 mysql  ddl 

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

4
มอบสิทธิ์ทั้งหมดให้กับผู้ใช้บนฐานข้อมูล
ฉันต้องการให้สิทธิ์แก่ผู้ใช้ทั้งหมดในฐานข้อมูลโดยไม่ต้องเป็นผู้ดูแลระบบ เหตุผลที่ฉันต้องการทำนั่นคือในขณะนี้ DEV และ PROD เป็นฐานข้อมูลที่แตกต่างกันในคลัสเตอร์เดียวกันดังนั้นฉันไม่ต้องการให้ผู้ใช้สามารถเปลี่ยนวัตถุการผลิต แต่ต้องสามารถเปลี่ยนวัตถุบน DEV ฉันเหนื่อย: grant ALL on database MY_DB to group MY_GROUP; แต่ดูเหมือนจะไม่ได้รับอนุญาตใด ๆ จากนั้นฉันก็ลอง: grant all privileges on schema MY_SCHEMA to group MY_GROUP; และดูเหมือนว่าจะให้สิทธิ์ฉันในการสร้างวัตถุ แต่ไม่ต้องสอบถาม \ ลบวัตถุในสคีมานั้นที่เป็นของผู้ใช้รายอื่น ฉันสามารถดำเนินการต่อโดยให้สิทธิ์การใช้งานกับผู้ใช้บน MY_SCHEMA แต่จากนั้นจะบ่นเกี่ยวกับการไม่มีสิทธิ์บนโต๊ะ ... ดังนั้นฉันเดาคำถามของฉันคือ: มีวิธีง่าย ๆ ให้สิทธิ์ทั้งหมดแก่ผู้ใช้ในฐานข้อมูลหรือไม่ ฉันกำลังทำงานกับ PostgreSQL 8.1.23

6
PostgreSQL สร้างตารางหากไม่มีอยู่
ในสคริปต์ MySQL คุณสามารถเขียน: CREATE TABLE IF NOT EXISTS foo ...; ... อย่างอื่น ... และจากนั้นคุณสามารถเรียกใช้สคริปต์ได้หลายครั้งโดยไม่ต้องสร้างตารางขึ้นใหม่ คุณจะทำสิ่งนี้ใน PostgreSQL ได้อย่างไร

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 

1
คุณสมบัติ spring.jpa.hibernate.ddl-auto ทำงานอย่างไรใน Spring
ฉันกำลังทำงานกับโปรเจ็กต์ Spring boot ของฉันและสังเกตเห็นว่าบางครั้งมีข้อผิดพลาดการหมดเวลาการเชื่อมต่อไปยังฐานข้อมูลของฉันบนเซิร์ฟเวอร์อื่น (SQL Server) สิ่งนี้เกิดขึ้นเป็นพิเศษเมื่อฉันพยายามย้ายสคริปต์บางอย่างด้วยFlyWayแต่มันใช้งานได้หลังจากพยายามหลายครั้ง จากนั้นฉันสังเกตว่าฉันไม่ได้ระบุ spring.jpa.hibernate.ddl-autoในไฟล์คุณสมบัติของฉัน ฉันได้ทำการวิจัยและพบว่ามีการแนะนำให้เพิ่ม spring.jpa.hibernate.ddl-auto= create-dropการพัฒนา และเปลี่ยนเป็น: spring.jpa.hibernate.ddl-auto= noneในการผลิต แต่ฉันไม่เข้าใจจริงๆว่ามันทำงานอย่างไรและไฮเบอร์เนตสร้างสคีมาฐานข้อมูลโดยใช้create-dropหรือnoneค่าได้อย่างไร คุณช่วยอธิบายในทางเทคนิคได้ไหมว่ามันทำงานอย่างไรและคำแนะนำสำหรับการใช้คุณสมบัตินี้ในการพัฒนาและบนเซิร์ฟเวอร์ที่ใช้งานจริงคืออะไร ขอบคุณ

8
ฉันจะเพิ่มคีย์ภายนอกลงในตาราง SQLite ที่มีอยู่ได้อย่างไร
ฉันมีตารางต่อไปนี้: CREATE TABLE child( id INTEGER PRIMARY KEY, parent_id INTEGER, description TEXT); ฉันจะเพิ่มข้อ จำกัด ของ Foreign Key ได้parent_idอย่างไร? สมมติว่ามีการเปิดใช้งานคีย์ต่างประเทศ ตัวอย่างส่วนใหญ่สมมติว่าคุณกำลังสร้างตาราง - ฉันต้องการเพิ่มข้อ จำกัด ให้กับตารางที่มีอยู่
128 sql  sqlite  foreign-keys  ddl 

8
จำลองสร้างฐานข้อมูลหากไม่มีอยู่สำหรับ PostgreSQL?
ฉันต้องการสร้างฐานข้อมูลที่ไม่มีผ่าน JDBC PostgreSQL ไม่รองรับcreate if not existsไวยากรณ์ซึ่งแตกต่างจาก MySQL วิธีที่ดีที่สุดในการทำสิ่งนี้คืออะไร? แอปพลิเคชันไม่ทราบว่ามีฐานข้อมูลอยู่หรือไม่ ควรตรวจสอบและว่ามีฐานข้อมูลอยู่หรือไม่ควรใช้ ดังนั้นจึงเหมาะสมที่จะเชื่อมต่อกับฐานข้อมูลที่ต้องการและหากการเชื่อมต่อล้มเหลวเนื่องจากไม่มีฐานข้อมูลก็ควรสร้างฐานข้อมูลใหม่ (โดยเชื่อมต่อกับpostgresฐานข้อมูลเริ่มต้น) ฉันตรวจสอบรหัสข้อผิดพลาดที่ Postgres ส่งคืนแล้ว แต่ไม่พบรหัสที่เกี่ยวข้องที่มีสายพันธุ์เดียวกัน อีกวิธีหนึ่งในการบรรลุเป้าหมายนี้คือการเชื่อมต่อกับpostgresฐานข้อมูลและตรวจสอบว่ามีฐานข้อมูลที่ต้องการอยู่หรือไม่ ข้อที่สองค่อนข้างน่าเบื่อในการออกกำลังกาย มีวิธีใดบ้างที่จะบรรลุฟังก์ชันนี้ใน Postgres?
115 sql  database  postgresql  jdbc  ddl 

10
ลบคอลัมน์จากตาราง SQLite
ฉันมีปัญหา: ฉันต้องการลบคอลัมน์ออกจากฐานข้อมูล SQLite ของฉัน ฉันเขียนแบบสอบถามนี้ alter table table_name drop column column_name แต่ไม่ได้ผล โปรดช่วยฉันด้วย
114 sql  sqlite  ddl 

5
เป็นไปได้ไหมที่จะย้อนกลับคำสั่ง CREATE TABLE และ ALTER TABLE ในฐานข้อมูล SQL หลัก
ฉันกำลังทำงานกับโปรแกรมที่ออก DDL ฉันต้องการทราบว่าCREATE TABLEDDL ที่คล้ายกันนี้สามารถย้อนกลับได้หรือไม่ Postgres MySQL SQLite และคณะ อธิบายว่าแต่ละฐานข้อมูลจัดการธุรกรรมกับ DDL อย่างไร

9
เหตุใดจึงใช้หลายคอลัมน์เป็นคีย์หลัก (คีย์หลักแบบผสม)
ตัวอย่างนี้จะนำมาจาก w3schools CREATE TABLE Persons ( P_Id int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255), CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName) ) ความเข้าใจของฉันคือทั้งสองคอลัมน์ร่วมกัน ( P_IdและLastName) Personsเป็นคีย์หลักสำหรับตาราง ถูกต้องหรือไม่ เหตุใดบางคนจึงต้องการใช้หลายคอลัมน์เป็นคีย์หลักแทนที่จะเป็นคอลัมน์เดียว สามารถใช้คอลัมน์ร่วมกันเป็นคีย์หลักในตารางได้กี่คอลัมน์

19
แก้ไขตารางโดยไม่ล็อคโต๊ะ?
เมื่อทำคำสั่ง ALTER TABLE ใน MySQL ตารางทั้งหมดจะถูกล็อคการอ่าน (อนุญาตให้อ่านพร้อมกัน แต่ห้ามการเขียนพร้อมกัน) ในช่วงระยะเวลาของคำสั่ง หากเป็นตารางขนาดใหญ่คำสั่ง INSERT หรือ UPDATE อาจถูกบล็อกเป็นเวลานาน มีวิธีการ "แก้ไขด่วน" เช่นการเพิ่มคอลัมน์ในลักษณะที่ตารางยังคงสามารถอัปเดตได้ตลอดกระบวนการหรือไม่ ส่วนใหญ่ฉันสนใจโซลูชันสำหรับ MySQL แต่ฉันสนใจ RDBMS อื่น ๆ หาก MySQL ไม่สามารถทำได้ เพื่อชี้แจงวัตถุประสงค์ของฉันคือเพียงเพื่อหลีกเลี่ยงการหยุดทำงานเมื่อคุณลักษณะใหม่ที่ต้องใช้คอลัมน์ตารางพิเศษถูกผลักไปที่การผลิต สคีมาฐานข้อมูลใด ๆจะเปลี่ยนไปตามกาลเวลานั่นเป็นเพียงความจริงของชีวิต ฉันไม่เห็นเหตุผลที่เราควรยอมรับว่าการเปลี่ยนแปลงเหล่านี้จะต้องส่งผลให้เกิดการหยุดทำงานอย่างหลีกเลี่ยงไม่ได้ นั่นเป็นเพียงความอ่อนแอ
107 sql  mysql  ddl  alter-table 

4
คอลัมน์อัตโนมัติสามารถมีได้เพียงคอลัมน์เดียว
ฉันจะแก้ไขข้อผิดพลาดจาก MySQL ได้อย่างไร 'คุณสามารถมีคอลัมน์การเพิ่มอัตโนมัติได้เพียงคอลัมน์เดียว' CREATE TABLE book ( id INT AUTO_INCREMENT NOT NULL, accepted_terms BIT(1) NOT NULL, accepted_privacy BIT(1) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
105 mysql  ddl 

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