sql in mac学习记录

鉴于有一段时间没有访问mysql了,最近打算在mac 系统上下载mysql 练习一下sql的使用,于是

First, the mysql download

https://dev.mysql.com/downloads/mysql/

Second, Mysql install steps

Install the software by normally install one software on Mac,

The point you need care is the Mysql 8.10 need use the first password define method,

You need login the mysql by the username root and the password you filled in during install the mysql

After I installed the mysql, I can't login the mysql from the Mac's Terminal, then I find the follow link info is so exact as the process I install the mysql

小白入门:MySQL超详细安装教程(mac版) - 知乎

mac安装mysql数据库及配置环境变量_use lengcy password_java开发鼻祖的博客-CSDN博客

但是按照上方链接配置完成后,每次登陆mysql环境,都需要使用下列命令激活配置文件

所谓的配置文件是指 sudo vim /usr/local/mysql/.bash_profile 文件中的配置,具体命令为

Source /usr/local/mysql/.bash_profile

由于在练习过程中临时打算记录个学习过程的文件,于是创建了这篇文章,希望下次自己看时能找到资料

mac 打开Terminal 终端,然后输入如下命令

source /usr/local/mysql/.bash_profile

mysql -u root -p 回车,

会提示输入mysql安装时的密码,如果密码记不住了,可以参考下面的链接尝试解决

mac解决mysql忘记密码的问题(亲测有效)_mac本机安装mysql忘记密码怎么办_weixin_36174077的博客-CSDN博客

如果看到下图,即表示正常进入了mysql

之后即可参考一般的mysql 的sql 语句进行使用

例如

在我本次的初始学习中,我根据所参考的学习书籍,创建了如下表格,

create table shohin

(shohin_id char(4) not null,

shohin_mei varchar(100) not null,

shohin_bunrui varchar(32) not null,

hanbai_tanka integer ,

shiire_tanka integer ,

torokubi Date ,

primary key (shohin_id));

然后插入如下测试数据

 insert into shohin values('0005','高压锅','厨房用具','6800','5000','2009-01-15');

 insert into shohin values('0001','T恤衫','衣服','1000','500','2009-09-20');

insert into shohin values('0002','打孔器','办公用品','500','320','2009-09-11');

insert into shohin values('0003','运动T恤','衣服','4000','2800',null);

insert into shohin values('0004','菜刀','厨房用具','3000','2800','2009-09-20');

insert into shohin values('0005','高压锅','厨房用具','6800','5000','2009-01-15');

insert into shohin values('0006','叉子','厨房用具','500',null,'2009-09-20');

insert into shohin values('0007','擦菜板','厨房用具','880','790','2008-04-28');

insert into shohin values('0008','圆珠笔','办公用品','100',null,'2009-11-11');

即可得到如下测试表数据

鉴于使用方便,后续的测试可能将要放在DBeaver 这个连接数据库的工具里进行.

一, select子句查询,(别名使用,distinct 关键字对重复行数据进行去重操作)

1, 对查询列使用别名,需要注意的是,如下图,对于汉语别名建议使用双引号,而不是单引号,虽然下述语句在DBeaver中给到了正确的结果

 2,select 子句中可以书写常数。如下第一列“商品” 是字符串常数,第二列 38 是数字类型常数,第3列是日期常数,它们可以与数据库表中查询到的数据一起显示出来。

3,在 select 语句中使用distinct 删除重复行,但是对查询的行数据进行数据去重时,注意如下差异

由于select语句中,增加了一个查询列,而新增的查询列中数据都不重,所以即使第一列数据有大量重复,但是最终结果仍然不能将左侧的重复项目去除

即使做如下修改,也无法改变结果

在测试distinct 语句时,发现一个新的点,对于派生表,需要给派生表创建一个单独的表名,否则会出错,例如

如果遇到错误类似‘SQL Error [1248] [42000]: Every derived table must have its own alias’ 这样的错误,说明在你的sql语句中可能有多个select 语句,如此,内部每个select需要给它创建一个别名,如下

注意上图,我为‘select shohin_bunrui, shohin_id from shohin' 派生句起了一个别名 ‘a', 同时在外侧查询语句的查询结果列前加了'a.‘  标识,表明最外层列名查询来源于内部查询表

4,在使用distinct时,null 也被视为一类数据。存在多条null数据行时,也会结合为一条null数据。对含有Null数据的shiire_tanka(进货单价)列使用distinct 的select语句参考如下代码。可见,出了2条2800 的数据外,两条null数据也被结合为一条。

原始数据为

5,假设select语句中要查询多列出来,distinct 关键字只能放在第一个列的列名之前,

如下图原始数据和加入distinct之后的查询结果如下

二,根据where 语句来选择记录

1,select 语句通过where子句来指定查询数据的条件。在where子句中可以指定“某一列的值和这个字符串相等” 或者 “某一列的值大于这个数字” 等条件。

例如我们选取所有商品分类为衣服的行,显示商品名称和类型2列

如上语句中,单引号和双引号在上述查询中都可。

总结:首先通过where 子句查询出所有符合指定条件的行数据(记录),然后再选取出select语句指定的列。 where子句要紧跟在from子句之后。

三,sql 语句的注释

sql 语句的单行注释要写在 -- 之后,多行 注释要写在/* 和 */ 之间,可以跨多行

 注意单行注释的-- 符合和后面的文字要多加一个空格以示区分

2-2 算术运算符和比较运算符

运算符就是对其两边的列或者值进行计算(计算或者大小比较等)的符号。

使用算术运算符可以进行四则运算

括号可以提升运算的优先顺序(优先进行运算)

包含null的运算,其结果也显示null

比较运算符可以用来判断列或者值是否相等,还可以用来比较大小

判断是否为null,需要使用 is null 或者 is not null 运算符

一,算术运算符

1, 把如上商品表中哥哥商品单价的2倍以hanbai_tanka_X2 的形式读取出来,如下

SELECT shohin_mei,hanbai_tanka,

hanbai_tanka * 2 as "hanbai_tanka_X2"

from shohin;

四则运算所使用的运算符(+ ,-, *, / )成为算术运算符。运算符就是使用其两边的值进行四则运算或者字符串拼接、数值大小比较等运算,并返回结果的符号。

select 子句中是可以使用常数或者表达式的。

2, 注意含有null 的运算, 算数运算符中,含有null的计算结果最终都是null,例如 5 + null,   10 - null, 1 * null 4 / null, null / 9, null / 0 等计算结果都是null。 特别注意:类似5 / 0 这样的情况,由于0 不能做除数,所以5 / 0 会出现错误,但是 null / 0 (null 处以 0) 时不会出错,结果是null。

但是,这是在算术运算符中,如果在比较运算符中,是不能对null使用比较运算符的,如果某行数据某列值为null,如果对该列进行比较运算,该行数据在结果中会丢失,因为null 属于不明确的值,无法参与比较,所以相应行结果会丢失。

3, 普通sql 中,省略from 子句是可能的,但是像 Oracle 数据库,要求from子句是不可以省略的

例如

二, 比较运算符

1,基本的比较运算符

运算符含义
=和 ~ 相等
<>和~ 不等
>=

大于等于~

>大于~
<=小于等于~
<小于~

如上,这些运算符可以对字符,数字和日期等几乎所有数据类型的列和值进行比较。

1) 如下,查询所有销售单价等于500 的商品

 

 2)如下查询所有销售单价不等于500 的商品

3)选取出销售单价大于等于1000 的记录

4) 选取出登记日期在2009年9月27日之前的记录(某日之前就是小于某个日期)

5)还可以使用比较运算符对计算结果进行比较。例如查询处销售单价比进货单价高于500元以上的商品。 注意涉及到2列的减法计算表达式参与比较计算的内容。

2, 对字符串使用不等号时的注意事项(由于特殊测试,需要临时创建一张新的表来存储数据)

如果我们进行如下数据查询,

注意:如上查询结果是3 和 222, 虽然逻辑上来看,10, 11, 3 和 222 这几条数据好像都比2 大,为何 10 和 11 没有出现在结果中呢? 这么想是因为混淆了数字和字符串的缘故。也就是说

2 和 ‘2’ 是不一样的。

chr 列被定义为字符串类型,字符串类型的数据进行比较时,典型的规则就是按照字典顺序进行比较,类似姓名一样,按照条目在字典中出现的 顺序进行排序。该规则最重要的一点就是,以相同字符开头的单词比不同字符开头的单词更相近,

Chars 表中chr 列中国呢的数据按照字典顺序进行排序的结果是

1, 10, 11, 2, 222, 3

10 和11 同样都是以1 开头的字符串,首先判定为比‘2’ 小,所以上述结果中不含10 和11

3, 不能对null使用比较运算符

如上数据,shiire_tanka 列中有2 个null的结果,如果我们查询shiire_tanka 等于2800 的记录,我们能查询到2行记录,因为表中一共有8行记录,如果我们查询不等于2800 的记录,按道理应该8-2 = 6 条记录才对,但是实际上我们查询不等于,是得不到6条记录的,

 

 

如上,我们只是拿到了4条记录,2条结果为null的数据都没有出现在第二个查询中,

那如果我们设定查询条件为 = null ,结果会如何呢?

 即如果条件为shiire_tanka = null,  将不会有一条记录出来。

实际上,sql 有专门的规则查询null 的数据,即使用 is null  或者 is not null 来查询,如下

我们继续查询下, is not null 的结果

 

2-3 逻辑运算符

通过使用逻辑运算符,可以将多个查询条件进行组合

通过not 运算符可以作成 “不是~” 这样的查询条件

两边条件都成立时,使用and 运算符的查询条件才成立

只要两边的条件中有一个成立,使用or运算符的查询条件就可以成立

值可以归结为真(True) 和假(False) 其中之一的值称为真值。比较运算符在比较成立时返回真,不成立时返回假。但是,在sql中还存在另外一个特定的真值——不确定(unknown).

根据逻辑运算符对真值进行的操作和其结果归结成的表称为真值表

sql中的逻辑运算是包含对真、假 和不确定进行运算的三值逻辑

1, Not 运算符

在之前,表示‘不是~’ 我们有个不等于 <>, 但是除此外还有一个更广泛运用的NOT 运算符,但是not 不能单独使用,必须和其他查询条件组合起来使用

例如之前选取出销售单价大于等于1000 的记录

 

如果向上述代码中加入not 运算符会如何呢?

当然,也可以换成小于

实际上,不使用not 运算符的查询条件更容易让人理解,毕竟’小于1000‘ 的条件比 ’大于等于的否定‘这样的条件更容易让人快速接受。

2, and 运算符和 or 运算符

 

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/46776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时序预测 | MATLAB实现ELM极限学习机时间序列预测(多指标、相关图)

时序预测 | MATLAB实现ELM极限学习机时间序列预测(多指标、相关图) 目录 时序预测 | MATLAB实现ELM极限学习机时间序列预测(多指标、相关图)效果一览基本介绍程序设计学习总结参考资料效果一览 基本介绍 时序预测 | MATLAB实现ELM极

前端-初始化Vue3+TypeScript

如果使用如下命令初始化项目&#xff0c;项目很干净&#xff0c;很适合了解项目的各个结构。 npm init vitelatest如果使用如下命令初始化项目&#xff0c;是可以选择你需要的组件 npm init vuelatest

vue根据template结构自动生成css/scss/less样式嵌套

vscode搜索安装插件&#xff1a;AutoScssStruct4Vue

十、接口(3)

本章概要 接口适配接口字段 初始化接口中的字段 接口嵌套接口和工厂方法模式 接口适配 接口最吸引人的原因之一是相同的接口可以有多个实现。在简单情况下体现在一个方法接受接口作为参数&#xff0c;该接口的实现和传递对象则取决于方法的使用者。 因此&#xff0c;接口的…

Linux 系统的如何优化(面试题)

Linux 系统的如何优化&#xff08;面试题&#xff09; (1) 禁用不需要的服务 ntsysv 命令最为方便&#xff0c;执行后&#xff0c;把不需要的勾选去掉就行 &#xff08;2&#xff09;避免直接使用root用户&#xff0c;普遍用户通过sudo授权操作 &#xff08;3&#xff09;通过…

wustojc日期格式变化

#include <stdio.h> int main() {char a[10];for(int i0;i<10;i){//用一个耍聪明的方法&#xff0c;全部用数组存储&#xff1b;面向结果编程a[0]getchar();}printf("%c%c%c%c%c%c%c%c%c%c",a[6],a[7],a[8],a[9],a[2],a[0],a[1],a[5],a[3],a[4]);return 0;}…

数据结构:栈和队列

文章目录 一、栈1.栈的概念及结构1.栈的概念及结构2.栈的实现 2.栈的顺序表实现1.栈的结构体和实现的功能函数2.栈的初始化&#xff0c;入栈和出栈操作3.栈的其他操作 3.栈的链表实现1.栈的结构体和实现的功能函数2.栈功能函数的实现 二、队列1.队列的概念及结构1.队列的概念及…

【使用教程】在Ubuntu下运行CANopen通信PMM伺服电机使用教程(NimServoSDK_V2.0.0)

本教程将指导您在Ubuntu操作系统下使用NimServoSDK_V2.0.0来运行CANopen通信的PMM系列一体化伺服电机。我们将介绍必要的步骤和命令&#xff0c;以确保您能够成功地配置和控制PMM系列一体化伺服电机。 NimServoSDK_V2.0.0是一款用于PMM一体化伺服电机的软件开发工具包。它提供了…

Harmony OS教程学习笔记

基础知识 1.如何修改程序启动的第一个页面&#xff1f; 不想使用创建的默认的页面&#xff0c;这时需要修改启动页面&#xff0c;修改的地方在EntryAbility文件中的onWindowStageCreate方法中。 onWindowStageCreate(windowStage: window.WindowStage) {// Main window is cr…

Golang Gorm 更新字段 save update updates

更新和删除操作的前提条件都是要在找到数据的情况下&#xff0c;先要查询到数据才可以做操作。 更新的前提的先查询到记录&#xff0c;Save保存所有字段&#xff0c;用于单个记录的全字段更新它会保控所有字段&#xff0c;即使零值也会保存。 在更新和删除之前&#xff0c;要利…

远程线程注入(简单样例以及原理)

远程线程注入(简单样例以及原理) 注入的目标是将我们的代码注入到目标进程的地址空间中 注入通常可以根据注入的内容分为两种类型&#xff1a; shellcode注入 &#xff1a;这种注入是将我们的代码直接注入到目标内存中&#xff0c;这就要保证我们的代码在贴到其他地址上后仍…

交叉熵--损失函数

目录 交叉熵&#xff08;Cross Entropy&#xff09; 【预备知识】 【信息量】 【信息熵】 【相对熵】 【交叉熵】 交叉熵&#xff08;Cross Entropy&#xff09; 是Shannon信息论中一个重要概念&#xff0c; 主要用于度量两个概率分布间的差异性信息。 语言模型的性能…

Azure静态网站托管

什么是静态网站托管 Azure Blob的静态网站托管是一项功能&#xff0c;它允许开发人员在Azure Blob存储中托管和发布静态网站。通过这个功能&#xff0c;您可以轻松地将静态网页、图像、视频和其他网站资源存储在Azure Blob中&#xff0c;并直接通过提供的URL访问这些资源。 官…

使用VisualStudio制作上位机(一)

文章目录 使用VisualStudio制作上位机(一)写在前面第一部分:创建应用程序第二部分:GUI主界面设计使用VisualStudio制作上位机(一) Author:YAL 写在前面 1.达到什么目的呢 本文主要讲怎么通过Visual Studio 制作上位机,全文会以制作过程来介绍怎么做,不会去讲解具体…

css 实现svg动态图标效果

效果演示&#xff1a; 实现思路&#xff1a;主要是通过css的stroke相关属性来设置实现的。 html代码: <svgt"1692441666814"class"icon"viewBox"0 0 1024 1024"version"1.1"xmlns"http://www.w3.org/2000/svg"p-id"…

操作符详解(1)

1. 操作符分类&#xff1a; 算术操作符 移位操作符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员 2. 算术操作符 - * / % 1. 除了 % 操作符之外&#xff0c;其他的几个操作符可以作用于整数和浮点数。 2. 对…

Redis中的缓存穿透、雪崩、击穿的原因以及解决方案

一&#xff0c;什么是缓存穿透、雪崩、击穿&#xff1f; 1、缓存穿透&#xff1a; 是指用户查询数据&#xff0c;在数据库没有&#xff0c;自然在缓存中也不会有。这样就导致用户查询的时候&#xff0c;在缓存中找不到&#xff0c;每次都要去数据库再查询一遍&#xff0c;然后…

宇宙原理:黑洞基础。

宇宙原理&#xff1a;黑洞基础TOC 黑洞的数理基础&#xff1a;一个由满数组成的数盘&#xff0c;经过自然演进&#xff0c;将会逐步稀疏化、最终会向纯数方案发展&#xff1b;纯数方案虽然只有{2}、无数&#xff08;虚拟&#xff09;、{0,1,2,3}&#xff08;虚拟&#xff09;、…

1.82亿南沙区“数字城市”城市运营中心建设项目采购需求

1. 总体技术需求 项目整体框架 遵循“一个中枢、两大中台、基础底座”的总体架构&#xff0c;构建全区城市治理中枢&#xff0c;实现连通上下、衔接左右、分拨处置和协同指挥等作用。 本项目系统的总体架构分为一个中枢、两大中台、基础底座共五部分&#xff0c;在政务云平台…

netty(一):NIO——处理消息边界

处理消息边界 为什么要处理边界 因为会存在半包和粘包的问题 1.客户端和服务端约定一个固定长度 优点&#xff1a;简单 缺点&#xff1a;可能造成浪费 2.客户端与服务端约定一个固定分割符 *缺点 效率低 3.先发送长度&#xff0c;再发送数据 TLV格式&#xff1a; type…