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语句的用法作了一些相对复杂的讲解,不知道各位好学的朋友有何感想

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Les documents Microsoft Word contiennent certaines métadonnées lors de leur enregistrement. Ces détails sont utilisés pour l'identification du document, comme la date de création, l'auteur, la date de modification, etc. Il contient également d'autres informations telles que le nombre de caractères, le nombre de mots, le nombre de paragraphes, etc. Si vous souhaitez supprimer l'auteur ou les dernières informations modifiées ou toute autre information afin que d'autres personnes ne connaissent pas les valeurs, il existe un moyen. Dans cet article, voyons comment supprimer les informations sur l'auteur et la dernière modification d'un document. Supprimer les informations sur l'auteur et la dernière modification du document Microsoft Word Étape 1 – Accédez à

Utilisation des informations système Cliquez sur Démarrer et entrez les informations système. Cliquez simplement sur le programme comme indiqué dans l'image ci-dessous. Vous trouverez ici la plupart des informations sur le système, notamment les informations sur la carte graphique. Dans le programme Informations système, développez Composants, puis cliquez sur Afficher. Laissez le programme rassembler toutes les informations nécessaires et une fois prêt, vous pourrez trouver le nom spécifique de la carte graphique et d'autres informations sur votre système. Même si vous possédez plusieurs cartes graphiques, vous pouvez trouver ici la plupart des contenus liés aux cartes graphiques dédiées et intégrées connectées à votre ordinateur. Utilisation du Gestionnaire de périphériques Windows 11 Tout comme la plupart des autres versions de Windows, vous pouvez également trouver la carte graphique sur votre ordinateur à partir du Gestionnaire de périphériques. Cliquez sur Démarrer puis

Dans iOS 17, il existe une nouvelle fonctionnalité AirDrop qui vous permet d'échanger des informations de contact avec quelqu'un en touchant deux iPhones. Cela s'appelle NameDrop, et voici comment cela fonctionne. Plutôt que de saisir le numéro d'une nouvelle personne pour l'appeler ou lui envoyer un SMS, NameDrop vous permet simplement de placer votre iPhone près de son iPhone pour échanger ses coordonnées afin qu'elle ait votre numéro. Rassembler les deux appareils fera automatiquement apparaître l’interface de partage de contacts. En cliquant sur la fenêtre contextuelle, vous afficherez les informations de contact d'une personne et son affiche de contact (vous pouvez personnaliser et modifier vos propres photos, également une nouvelle fonctionnalité d'iOS17). Cet écran comprend également des options pour « Recevoir uniquement » ou partager vos propres informations de contact en réponse.

Les travaux actuels de reconstruction d'images 3D utilisent généralement une méthode de reconstruction stéréo multi-vues (Multi-view Stereo) qui capture la scène cible à partir de plusieurs points de vue (multi-vues) dans des conditions d'éclairage naturel constantes. Cependant, ces méthodes supposent généralement des surfaces lambertiennes et ont des difficultés à récupérer les détails haute fréquence. Une autre approche de la reconstruction de scène consiste à utiliser des images capturées à partir d'un point de vue fixe mais avec des points lumineux différents. Les méthodes photométriques stéréo, par exemple, prennent cette configuration et utilisent ses informations d'ombrage pour reconstruire les détails de surface d'objets non lambertiens. Cependant, les méthodes existantes à vue unique utilisent généralement une carte normale ou une carte de profondeur pour représenter le visible.

Dans iOS17, il existe une nouvelle fonctionnalité AirDrop qui vous permet d'échanger des informations de contact avec quelqu'un en touchant deux iPhones en même temps. Cela s'appelle NameDrop, et voici comment cela fonctionne réellement. NameDrop élimine le besoin de saisir le numéro d'une nouvelle personne pour l'appeler ou lui envoyer un SMS afin qu'elle ait votre numéro, vous pouvez simplement tenir votre iPhone près de son iPhone pour échanger des informations de contact. Rassembler les deux appareils fera automatiquement apparaître l’interface de partage de contacts. En cliquant sur la fenêtre contextuelle, vous afficherez les informations de contact d'une personne et son affiche de contact (une photo de votre choix que vous pouvez personnaliser et modifier, également nouvelle sur iOS 17). Cet écran inclut également « Recevoir uniquement » ou partagez vos propres informations de contact en réponse.

MySQL est une base de données relationnelle commune qui constitue un composant essentiel de nombreux sites Web et applications. À mesure que la quantité de données devient de plus en plus importante, la manière d'optimiser les performances de MySQL devient particulièrement importante. L'un des domaines clés est la compression des tables de données. Dans cet article, nous présenterons la technologie de compression des tables de données dans MySQL. Tables compressées et tables non compressées Il existe deux types de tables de données dans MySQL : les tables compressées et les tables non compressées. Les tables non compressées sont le type de table par défaut de MySQL, qui utilisent un format de ligne de longueur fixe pour stocker les données. Cela signifie des données

La raison du retard dans la réception des informations par WeChat peut être due à des problèmes de réseau, à la charge du serveur, à des problèmes de version, à des problèmes de périphérique, à des problèmes d'envoi de messages ou à d'autres facteurs. Introduction détaillée : 1. Problèmes de réseau. Le retard dans la réception des informations sur WeChat peut être lié à la connexion réseau. Si la connexion réseau est instable ou si le signal est faible, cela peut entraîner des retards dans la transmission des informations. connecté à un réseau stable et la force du signal réseau est bonne. 2. Lorsque la charge du serveur WeChat est élevée, cela peut entraîner des retards dans la transmission des informations, en particulier pendant les périodes de pointe ou lorsqu'un grand nombre d'utilisateurs utilisent WeChat. en même temps, etc.

La transmission d'informations dans les réseaux informatiques est basée sur des « mots » ; les mots sont l'unité de base de la transmission des données. Les réseaux informatiques ont deux fonctions principales : la communication de données et le partage de ressources, et les informations transmises lors de la communication de données sont exprimées sous forme de données binaires. La communication de données est une méthode de communication et un service de communication qui utilise la technologie de transmission de données pour transférer des informations de données entre deux terminaux selon un certain protocole de communication.
