Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Daftar Semua Kolom Nullable dalam Database SQL Server

Kolom nullable dalam database terkadang dapat menyebabkan masalah kinerja. Itu jelas bukan untuk mengatakan bahwa kolom yang dapat dibatalkan akan selalu menyebabkan masalah kinerja, tetapi jika Anda memang memiliki masalah kinerja, mengidentifikasi kolom yang dapat dibatalkan berpotensi memberikan beberapa petunjuk tentang di mana letak masalahnya. Terkadang membuat kolom NOT NULL dapat membantu meningkatkan kinerja.

Maksud saya "kolom nullable", kolom yang memungkinkan NULL. Jika definisi kolom tidak menyertakan NOT NULL , maka itu memungkinkan untuk nilai NULL dan "nullable".

Di bawah ini adalah kode yang memungkinkan Anda untuk membuat daftar semua kolom nullable dalam database di SQL Server.

Contoh 1 – INFORMATION_SCHEMA.COLUMNS

Tampilan skema informasi ini mencantumkan semua kolom yang dapat diakses oleh pengguna saat ini di database saat ini. Ini memiliki kolom bernama IS_NULLABLE . Jika kolom yang relevan memungkinkan untuk NULL, kolom ini mengembalikan YA . Jika tidak, TIDAK dikembalikan.

SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE IS_NULLABLE = 'YES';

Ini mencantumkan semua kolom dari tampilan.

Contoh 2 – INFORMATION_SCHEMA.COLUMNS dengan Lebih Sedikit Kolom yang Ditentukan

Anda mungkin tidak ingin semua kolom dikembalikan dari tampilan. Berikut ini contoh dengan lebih sedikit kolom yang dikembalikan.

SELECT
    TABLE_SCHEMA,
    TABLE_NAME,
    COLUMN_NAME,
    COLUMN_DEFAULT,
    DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE IS_NULLABLE = 'YES'
ORDER BY TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME;

Contoh 3 – Menggunakan sys.columns

Jika Anda tidak ingin menggunakan INFORMATION_SCHEMA.COLUMNS tampilan, maka Anda dapat menanyakan sys.columns lihat saja.

Namun, Anda harus melakukan beberapa penggabungan jika ingin mengembalikan tabel dan/atau skema, dll.

Contoh:

SELECT 
    SCHEMA_NAME(t.schema_id) AS [Schema],
    t.name AS [Table],
    c.name AS [Column],
    dc.definition AS [Column Default],
    ty.name AS [Data Type]
FROM sys.tables AS t
INNER JOIN sys.columns AS c 
    ON t.object_id = c.object_id
LEFT JOIN sys.types AS ty 
    ON c.user_type_id = ty.user_type_id
LEFT JOIN sys.default_constraints dc  
    ON c.default_object_id = dc.object_id
WHERE c.is_nullable = 1
ORDER BY [Schema], [Table], [Column];

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mana yang lebih cepat COALESCE ATAU ISNULL?

  2. Hasilkan kumpulan tanggal penambahan di TSQL

  3. Buat Tabel di SQL Server 2017

  4. Cara membuat Pintasan Kustom di SQL Server Management Studio ( SSMS) - Tutorial SQL Server / TSQL Bagian 10

  5. Menghindari injeksi SQL tanpa parameter