MySQL权威指南读书笔记(二)_MySQL
二,select 的使用
现在,数据表都已经创建起来了,假设我们已经插入了许多的数据,我们就可以用自己喜欢的方式对数据表里面的信息进行检索和显示了,比如说:可以象下面这样把整个数据表内的内容都显示出来
select * from president;
也可以只选取某一个数据行里的某一个数据列
select birth from president where last_name=’Eisenhower’;
select语句的通用形式如下:
select 你要的信息
from 数据表(一个或多个)
where 满足的条件
select语句有几个子句,他们的各种搭配能帮你查出最感兴趣的信息,这些子句可以很简单,也可以很复杂,看看作者是如何详细讲解的
1,用各种操作符来设定检索条件
要想让select语句只把满足特定条件的记录检索出来,就必须给它加上where字句来设置数据行的检索条件。只有这样,才能有选择地把数据列的取值满足特定要求的那些数据行挑选出来。可以针对任何类型的值进行查找,比如说,对数值进行搜索
select * from score where score>95; //显示所有分数在95分以上的信息
也可以针对字符串值进行查找
select last_name,first_name from president where last_name=’Tom’; //找出所有姓tom的总统
还可以对不同类型的值进行组合查找
select last_name,first_name,birth,state from president
where birth//找出1950年前出生于VA州或BA州的总统
可见 where子句中可以使用的是算术操作符(+-*/%),比较操作符(=)以及逻辑运算符,我们应该熟练理解这些操作符的含义(都很简单)
2,NULL 值的特别处理
这是一种不属于任何类型的值。它通常用来表示“没有数据”“数据未知”“数据缺失”“数据超出取值范围”“与本数据列无关”“与本数据列的其它值不同”等多种含义。在许多情况下,NULL 值是非常有用的。
我们的各种操作符是不能对NULL 值进行处理的,如果相对NULL 值进行查找,用的是 is null 或 is not null 来进行判断,举例如下:
select last_name,first_name,birth,state from president
where death is null; //找出所有没死的总统
在某些情况下,NULL 值是很有用的类型,大家慢慢就会理解的。
3,查询结果进行排序
一般说来,如果创建了一个数据表并向里面插入了一些记录,当发出一条select * from name命令的时候,数据记录在查询结果中的先后顺序通常与它们被插入时的先后顺序一样.这当然符合我们的思维习惯.但这只是一种"想当然"的假设而已,事实上,但记录被删除时,数据库中会产生一些空的区域,MYSQL会用新的记录来填补这些区域,也就是说,这个时候本假设就不正确了.因此我们必须记住一点,从服务器返回的记录行的先后顺序是没有任何保证的!如果想要按照一定的顺序,就必须使用order by 子句来设置这个顺序.
select last_name,first_name,birth,state from president
order by last_name; //让总统们的名字按字母顺序排列
还可以设置排列的升序降序
select last_name,first_name from president
order by state DESC,last_name ASC;
//先按照出生地的降序排列,同出生地的按照姓氏的升序排列
注意:如果结果中含有NULL 值,默认情况下他们总是出现在查询结果的开头。
4,限制查询结果中数据行个数
这个简单,只要用limit 子句就可以了,看两个例子:
select last_name,first_name,birth,state from president
order by birth limit 5; //只想看前5个
order by birth limit 10,5; //返回从第11个记录开始的5个记录(跳过了10个)
小技巧:从president表中随机找出一个总统来玩:
select last_name,first_name,birth,state from president
order by rand() limit 1; //这是用了表达式求值的方法,在哪里都管用
5,对输出列进行求值和命名
为了提高效率,MYSQL还可以把表达式的计算结果当作输出列的值。表达式可以很简单,也可以很复杂。例如:下面这个查询有两个输出列,前一个输出列对应一个非常简单的表达式(一个常数),而后一个输出列则对应着一个使用了多个算术运算符和两个函数调用的复杂表达式。
Select 17,format(sqrt(3*3+4*4),0))
输出:17 5
再看这个命令:把两个输出列合并成一个
select concat(first_namem,’ ‘,last_name),concat(city,’,’,state) from president;
如果合并之后输出列的标题过长,则可以给其一个别名,如:
select concat(first_namem,’ ‘,last_name) as name,
concat(city,’,’,state) as birth place
from president;这样就比较美观了。
6,和日期有关的问题
首先记住:在MYSQL中,年份是放到最前面的!我们通常对日期进行下列操作:
按日期进行排序
查找某个日期或日期范围
提取日期中的年,元,日各个部分
计算两个日期的间隔
用一个日期求出另外一个日期
看例子:
select * from event where date=’2002-10-01’ //看看这天有何考试信息?
select last_name,first_name,birth,state from president
where death>’1900-01-01’ and death三个函数year,month,dayofmonth可以分别分离出日期中的年月日来。
select last_name,first_name,birth from president
where month(birth)=3; //谁生在3月 ?
where month(birth)=7 and dayofmonth(birth) =6; //谁生在7月6日?(汤姆克鲁斯?)
函数to_days可以把日期转换为天数。
select last_name,first_name,birth to_days(death)-to_days(birth) as age from president
可以看看这帮家伙都活了多少天!你自己把它改为年吧。
日期值的减法运算还能帮我们计算出现在距离某个特定日期还有多长的时间,这正是我们用来找到需要在近期内缴纳会费的会员的办法:
select last_name,first_name,expiration from member
where (to_days(expiration)-to_days(curdate())
7,模式匹配
有些情况下,模糊查询是很必要的,我们使用like和not like加上一个带通配符的字符串就可以了。共有两个通配符”_”(单个字符)和”&”(多个字符)
select concat(first_namem,’ ‘,last_name) as name,
where last_name like ‘W%’; //找到以W或w开头的人
where last_name like ‘%W%’; //找到名字里面W或w开头的人
8,设置和使用SQL变量
MYSQL 3.23.6以上的版本可以使用查询结果来设置变量,我们就能够方面的把一些结果保存起来以供他用。变量的命名规格是:@name, 赋值语法是 @name:=value ( pascal?) 使用起来也简单:
select @birth:=birth from president
where last_name =’adsltiger’; //执行完成后我们就就会有一个@birth变量可用
用一下试试:
select concat(first_namem,’ ‘,last_name) as name from president
where birth
*9,生成统计信息
单纯依靠手工来生成统计信息是一项既艰苦又耗时还容易出错的工作,如果我们能熟练掌握用数据库来生成各种统计信息的技巧,他就会成为很有威力的信息处理工具。作者在这里用了许多篇幅讲这个主题,为了便于大家理解,我分解开来论述:
9.1 找出一组数据中到底有多少种不同的值是一项比较常见的统计工作,而关键字distinct就可以把查询结果中的重复数据清除掉。如
select distinct state from president //看看美国总统们都来自那些州?(重复的不计)
9.2用count()函数来统计相关记录的个数,注意其使用方法:count(*)计算所有的,NULL也要;count(数据列名称) NULL值不计算在内。
select count(*) from president;
9.3如果我们想知道班级内的男女生数目?该如何查询呢?最简单的方法是
select count(*) from student where sex=’f’;
select count(*) from student where sex=’m
但是如果使用count函数结合group by关键字,一行命令就搞定了
select sex,count(*) f rom student group by sex;
我们可以看到,与反复使用彼此类似的查询来分别统计某数据列不同取值出现次数的做法相比, 把count(*)和group by字句相结合使用有许多优点,主要表现在:
在开始统计自前,不必知道被统计的数据列里面有多少种不同的取值
因为只用了一个查询命令,我们可以对输出做排序的处理
select state,count(*) as count from president
group by state order by count desc limt4; //看看出生总统最多的前四个州是哪几个?
9.4除了count(),我们还用其他一些统计函数,如求出最小值的min(),求最大值的max(),求和的sum(),求平均值的avg(),在实际工作中,这些函数时经常用到的!
*10,从多个表提取信息
我们目前的例子都是从一个表里面提取信息,但数据库的真正威力还在于用“关系”来综合多个数据表里面的记录,这种操作称之为“关联”或“结合”我们可以看到,select需要给出多个数据表里面的信息(不可重复);from需要知道从哪几个表里面做事;where则对几个表之间的关联信息作出详细的描述。
首先我们要学习最可靠的数据列引用方式:数据表名.数据列名。这样在查询中就一定不会混淆这个数据列到底在哪一个表里。
例子1:查询某一天内的学生们的考试成绩,用学号列出。
select scroe.student_id,event_date,score.score.event.type
from event,score
where event.date=’2003-09-12’
and event.event_id=score.event_id
首先,利用event数据表把日期映射到一个考试事件编号,在利用这个编号把score表内相匹配的考试分数找出来。关联两个表,一个查询搞定。
例子2:查询某一天内的学生们的考试成绩,用姓名列出。
select student.name event.name,score.score,event.type
form event,score,student
where event.date=’2003-09-12’
and event.event_id= score.event_id
and scroe.student_id=student.student_id;
关联三个表,一个查询搞定。
例子3:查询一下缺席学生的名字,学号,缺席次数
select student.student_id,student_name
count(absence.date) as absences
from student,absence
where student.student_id=absence.student_id //关联条件
group by student.student_id;
简单的关联操作就介绍到这里。事实上,对于关联的知识我们需要学的很多很多,比如说,我们怀疑某一个数据表内不存在和我们相关的数据,把么在关联查询的时候如何处理这个表呢?这就涉及到内联接,外联接,左联接,右联接的许多新概念了。不知道大家还有没有信心向下看我的笔记?在本书第四章里面,对关联进行了十分详细的论述,看来“在SQL里面,干粗活的是select”的说法再对不过了。
我们了解了select命令的如此之多的用法,感到了它的灵活性,许多字句的组合能够形成一个非常“精妙”的SQL语句,在基础没有打好之前,我等初学者目前还没有必要去钻研那些技巧性很高的东西,“一定程度的创造性是必要的,但太专业或充满技巧的代码则是各种 bug的发源地,同时也是若干个不眠之夜的前奏”
第一章 总结
78页的知识量还是比较大的,我们学会了MYSQL中最最基础的知识:创建数据库和数据表;对数据表里面的记录进行插入,检索,修改,删除等操作,并且对select语句的用法作了一些相对复杂的讲解,不知道各位好学的朋友有何感想

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

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Dokumen Microsoft Word mengandungi beberapa metadata apabila disimpan. Butiran ini digunakan untuk pengenalan pada dokumen, seperti apabila ia dibuat, siapa pengarangnya, tarikh diubah suai, dsb. Ia juga mempunyai maklumat lain seperti bilangan aksara, bilangan perkataan, bilangan perenggan dan banyak lagi. Jika anda mungkin ingin mengalih keluar pengarang atau maklumat terakhir yang diubah suai atau sebarang maklumat lain supaya orang lain tidak mengetahui nilainya, maka ada caranya. Dalam artikel ini, mari lihat cara mengalih keluar pengarang dokumen dan maklumat terakhir diubah suai. Alih keluar pengarang dan maklumat terakhir diubah suai daripada dokumen Microsoft Word Langkah 1 – Pergi ke

Menggunakan Maklumat Sistem Klik Mula dan masukkan Maklumat Sistem. Hanya klik pada program seperti yang ditunjukkan dalam imej di bawah. Di sini anda boleh menemui kebanyakan maklumat sistem, dan satu perkara yang anda boleh temui ialah maklumat kad grafik. Dalam program Maklumat Sistem, kembangkan Komponen, dan kemudian klik Tunjukkan. Biarkan program mengumpulkan semua maklumat yang diperlukan dan setelah ia siap, anda boleh mencari nama khusus kad grafik dan maklumat lain pada sistem anda. Walaupun anda mempunyai berbilang kad grafik, anda boleh menemui kebanyakan kandungan yang berkaitan dengan kad grafik khusus dan bersepadu yang disambungkan ke komputer anda dari sini. Menggunakan Pengurus Peranti Windows 11 Sama seperti kebanyakan versi Windows yang lain, anda juga boleh mencari kad grafik pada komputer anda daripada Pengurus Peranti. Klik Mula dan kemudian

Dalam iOS 17, terdapat ciri AirDrop baharu yang membolehkan anda bertukar maklumat hubungan dengan seseorang dengan menyentuh dua iPhone. Ia dipanggil NameDrop, dan inilah cara ia berfungsi. Daripada memasukkan nombor orang baharu untuk menghubungi atau menghantar teks kepada mereka, NameDrop membenarkan anda meletakkan iPhone anda berhampiran iPhone mereka untuk bertukar-tukar butiran hubungan supaya mereka mempunyai nombor anda. Meletakkan kedua-dua peranti bersama-sama akan muncul secara automatik antara muka perkongsian kenalan. Mengklik pada pop timbul akan memaparkan maklumat hubungan seseorang dan poster kenalan mereka (anda boleh menyesuaikan dan mengedit foto anda sendiri, juga ciri baharu iOS17). Skrin ini juga termasuk pilihan untuk "Terima Sahaja" atau berkongsi maklumat hubungan anda sendiri sebagai balasan.

Kerja pembinaan semula 3D imej semasa biasanya menggunakan kaedah pembinaan semula stereo berbilang paparan (Stereo Berbilang Pandangan) yang merakam pemandangan sasaran daripada berbilang sudut pandangan (berbilang paparan) di bawah keadaan pencahayaan semula jadi yang berterusan. Walau bagaimanapun, kaedah ini biasanya menganggap permukaan Lambertian dan mengalami kesukaran memulihkan butiran frekuensi tinggi. Satu lagi pendekatan untuk pembinaan semula pemandangan ialah menggunakan imej yang ditangkap dari sudut pandangan tetap tetapi dengan lampu titik yang berbeza. Kaedah Stereo fotometrik, sebagai contoh, ambil persediaan ini dan gunakan maklumat teduhannya untuk membina semula butiran permukaan objek bukan Lambertian. Walau bagaimanapun, kaedah paparan tunggal sedia ada biasanya menggunakan peta biasa atau peta kedalaman untuk mewakili yang boleh dilihat

Dalam iOS17, terdapat ciri AirDrop baharu yang membolehkan anda bertukar maklumat hubungan dengan seseorang dengan menyentuh dua iPhone pada masa yang sama. Ia dipanggil NameDrop, dan inilah cara ia sebenarnya berfungsi. NameDrop menghapuskan keperluan untuk memasukkan nombor orang baharu untuk menelefon atau menghantar mesej kepada mereka supaya mereka mempunyai nombor anda, anda hanya boleh memegang iPhone anda rapat dengan iPhone mereka untuk bertukar maklumat hubungan. Meletakkan kedua-dua peranti bersama-sama akan muncul secara automatik antara muka perkongsian kenalan. Mengklik pada pop timbul akan memaparkan maklumat hubungan seseorang dan poster kenalan mereka (foto anda sendiri yang boleh anda sesuaikan dan edit, juga baharu kepada iOS 17). Skrin ini juga termasuk "Terima Sahaja" atau berkongsi maklumat hubungan anda sendiri sebagai balasan

MySQL ialah pangkalan data hubungan biasa yang merupakan komponen teras banyak laman web dan aplikasi. Apabila jumlah data menjadi lebih besar dan lebih besar, cara mengoptimumkan prestasi MySQL menjadi sangat penting. Salah satu bidang utama ialah pemampatan jadual data Dalam artikel ini kami akan memperkenalkan teknologi pemampatan jadual data dalam MySQL. Jadual termampat dan jadual tidak termampat Terdapat dua jenis jadual data dalam MySQL: jadual termampat dan jadual tidak termampat. Jadual tidak dimampatkan ialah jenis jadual lalai MySQL, yang menggunakan format baris panjang tetap untuk menyimpan data. Ini bermakna data

Sebab kelewatan dalam WeChat menerima maklumat mungkin masalah rangkaian, beban pelayan, masalah versi, masalah peranti, masalah penghantaran mesej atau faktor lain. Pengenalan terperinci: 1. Masalah rangkaian Kelewatan dalam menerima maklumat pada WeChat mungkin berkaitan dengan sambungan rangkaian Jika sambungan rangkaian tidak stabil atau isyarat lemah, ia boleh menyebabkan kelewatan dalam penghantaran maklumat disambungkan ke rangkaian yang stabil dan kekuatan isyarat rangkaian adalah baik ; masa yang sama, dsb.

Apple telah memperkenalkan cara yang sangat pantas (jika bukan yang terpantas) untuk berkongsi maklumat hubungan anda dengan iPhone lain melalui NameDrop. Ini semua yang anda perlu tahu. Apakah NameDrop? iOS 17 memperkenalkan NameDrop, ciri revolusioner yang memanfaatkan poster kenalan. Kad yang diperibadikan ini boleh dibuat untuk diri sendiri dan kenalan lain dan akan muncul apabila anda membuat panggilan. Dengan berbilang pilihan yang boleh disesuaikan seperti foto, Memoji, monogram dan banyak lagi, anda boleh menyesuaikan poster kenalan anda untuk memadankan personaliti anda menggunakan skema warna dan fon pilihan anda. NameDrop berkongsi poster anda secara automatik apabila iPhone anda berada berdekatan dengan pengguna lain, membolehkan kedua-dua pihak dengan mudah
