1 null值的介绍 NULL 是数据库中特有的数据类型,当一条记录的某个列为 NULL ,则表示这个列的值是未知的、是不确定的。既然是未知的,就有无数种的可能性。因此, NULL 并不是一个确定的值。 这是 NULL 的由来、也是 NULL 的基础,所有和 NULL 相关的操作的
1 null值的介绍
NULL 是数据库中特有的数据类型,当一条记录的某个列为 NULL ,则表示这个列的值是未知的、是不确定的。既然是未知的,就有无数种的可能性。因此, NULL 并不是一个确定的值。 这是 NULL 的由来、也是 NULL 的基础,所有和 NULL 相关的操作的结果都可以从 NULL 的概念推导出来。
2 oracle中的null值介绍
在不知道具体有什么数据的时候,即未知,可以用NULL, 称它为空,ORACLE中,含有空值的表列长度为零。允许任何一种数据类型的字段为空,除了以下两种情况:
a、主键字段(primary key);
b、定义时已经加了NOT NULL限制条件的字段
3 Oracle中null值说明:
a、等价于没有任何值、是未知数。
b、NULL与0、空字符串、空格都不同。
c、对空值做加、减、乘、除等运算操作,结果 仍为空。
d、NULL的处理使用NVL函数。
e、比较时使用关键字用“is null”和“is not null”。
f、空值不能被索引,所以查询时有些符合条件的数据可能查不出来, count(expr)中,用nvl(列名,0)处理后再查。
g、排序时比其他数据都大(索引默认是降序排列,小→大), 所以NULL值总是排在最后。
IS NULL 和IS NOT NULL 是不可分割的整体,改为IS 或IS NOT都是错误的,从上面我们看到了NULL 和空字符串的区别。
任何和NULL 的比较操作,如、=、
判断和比较规则总结表
例如:使用方法:
SQL> select 1 from dual where null=null;
没有查到记录
SQL> select 1 from dual where null="';
没有查到记录
SQL> select 1 from dual where ''='';
没有查到记录
SQL> select 1 from dual where null is null;
1
---------
1
SQL> select 1 from dual where nvl(null,0)=nvl(null,0);
1
---------
1
4、null做一些算术运算,比如+,-,*,/等,结果 还是null,但是对于连接操作符||,null忽略,concat函数也忽略null
SQL> select null || 'abc' from dual;
NUL
---
abc
SQL> select concat(null,'abc') from dual;
CON
---
abc
SQL> select null+10 from dual;
NULL+10
----------
5、null相关函数规则
Oracle有nvl、nvl2、nullif、coalesce等函数专门处理null
5.1 nvl(expr1,expr2)
描述:如果expr1是null,那么用expr2作为返回值,不是null则返回expr1.expr1与expr2一般是类型相同的,如果类型不同则会采用自动转换,转换失败则报错。
SQL*PLUS中数值类型右对齐,字符左对齐;通过第三条语句可以看出null和‘’还是有区别的。
SQL> select nvl(null,0) from dual;
NVL(NULL,0)
-----------
0
SQL> select nvl(to_char(null),0) from dual;
N
-
0
SQL> select nvl('',0) from dual;
N
-
0
5.2 nvl2函数
语法:nvl2(expr1,expr2,expr3)
描述:expr1如果是null,则返回expr3,否则返回expr2
expr2和expr3类型不同,expr3类型转换为expr2类型
SQL> select nvl2(null,'1',2) from dual;
N
-
2
expr2为null,返回值类型和expr3一致
SQL> select nvl2(null,null,2) from dual;
NVL2(NULL,NULL,2)
-----------------
2
SQL> select nvl2(null,null,'2') from dual;
N
-
2
不同类型之间的转换,自动转换不成功,则报错
SQL> select nvl2(null,1,'b') from dual;
select nvl2(null,1,'b') from dual
*
ERROR at line 1:
ORA-01722: invalid number(无效数字)
5.3 nullif函数
语法:nullif(expr1,expr2)
描述:判断expr1和expr2是否相等,若相等则返回null,否则返回expr1.要求expr1与expr2类型必须相同
SQL> select nullif(1,3) from dual;
NULLIF(1,3)
-----------
1
SQL> select nullif(1,1) from dual;
NULLIF(1,1)
-----------
SQL> select nullif('1',1) from dual;
select nullif('1',1) from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected CHAR got NUMBER
SQL> select nullif('ab','ab ') from dual;
NU
--
SQL> select nullif(null,1) from dual;
select nullif(null,1) from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected - got CHAR
SQL> select nullif(to_char(null),'1') from dual;
N
-
5.4 coalesce函数
语法:coalesce(expr1,expr2,…,exprn)
描述:从左到右返回第一个为非null的值,若所有的列表元素都为null,则返回null。要求所有都必须为同一类型。
SQL> select coalesce(null,null,null) from dual;
C
-
SQL> select coalesce(null,1,2) from dual;
COALESCE(NULL,1,2)
------------------
1
SQL> select coalesce(1,'1',1) from dual;
select coalesce(1,'1',1) from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected NUMBER got CHAR
6 null与索引
Oracle中的B*Tree索引,并不存储全为null的列,

InnoDB menggunakan redolog dan undologs untuk memastikan konsistensi dan kebolehpercayaan data. 1. Pengubahsuaian halaman data rekod untuk memastikan pemulihan kemalangan dan kegigihan transaksi. 2.UNDOLOGS merekodkan nilai data asal dan menyokong penggantian transaksi dan MVCC.

Metrik utama untuk menjelaskan arahan termasuk jenis, kunci, baris, dan tambahan. 1) Jenis mencerminkan jenis akses pertanyaan. Semakin tinggi nilai, semakin tinggi kecekapan, seperti const adalah lebih baik daripada semua. 2) Kunci memaparkan indeks yang digunakan, dan null menunjukkan tiada indeks. 3) Baris menganggarkan bilangan baris yang diimbas, yang mempengaruhi prestasi pertanyaan. 4) Tambahan memberikan maklumat tambahan, seperti menggunakanFilesort meminta bahawa ia perlu dioptimumkan.

MenggunakanTemary menunjukkan bahawa keperluan untuk membuat jadual sementara dalam pertanyaan MySQL, yang biasanya dijumpai di Orderby menggunakan lajur yang berbeza, GroupBy, atau tidak diindeks. Anda boleh mengelakkan berlakunya indeks dan menulis semula pertanyaan dan meningkatkan prestasi pertanyaan. Khususnya, apabila menggunakan pembelian muncul dalam menjelaskan output, ini bermakna MySQL perlu membuat jadual sementara untuk mengendalikan pertanyaan. Ini biasanya berlaku apabila: 1) deduplikasi atau pengelompokan apabila menggunakan yang berbeza atau kumpulan; 2) Susun apabila Orderby mengandungi lajur bukan indeks; 3) Gunakan subquery kompleks atau menyertai operasi. Kaedah Pengoptimuman termasuk: 1) Orderby dan GroupB

MySQL/InnoDB menyokong empat tahap pengasingan transaksi: ReadUncommitted, ReadCommitted, RepeatableRead dan Serializable. 1. ReadoMuncommitted membolehkan membaca data yang tidak komited, yang boleh menyebabkan bacaan kotor. 2. 3.RepeatableRead adalah tahap lalai, mengelakkan bacaan kotor dan bacaan yang tidak boleh diulang, tetapi bacaan hantu mungkin berlaku. 4. Serializable mengelakkan semua masalah konkurensi tetapi mengurangkan kesesuaian. Memilih tahap pengasingan yang sesuai memerlukan keseimbangan data konsistensi dan keperluan prestasi.

MySQL sesuai untuk aplikasi web dan sistem pengurusan kandungan dan popular untuk sumber terbuka, prestasi tinggi dan kemudahan penggunaan. 1) Berbanding dengan PostgreSQL, MySQL melakukan lebih baik dalam pertanyaan mudah dan operasi membaca serentak yang tinggi. 2) Berbanding dengan Oracle, MySQL lebih popular di kalangan perusahaan kecil dan sederhana kerana sumber terbuka dan kos rendah. 3) Berbanding dengan Microsoft SQL Server, MySQL lebih sesuai untuk aplikasi silang platform. 4) Tidak seperti MongoDB, MySQL lebih sesuai untuk data berstruktur dan pemprosesan transaksi.

Cardinality Indeks MySQL mempunyai kesan yang signifikan terhadap prestasi pertanyaan: 1. Indeks kardinaliti yang tinggi dapat lebih berkesan menyempitkan julat data dan meningkatkan kecekapan pertanyaan; 2. Indeks kardinaliti yang rendah boleh membawa kepada pengimbasan jadual penuh dan mengurangkan prestasi pertanyaan; 3. Dalam indeks bersama, urutan kardinaliti yang tinggi harus diletakkan di depan untuk mengoptimumkan pertanyaan.

Laluan pembelajaran MySQL termasuk pengetahuan asas, konsep teras, contoh penggunaan, dan teknik pengoptimuman. 1) Memahami konsep asas seperti jadual, baris, lajur, dan pertanyaan SQL. 2) Ketahui definisi, prinsip kerja dan kelebihan MySQL. 3) menguasai operasi CRUD asas dan penggunaan lanjutan, seperti indeks dan prosedur yang disimpan. 4) Biasa dengan debugging kesilapan biasa dan cadangan pengoptimuman prestasi, seperti penggunaan rasional indeks dan pertanyaan pengoptimuman. Melalui langkah -langkah ini, anda akan memahami sepenuhnya penggunaan dan pengoptimuman MySQL.

Aplikasi dunia nyata MySQL termasuk reka bentuk pangkalan data asas dan pengoptimuman pertanyaan kompleks. 1) Penggunaan Asas: Digunakan untuk menyimpan dan mengurus data pengguna, seperti memasukkan, menanyakan, mengemas kini dan memadam maklumat pengguna. 2) Penggunaan lanjutan: Mengendalikan logik perniagaan yang kompleks, seperti perintah dan pengurusan inventori platform e-dagang. 3) Pengoptimuman Prestasi: Meningkatkan prestasi dengan menggunakan indeks, jadual partisi dan cache pertanyaan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Dreamweaver CS6
Alat pembangunan web visual

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini