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.rhkb.cn/news/99615.html

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

相关文章

【算法刷题之数组篇(2)】

目录 1.leetcode-35. 搜索插入位置&#xff08;简单&#xff09;2.leetcode-74. 搜索二维矩阵&#xff08;中等&#xff09;3.leetcode-73. 矩阵置零&#xff08;中等&#xff09;4.leetcode-56. 合并区间&#xff08;中等&#xff09;5.leetcode-54. 螺旋矩阵&#xff08;中等…

了解扩散概率模型 (DPM)

一、介绍 对复杂的概率分布进行建模是机器学习的核心问题。如果这个问题可以出现在不同的形状下&#xff0c;最常见的设置之一如下&#xff1a;给定仅由一些可用样本描述的复杂概率分布&#xff0c;如何生成新样本&#xff1f; 所有生成模型都依赖于相同的基本思想&#xff0c;…

【Python从入门到进阶】32、bs4的基本使用

接上篇《31、使用JsonPath解析淘票票网站地区接口数据》 上一篇我们介绍了如何使用JSONPath来解析淘票票网站的地区接口数据&#xff0c;本篇我们来学习BeautifulSoup的基本概念&#xff0c;以及bs4的基本使用。 一、BeautifulSoup简介 1、bs4基本概念 BeautifulSoup是一个P…

Flink之时间语义

Flink之时间语义 简介 Flink中时间语义可以说是最重要的一个概念了,这里就说一下关于时间语义的机制,我们下看一下下面的表格,简单了解一下 时间定义processing time处理时间,也就是现实世界的时间,或者说代码执行时,服务器的时间event time事件时间,就是事件数据中所带的时…

怎样让音频速度变慢?请跟随以下方法进行操作

怎样让音频速度变慢&#xff1f;在会议录音过程中&#xff0c;经常会遇到主讲人语速过快&#xff0c;导致我们无法清晰听到对方说的内容。如果我们能够减慢音频速度&#xff0c;就能更好地记录对方的讲话内容。此外&#xff0c;在听到快速播放的外语或方言时&#xff0c;我们也…

途乐证券|买了股票但不管可以吗?会不会被撤回?

炒股是个说简略也简略、说难也难的事情&#xff0c;一些股民绞尽脑汁、忙前忙后紧盯大盘&#xff0c;实时剖析&#xff0c;把自己累够呛&#xff1b;一些股民云淡风轻&#xff0c;买了股票却几乎不怎么理睬&#xff0c;兴致来了看两眼&#xff0c;也就算研讨股票行情了。那么&a…

8.4.tensorRT高级(3)封装系列-infer推理封装,输入输出tensor的关联

目录 前言1. infer封装总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程&#xff0c;之前有看过一遍&#xff0c;但是没有做笔记&#xff0c;很多东西也忘了。这次重新撸一遍&#xff0c;顺便记记笔记。 本次课程学习 tensorRT 高级-infer推理封装&#xff0c;输入输出…

「UG/NX」Block UI 面收集器FaceCollector

✨博客主页何曾参静谧的博客📌文章专栏「UG/NX」BlockUI集合📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C+&#

分类预测 | MATLAB实现MTBO-CNN多输入分类预测

分类预测 | MATLAB实现MTBO-CNN多输入分类预测 目录 分类预测 | MATLAB实现MTBO-CNN多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.MATLAB实现MTBO-CNN多输入分类预测 2.代码说明&#xff1a;基于登山队优化算法&#xff08;MTBO&#xff09;、卷积神经…

使用本地电脑搭建可以远程访问的SFTP服务器

文章目录 1. 搭建SFTP服务器1.1 下载 freesshd 服务器软件1.3 启动SFTP服务1.4 添加用户1.5 保存所有配置 2. 安装SFTP客户端FileZilla测试2.1 配置一个本地SFTP站点2.2 内网连接测试成功 3. 使用cpolar内网穿透3.1 创建SFTP隧道3.2 查看在线隧道列表 4. 使用SFTP客户端&#x…

代码随想录打卡—day21—【二叉树】— 8.21

1 530. 二叉搜索树的最小绝对差 530. 二叉搜索树的最小绝对差 想法&#xff1a;先直接中序遍历&#xff08;升序的序列&#xff09;过程中相邻两个数的差值取min&#xff0c;自己写一次AC代码&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* …

Facebook 应用未启用:这款应用目前无法使用,应用开发者已得知这个问题。

错误&#xff1a;Facebook 应用未启用:这款应用目前无法使用&#xff0c;应用开发者已得知这个问题。应用重新启用后&#xff0c;你便能登录。 「应用未经过审核或未发布」&#xff1a; 如果一个应用还没有经过Facebook的审核或者开发者尚未将应用发布&#xff0c;那么它将无法…

【Mysql】MVCC版本机制的多并发

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;命运给你一个低的起点&#xff0c;是想看你精彩的翻盘&#xff0c;而不是让你自甘堕落&#xff0c;脚下的路虽然难走&#xff0c;但我还能走&#xff0c;比起向阳而生&#xff0c;我更想尝试逆风…

iOS设计规范是什么?都有哪些具体规范

iOS设计规范是苹果为移动设备操作系统iOS制定的设计指南。iOS设计规范的制定保证了苹果应用在外观和操作上的一致性和可用性&#xff0c;从而提高了苹果界面设计的用户体验和应用程序的成功性。本文将从七个方面全面分析iOS设计规范。 1.iOS设计规范完整版分享 由「即时设计」…

【LeetCode75】第三十四题 叶子相似的树

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们两棵二叉树&#xff0c;让我们判断这两棵二叉树的从左到右的叶子节点组成的叶子序列是否一致&#xff0c;即从左到右的叶子节点的数…

Open3D 进阶(5)变分贝叶斯高斯混合点云聚类

目录 一、算法原理二、代码实现三、结果展示四、测试数据本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 系列文章(连载中。。。爬虫,你倒是爬个完整的呀?): Open3D 进阶(1) MeanShift点云聚类Open3D 进阶(2)DB…

Ajax介绍

1.与服务器进行数据交换&#xff1a;通过 Ajax 可以给服务器发送请求&#xff0c;并获取服务器响应的数据。 2.异步交互&#xff1a;可以在 不重新加载整个页面 的情况下&#xff0c;与服务器交换数据并 更新部分网页 的技术&#xff0c;如&#xff1a; 搜索联想、用户名是否可…

浅析Linux SCSI子系统:调试方法

文章目录 SCSI日志调试功能scsi_logging_level调整SCSI日志等级 SCSI trace events使能SCSI trace events方式一&#xff1a;通过set_event接口方式二&#xff1a;通过enable 跟踪trace信息 相关参考 SCSI日志调试功能 SCSI子系统支持内核选项CONFIG_SCSI_LOGGING配置日志调试…

Django学习笔记(2)

创建app 属于自动执行了python manage.py 直接在里面运行startapp app01就可以创建app01的项目了 之后在setting.py中注册app01 INSTALLED_APPS ["django.contrib.admin","django.contrib.auth","django.contrib.contenttypes","django.c…

Dockerfile制作Web应用系统nginx镜像

目录 1.所需实现的具体内容 2.编写Dockerfile Dockerfile文件内容&#xff1a; 默认网页内容&#xff1a; 3.构建镜像 4.现在我们运行一个容器&#xff0c;查看我们的网页是否可访问 5.现在再将我们的镜像打包并上传到镜像仓库 1.所需实现的具体内容 基于centos基础镜像…