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

ระบุประเภทของข้อมูลที่ถูกเก็บไว้ (สตริงวันที่ตัวเลข ฯลฯ )

3
คอลัมน์บิตของ SQL Server ใช้เนื้อที่ทั้งไบต์จริง ๆ หรือไม่
ฉันแหย่ไปรอบ ๆ SSMS และสังเกตว่า "ขนาด" ของINTคอลัมน์ของฉันคือ 4 ไบต์ (คาดว่า) แต่ฉันก็ตกใจเล็กน้อยเมื่อเห็นว่าBITคอลัมน์ของฉันเป็นไบต์ทั้งหมด ฉันเข้าใจผิดหรือเปล่าว่ากำลังดูอะไรอยู่?

2
วิธีการจัดเก็บการประทับเวลาใน PostgreSQL ที่ดีที่สุด
ฉันกำลังทำงานกับการออกแบบฐานข้อมูล PostgreSQL และฉันสงสัยว่าวิธีที่ดีที่สุดในการจัดเก็บการประทับเวลา สมมติฐาน ผู้ใช้ในเขตเวลาที่แตกต่างกันจะใช้ฐานข้อมูลสำหรับฟังก์ชั่น CRUD ทั้งหมด ฉันดูที่ 2 ตัวเลือก: timestamp NOT NULL DEFAULT (now() AT TIME ZONE 'UTC') bigint NOT NULL DEFAULT สำหรับtimestampฉันจะส่งสตริงที่จะแสดงเวลาที่แน่นอน (UTC) สำหรับช่วงเวลา INSERT สำหรับbigintฉันจะเก็บสิ่งเดียวกันแน่นอน แต่ในรูปแบบตัวเลข (ปัญหาเกี่ยวกับเขตเวลาได้รับการจัดการก่อนที่จะส่งมิลลิวินาทีไปยังเซิร์ฟเวอร์ดังนั้นมิลลิวินาทีใน UTC ทุกครั้ง) ข้อได้เปรียบหลักอย่างหนึ่งของการจัดเก็บ a bigintอาจเป็นไปได้ว่าจะเป็นการง่ายกว่าในการจัดเก็บและดึงข้อมูลเนื่องจากการส่งผ่านการประทับเวลาที่จัดรูปแบบอย่างถูกต้องนั้นมีความซับซ้อนมากกว่าตัวเลขง่าย ๆ คำถามของฉันคือสิ่งที่จะช่วยให้การออกแบบที่ยืดหยุ่นที่สุดและสิ่งที่อาจเป็นข้อผิดพลาดของแต่ละวิธี

2
INT หรือ CHAR สำหรับเขตข้อมูลประเภท
การออกแบบที่ดีที่สุดสำหรับตารางคืออะไรTypeข้อมูลที่เป็นintหรือchar(1)? กล่าวอีกนัยหนึ่งให้คีมานี้: create table Car ( Name varchar(100) not null, Description varchar(100) not null, VehType .... not null ) มันมีประสิทธิภาพมากกว่า (ฉลาดในการทำงาน) VehTypeเพื่อที่จะเป็นintหรือchar(1)? สมมติว่าคุณมีรถยนต์ห้าประเภทคุณควรใช้ค่าที่เพิ่มขึ้น 0 -> 4 หรือตัวอักษรสำหรับประเภท (พูด; 'v', 's', 'c', 't', 'm')? หากเป็นมากกว่านั้นฉันจะใช้ตาราง Type แยกต่างหากและมีความสัมพันธ์กับคีย์ต่างประเทศ แต่ฉันไม่เห็นความต้องการดังกล่าว ฉันสังเกตเห็นว่าsys.objectsมุมมองแคตตาล็อกใช้อักขระสำหรับtypeฟิลด์ มีเหตุผลสำหรับสิ่งนั้นหรือไม่? ฉันเพิ่งจะคว้าที่อากาศที่นี่และมันเป็นสิ่งที่ฉันสะดวกสบายด้วยหรือไม่

3
อะไรคือความแตกต่างระหว่างประเภทข้อมูล VARCHAR ของ Oracle และ VARCHAR2
เมื่อโอนย้ายตารางที่มาจาก DBMS อื่นไปยัง Oracle หนึ่งในภารกิจมาตรฐานคือการแทนที่VARCHAR(n)ฟิลด์ทั้งหมดด้วยVARCHAR2(n)ฟิลด์ (ระบุ n <= 4000) เหตุใด Oracle จึงเรียกประเภทข้อมูลนี้VARCHAR2และไม่VARCHARเหมือนกับ DBMS อื่น ๆ
19 oracle  datatypes 

2
MySQL VARCHAR และ TEXT แตกต่างกันอย่างไร?
หลังจากเวอร์ชัน 5.0.3 (ซึ่งอนุญาตให้ VARCHAR เป็น 65,535 ไบต์และหยุดการตัดทอนช่องว่างต่อท้าย) มีความแตกต่างที่สำคัญระหว่างสองประเภทข้อมูลหรือไม่ ฉันกำลังอ่านรายการความแตกต่างและโน้ตสองข้อเท่านั้นคือ: สำหรับดัชนีในคอลัมน์ BLOB และ TEXT คุณต้องระบุความยาวส่วนนำหน้าดัชนี สำหรับ CHAR และ VARCHAR ความยาวของคำนำหน้าเป็นทางเลือก ดูหัวข้อ 7.5.1“ ดัชนีคอลัมน์” และ คอลัมน์ BLOB และ TEXT ไม่สามารถมีค่าเริ่มต้นได้ ดังนั้นเนื่องจากข้อ จำกัด สองข้อนี้ในประเภทข้อมูล TEXT ทำไมคุณถึงใช้มากกว่า varchar (65535) มีผลการดำเนินงานที่แตกต่างกันอย่างใดอย่างหนึ่ง?

1
ฉันจะแปลงจาก Double Precision เป็น Bigint ด้วย PostgreSQL ได้อย่างไร
ฉันต้องการแปลงค่าของ Double Precision เป็น Bigint ด้วย PostgreSQL ฉันจะทำสิ่งนั้นได้อย่างไร ฉันลองแล้วto_bigint(myvalue)แต่ฟังก์ชั่นนั้นไม่มีอยู่จริง

2
SQL Server ส่งคืน“ ข้อผิดพลาดทางคณิตศาสตร์มากเกินไปในการแปลงนิพจน์เป็นชนิดข้อมูล int”
เมื่อฉันเรียกใช้คำสั่งนี้ด้วย SUM() SELECT COUNT(*) AS [Records], SUM(t.Amount) AS [Total] FROM dbo.t1 AS t WHERE t.Id > 0 AND t.Id < 101; ฉันได้รับ, Arithmetic overflow error converting expression to data type int. ความคิดเกี่ยวกับสาเหตุของมันคืออะไร? ฉันแค่ทำตามคำแนะนำในคำตอบนี้

4
ทำไมประเภทข้อมูล varchar อนุญาตให้ใช้ค่า unicode
ฉันมีตารางที่มีคอลัมน์ varchar มันช่วยให้ Trademark (ลิขสิทธิ์), ลิขสิทธิ์ (©) และตัวอักษร Unicode อื่น ๆ ที่แสดงด้านล่าง Create table VarcharUnicodeCheck ( col1 varchar(100) ) insert into VarcharUnicodeCheck (col1) values ('MyCompany') insert into VarcharUnicodeCheck (col1) values ('MyCompany™') insert into VarcharUnicodeCheck (col1) values ('MyCompany░') insert into VarcharUnicodeCheck (col1) values ('MyCompanyï') insert into VarcharUnicodeCheck (col1) values ('MyCompany') select …

2
ความหมายของ tinyint (N) คืออะไร?
เมื่อเราใช้ความยาวอาร์กิวเมนต์กับชนิดข้อมูลตัวเลขเท่าที่ฉันรู้ว่าสิ่งนี้ระบุความกว้างของการแสดงผล ฉันพยายามต่อไปนี้: mysql> create table boolean_test (var1 boolean, var2 tinyint); Query OK, 0 rows affected (0.10 sec) mysql> show create table boolean_test; +--------------+------------------------- | Table | Create Table +--------------+------------------------- | boolean_test | CREATE TABLE `boolean_test` ( `var1` tinyint(1) DEFAULT NULL, `var2` tinyint(4) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +--------------+--------------------------- …

1
ฉันจะแยก ctid ลงในหมายเลขหน้าและแถวได้อย่างไร
แต่ละแถวในตารางมีคอลัมน์ระบบ ctidประเภทtidที่แสดงถึงตำแหน่งทางกายภาพของแถว: create table t(id serial); insert into t default values; insert into t default values; select ctid , id from t; ctid | รหัส : ---- | -: (0,1) | 1 (0,2) | 2 dbfiddle ที่นี่ อะไรคือวิธีที่ดีที่สุดในการได้รับเพียงจำนวนหน้าเป็นจากctidในประเภทที่เหมาะสมที่สุด (เช่นinteger, bigintหรือnumeric(1000,0))? วิธีเดียวที่ฉันสามารถคิดเป็นน่าเกลียดมาก

2
ขนาด varchar มีความสำคัญในตารางชั่วคราวหรือไม่?
มีการถกเถียงกันว่างานของภรรยาผมเกี่ยวกับเพียงแค่ใช้varchar(255)กับทุกvarcharสาขาในตารางชั่วคราวในขั้นตอนการจัดเก็บ โดยพื้นฐานแล้วค่ายหนึ่งต้องการใช้ 255 เพราะจะใช้ได้ตลอดแม้ว่าการเปลี่ยนแปลงคำจำกัดความและค่ายอื่นต้องการติดกับขนาดในตารางต้นฉบับเพื่อปรับปรุงประสิทธิภาพที่เป็นไปได้ ค่ายแสดงถูกต้องหรือไม่? มีความหมายอื่นหรือไม่? พวกเขากำลังใช้ SQL Server

3
ประโยชน์ของการใช้บูลีนมากกว่า TINYINT (1) คืออะไร
จากคู่มือ MySQL บอกว่า: บูลบูลลีน ประเภทเหล่านี้เป็นคำพ้องความหมายสำหรับ TINYINT (1) ค่าศูนย์ถือเป็นเท็จ ค่าที่ไม่ใช่ศูนย์ถือว่าเป็นจริง: ฉันสร้างคอลัมน์บูลีนด้วย0เป็นค่าเริ่มต้น 2แล้วฉันจะปรับปรุงค่าไป ฉันคาดหวังว่า MySQL จะยอมรับอย่างใดอย่างหนึ่ง0หรือ1เพราะมันเป็นบูลีน อย่างไรก็ตาม MySQL ไม่ได้มีข้อผิดพลาดหรือป้องกันไม่ให้ฉันทำการอัปเดต หากบูลีนทำงานเหมือนกับ TINYINT (1) ทุกอย่างจะสร้างความแตกต่างไม่ว่าฉันจะใช้ TINYINT (1) หรือบูลีนหรือไม่?
16 mysql  datatypes 

1
ฉันจะเก็บหมายเลขโทรศัพท์ใน PostgreSQL ได้อย่างไร
สมมติว่าฉันต้องการจัดเก็บหมายเลขโทรศัพท์ในฐานข้อมูล ฉันอาจรับหมายเลขโทรศัพท์จากนอกสหรัฐอเมริกา ฉันจะเก็บหมายเลขโทรศัพท์เหล่านี้ได้อย่างไร

1
เหตุใดจึงไม่มีประเภทจำนวนเต็มที่ไม่ได้ลงชื่อในแพลตฟอร์มฐานข้อมูลด้านบน
ฐานข้อมูลมักจะปรับแต่งได้มากด้วยชนิดข้อมูลที่แตกต่างกันและความยาวที่กำหนดเอง มันทำให้ฉันประหลาดใจเนื่องจากฉันพยายามค้นหาไวยากรณ์เพื่อใช้unsigned intชนิดที่ไม่สามารถใช้ได้จากทั้ง PostgreSQL และ MS SQL Server MySQL และ Oracle ดูเหมือนจะ ดูเหมือนว่าการละเลยที่เห็นได้ชัดในส่วนของพวกเขา - ตัวเลือก perfomant ที่ดีที่สุดถัดไปคือ long / bigint, (จำนวนเต็ม 8 ไบต์) แต่อาจไม่จำเป็นอย่างสมบูรณ์! ไม่มีใครรู้ว่าทำไมพวกเขาถึงเลือกที่จะไม่รวมการสนับสนุน int แบบไม่ได้ลงนาม?

2
การออกแบบโมดูลการควบคุมอัตโนมัติของผู้ใช้ (บทบาทและสิทธิ์)
ฉันพยายามสร้างโมเดลโมดูลการพิสูจน์ตัวตนผู้ใช้สำหรับฐานข้อมูล MS SQL Server ที่จะเป็นแบ็คเอนด์ไปยังแอปพลิเคชัน Delphi UI โดยทั่วไปฉันต้องการมีบัญชีผู้ใช้ที่ผู้ใช้อยู่ในกลุ่มเดียวเท่านั้น กลุ่มสามารถมีจำนวนสิทธิ์ "n" ฉันต้องการเพิ่มประวัติรหัสผ่านในฐานข้อมูลเนื่องจากผู้ใช้จะต้องเปลี่ยนรหัสผ่านตามการตั้งค่าแอปพลิเคชัน (ตัวอย่างเช่นทุก ๆ 90 วัน) ฉันต้องการบันทึกกิจกรรมในแต่ละครั้งที่ผู้ใช้ลงชื่อเข้าและออก ฉันอาจขยายสิ่งนี้ไปยังกิจกรรมเพิ่มเติมในอนาคต ด้านล่างคุณจะพบรอยแตกครั้งแรกของฉันที่มัน โปรดแจ้งให้ฉันทราบข้อเสนอแนะเพื่อปรับปรุงตามนี้เป็นครั้งแรกของฉันทำเช่นนี้ คุณเห็นความต้องการคุณลักษณะเพิ่มเติมสำหรับการรักษาความปลอดภัยตามบทบาทและข้อ จำกัด สำหรับกฎรหัสผ่าน / รอบระยะเวลาหมดอายุหรือไม่?

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