sql in mac学习记录

news2024/9/23 23:31:31

鉴于有一段时间没有访问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.coloradmin.cn/o/908398.html

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

相关文章

mysql 、sql server trigger 触发器

sql server mySQL create trigger 触发器名称 { before | after } [ insert | update | delete ] on 表名 for each row 触发器执行的语句块## 表名&#xff1a; 表示触发器监控的对象 ## before | after : 表示触发的时间&#xff0c;before : 表示在事件之前触发&am…

cloud_mall-notes02

1、多条件分页查询page ApiOperation("多条件分页查询xxxx")GetMapping("page")PreAuthorize("hasAuthority(模块权限:权限:page)")public ResponseEntity<Page<实体类>> loadxxxxPage(Page<实体类> page,实体类 domain) {pag…

磁盘满了解决办法

磁盘满了解决办法 1.添加硬盘2.查看是否添加成功3.创建分区4.查看卷名5.扩容6.7.8. 1.添加硬盘 2.查看是否添加成功 lsblk注&#xff1a;若没有&#xff0c;需要partprobe刷新或者重启 3.创建分区 fdisk /dev/sdb4.查看卷名 vgdisplay5.扩容 vgextend centos /dev/sdb16. …

Docker安装MySQL、Redis如何自启?

1、问题&#xff1a; Docker自启&#xff1a;http://t.csdn.cn/L2v55 重新启动虚拟机&#xff0c;Docker自动启动之后&#xff0c;发现MySQL、Redis都没有启动。 docker ps 没查到有启动的容器。 docker ps -a 查看所有的容器。 2、先使用 su root 命令&#xff0c;切换到root…

朴实无华的数据增强然后训练一下应用在电网异物检测领域,好像有自己的数据集就能发文了

RCNN-based foreign object detection for securing power transmission lines (RCNN4SPTL) Abstract 本文提出了一种新的深度学习网络——RCNN4SPTL (RCNN -based Foreign Object Detection for Securing Power Transmission lines)&#xff0c;该网络适用于检测输电线路上的…

一个炫酷的头像悬停效果 2

基于上次翻译的 &#x1f525;&#x1f525;一个炫酷的头像悬停效果 收获了不少同学的喜欢&#xff0c;原作者近期进行了优化升级。本文将升级后的核心实现过程进行梳理讲解&#xff0c;如果没看过第一期的推荐先看看第一期的实现过程。升级后的效果如下图所示。 gif动画效果如…

0008Java程序设计-JSP学生成绩管理系统设计与实现

摘 要目录系统实现开发环境 摘 要 随着网络的不断发展&#xff0c;一个好的成绩查询系统&#xff0c;不仅便于学生查询成绩、查询个人信息&#xff0c;而且有利于管理员对学生成绩的统一管理&#xff0c;考试之后学生能及时的对个人信息进行查看&#xff0c;减少了老师和学生之…

高性能MySQL实战(一):表结构 | 京东物流技术团队

最近因需求改动新增了一些数据库表&#xff0c;但是在定义表结构时&#xff0c;具体列属性的选择有些不知其所以然&#xff0c;索引的添加也有遗漏和不规范的地方&#xff0c;所以我打算为创建一个高性能表的过程以实战的形式写一个专题&#xff0c;以此来学习和巩固这些知识。…

09强化学习

强化学习有关词汇 state:对Environment的完整描述 action: 给定环境中所有有效操作的集合&#xff0c;通常称为动作空间 agent:执行action的模型 Environment:代理之外的所有部分。agent可以直接或间接的与之交互的一切&#xff0c;Agent执行操作时&#xff0c;Environment…

BarCodeWiz ActiveX Control Crack

BarCodeWiz ActiveX Control Crack BarcodeWiz ActiveX Control–只需单击按钮即可将所有基本条形码类型添加到Microsoft Office中。在Microsoft Word中&#xff0c;创建单独的条形码、标签页或合并文档。在Microsoft Excel中&#xff0c;选择单元格范围并自动将每个单元格转换…

css的常见伪元素使用

1.first-line 元素首行设置特殊样式。 效果演示&#xff1a; <div class"top"><p>可以使用 "first-line" 伪元素向文本的首行设置特殊样式。<br> 换行内容 </p></div> .top p::first-line {color: red;} 2.first-lette…

每日一题——判断是不是平衡二叉树

题目 输入一棵节点数为 n 二叉树&#xff0c;判断该二叉树是否是平衡二叉树。 在这里&#xff0c;我们只需要考虑其平衡性&#xff0c;不需要考虑其是不是排序二叉树 平衡二叉树&#xff08;Balanced Binary Tree&#xff09;&#xff0c;具有以下性质&#xff1a;它是一棵空树…

华为OD机试真题 Java 实现【通过软盘拷贝文件】【2023 B卷 200分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》…

C++的对象与类的含义

C是一门面向对象的编程语言&#xff0c;理解C需要掌握类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;这两个概念。 C 中的类&#xff08;Class&#xff09;可以看做C语言中结构体&#xff08;Struct&#xff09;的升级版。结构体是一种构造类型&#x…

SQL 盲注

问题描述&#xff1a; 解决方案&#xff1a; 通过建立过滤器方法 添加拦截器&#xff1a; web.xml 文件配置拦截器 <filter><filter-name>sqlFilter</filter-name><filter-class>com.fh.filter.SqlFilter</filter-class></filter> pack…

【链表篇】速刷牛客TOP101 高效刷题指南

文章目录 1、BM1 反转链表2、BM2 链表内指定区间反转3、BM3 链表中的节点每k个一组翻转4、BM4 合并两个排序的链表5、BM5 合并k个已排序的链表6、BM6 判断链表中是否有环7、BM7 链表中环的入口结点8、BM8 链表中倒数最后k个结点9、BM9 删除链表的倒数第n个节点10、BM10 两个链表…

Redis中的有序集合及其底层跳表

前言 本文着重介绍Redis中的有序集合的底层实现中的跳表 有序集合 Sorted Set Redis中的Sorted Set 是一个有序的无重复值的集合&#xff0c;他底层是使用压缩列表和跳表实现的&#xff0c;和Java中的HashMap底层数据结构&#xff08;1.8&#xff09;链表红黑树异曲同工之妙…

派森 #P122. 峰值查找

描述 给定一个长度为n的列表nums&#xff0c;请你找到峰值并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个所在位置即可。 &#xff08;1&#xff09;峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于&#xff1b; &…

ARM体系结构学习笔记:过程调用标准AAPC、 ARM32调用约定、ARM64调用约定

参数传递的本质: 将上层函数变量复制一份, 传给下层函数. 过程调用标准AAPC(Arm Architecture Procedure Call) 有了标准, 才能够进行C调用汇编或者汇编调用C ARM32调用约定 参数是不同位数传参情况, 额外的参数被caller进行入栈, callee进行出栈 寄存器传参 寄存器返回 汇编…

交叉编译相关知识

1、目标板与主机之间的连接&#xff1a; 目标板和主机之间通常可以使用串口、以太网接口、USB接口以及JTAG接口等连接方式。 (1)、串行通信&#xff1a; 串行通信接口常用的有9针串口&#xff08; DB9 &#xff09;和25针串口&#xff08;DB25&#xff09;&#xff0c;通信距…