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 运算符

 

 

 

 

 

 

 

 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入理解ForkJoin

任务类型 线程池执行的任务可以分为两种&#xff1a;CPU密集型任务和IO密集型任务。在实际的业务场景中&#xff0c;我们需要根据任务的类型来选择对应的策略&#xff0c;最终达到充分并合理地使用CPU和内存等资源&#xff0c;最大限度地提高程序性能的目的。 CPU密集型任务 …

基于springboot+vue的食材商城(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

Word怎么转换成PDF文档?多个Word转换成PDF步骤分享

word文档是一种非常好用的文件格式&#xff0c;可以帮助用户们很好的保存图片和文字内容&#xff0c;不过并不是只有word这一种文档类文件格式&#xff0c;还有一种pdf文档也深受用户们的欢迎&#xff0c;在工作或者学习过程中这两种文档是可以互相转换格式的&#xff0c;那么W…

分类预测 | MATLAB实现NGO-DBN北方苍鹰优化深度置信网络多特征输入分类预测

分类预测 | MATLAB实现NGO-DBN北方苍鹰优化深度置信网络多特征输入分类预测 目录 分类预测 | MATLAB实现NGO-DBN北方苍鹰优化深度置信网络多特征输入分类预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 MATLAB实现NGO-DBN北方苍鹰优化深度置信网络多特征输入…

options补充

前言 .NET Core 引入了Options模式&#xff0c;使用强类型的类来表达配置项&#xff0c;提供了三种在不同场景下的使用接口&#xff1a; IOptions IOptionsSnapshot IOptionsMonitor 但是常常不知道什么时候使用哪种方式才最合适&#xff0c;接下来我就用代码详细解读一下三种…

QT VS编译环境无法打开包括文件type_traits

这问题&#xff0c;别人给的处理方法都是&#xff1a; 添加环境变量执行vsvars32.bat/vcvarsall.bat/vsdevcmd.bat重新安装QT项目&#xff1a;执行qmake。。。。 个人不推荐配置环境编译&#xff0c;除非你非常熟&#xff0c;因为配置环境变量需要你知道有哪些路径需要添加&a…

Linux学习之ftp安装、vsftpd安装和使用

ftp需要两个端口&#xff1a; 数据端口 命令端口 ftp有两种模式&#xff1a; 被动模式&#xff1a;建立命令连接之后&#xff0c;服务器等待客户端发起请求。 主动模式&#xff1a;建立命令连接之后&#xff0c;服务器主动向客户端发起数据连接&#xff0c;因为客户端可能有防火…

iOS 17 正式版预计 9 月中下旬发布,部分新功能延后推出

苹果公司预计将在 9 月中下旬推出 iOS 17 正式版&#xff0c;iPhone XS 及更新的机型可免费更新。这次更新包含了许多新功能&#xff0c;但是根据苹果公司的网站显示&#xff0c;并不是所有的功能都会立即可用。苹果表示有一些功能“将在今年晚些时候推出”&#xff0c;比如&am…

STM32F4X 定时器中断

STM32F4X 定时器中断 什么是定时器STM32F4X 定时器分类有关定时器的概念预分频(PSC)自动重装载值(ARR) STM32F4X定时器例程定时器相关函数定时器例程 什么是定时器 定时器(Timer)最基本的功能就是定时&#xff0c;比如定时翻转LED灯&#xff0c;定时向串口发送数据等。除此之外…

webpack 和 ts 简单配置及使用

如何使用webpack 与 ts结合使用 新建项目 &#xff0c;执行项目初始化 npm init -y会生成 {"name": "tsdemo01","version": "1.0.0","description": "","main": "index.js","scripts&…

2019年3月全国计算机等级考试真题(C语言二级)

2019年3月全国计算机等级考试真题&#xff08;C语言二级&#xff09; 第1题 负责数据库中查询操作的数据库语言是 A. 数据定义语言 B. 数据管理语言 C. 数据操纵语言 D. 数据控制语言 正确答案&#xff1a;C 第2题 有关系如下图所示&#xff0c;其违反了哪一类完整性约束 …

MetaMask Mobile +Chrome DevTools 调试Web3应用教程

注&#xff1a;本教程来源网络&#xff0c;有兴趣的可以直接到这里查看。 写好了WEB3应用&#xff0c;在本地调试用得好好的&#xff0c;但是用钱包软件访问就报莫名的错&#xff0c;但是又不知道是什么原因&#xff0c;排查的过程非常浪费时间 。 因此在本地同一局域网进行调试…

vite初始化vue3项目(配置自动格式化工具与git提交规范工具)

初始化项目 vite构建vue项目还是比较简单的&#xff0c;简单配置选择一下就行了 初始化命令 npm init vuelatest初始化最新版本vue项目 2. 基本选项含义 Add TypeScript 是否添加TSADD JSX是否支持JSXADD Vue Router是否添加Vue Router路由管理工具ADD Pinia 是否添加pinia…

用最简单的方式带你了解 MOS 管的七大封装类型

在制作 MOS 管之后&#xff0c;需要给 MOS 管芯片加上一个外壳&#xff0c;这就是 MOS 管封装。MOS 管封装不仅起着支撑、保护和冷却的作用&#xff0c;同时还可以为芯片提供电气连接和隔离&#xff0c;从而将管器件与其他元件构成完整的电路。为了更好地应用 MOS 管&#xff0…

微信小程序纯前端从阿里云OSS下载json数据-完整版

起因 因为云开发开始收费(貌似很久了),准备改造在以前的小程序,数据转到oss上,小程序使用原生,不算专业领域, 所以先百度.... 网上的教程真的是千篇一律,大部分开局就是require(ali-oss); 好点的npm install ali-oss --save开局,拼凑操作到最后发现要用云开发,因为云…

【UML】详解UML类图

目录 1.概述 2.权限 3.关系 3.1.连线关系 3.2.依赖 3.3.泛化&#xff08;继承&#xff09; 3.4.实现 3.5.关联 3.6.聚合 3.7.组合 1.概述 UML是什么&#xff1f;书面化一点的说法是&#xff1a; UML&#xff08;Unified Modeling Language&#xff09;&#xff0c;…

实战:JVM调优命令工具

1、查看堆内存每个对象的信息 jmap -histo 12719 输出文件 jmap -histo 12719 > ./log.txt num: 序号 instances: 实例个数 bytes: 占用空间大小 class name: 类名称 2、查看堆内存信息 jmap -heap 12719 Heap Configuration: 分配的内存空间大小 Heap Usage: 使用的堆内存…

C#工程建立后修改工程文件名与命名空间

使用之前的项目做二次开发&#xff0c;项目快结束的时候&#xff0c;需要把主项目的名称修改成我们想要的。 之前从来没有这么干过&#xff0c;记录一下。 步骤如下&#xff1a; 1&#xff1a;打开vs2010项目解决方案&#xff0c;重命名&#xff0c;如下图所示&#xff1a; …

对类加载过程的通俗理解

开局一张图 一般来说&#xff0c;类加载分为&#xff1a;加载、验证、准备、解析、初始化 5个步骤。 各阶段略叙 1、加载 将.class文件加载进内存 2、验证 判断.class文件的格式是否正确 3、准备 为类的静态变量分配内存并设置初始值。只有b、c会在此阶段进行处理。 //…

麦肯锡发布《2023年度科技报告》!

在经历了 2022 年技术投资和人才的动荡之后&#xff0c;2023 年上半年&#xff0c;人们对技术促进商业和社会进步的潜力重新燃起了热情。生成式人工智能&#xff08;Generative AI&#xff09;在这一复兴过程中功不可没&#xff0c;但它只是众多进步中的一个&#xff0c;可以推…