sql in mac学习记录

这篇具有很好参考价值的文章主要介绍了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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

例如

sql in mac学习记录,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');

即可得到如下测试表数据

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

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

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

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

原始数据为

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

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

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sqlsql in mac学习记录,mysql,学习,数据库,经验分享,sql

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

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

三,sql 语句的注释

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

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

sql in mac学习记录,mysql,学习,数据库,经验分享,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;

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

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 属于不明确的值,无法参与比较,所以相应行结果会丢失。

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

例如

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

二, 比较运算符

1,基本的比较运算符

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

大于等于~

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

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

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

注意:如上查询结果是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使用比较运算符

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

 sql in mac学习记录,mysql,学习,数据库,经验分享,sql

 sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

2-3 逻辑运算符

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

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

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

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

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

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

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

1, Not 运算符

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

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

 sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

当然,也可以换成小于

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

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

2, and 运算符和 or 运算符

在实际生活中,我们的查询条件通常都是多个,而非如上示例where 后只有一个条件。sql中可以指定多个查询条件进行数据筛选。

在where 子句中,使用and 运算符或者or运算符,可以多个条件进行组合。And 运算符在其两侧的查询条件都成立时,整个查询条件才成立,意思相当于‘并且’。而or 运算符在其两侧的查询条件有一个成立时即成立,意思相当于‘或者’。

例如,查询价格高于3000元的厨房用具

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

 如果将上述关键字 and 改为 or, 则含义会变成查询厨房用具或者销售单价大于3000的商品

注意:如下增加了一列,用来方便展示问题sql in mac学习记录,mysql,学习,数据库,经验分享,sql

3,通过括号进行条件判断的优先级强化

例如,我们要查询满足如下条件的物品,

'商品种类是办公用品',并且'登记日期是2009年9月11日或者2009年9月20日'

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

如上,表中同时满足上述条件的只有打孔器,

如下,如果我们只是单纯类比上方进行查询,发现结果并非所得,即我们期待是查询出办公类用品,并且日期满足两个可能的条件

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

如上原因就是sql执行的默认优先级是and  高于 or , 所以系统执行 顺序为

(shohin_bunrui = '办公用品‘ and torokubi = '2009-09-11')

or  torokubi = '2009-09-20'

因此,我们需要通过括号来纠正,得到我们预期的逻辑

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

实际上,这个or 连接的两侧可以放在不同行,如上只是更加方便阅读

sql in mac学习记录,mysql,学习,数据库,经验分享,sql

4,逻辑运算符和真值

 对于and, 两侧都真才是真

对于or,  两侧都假才是假

使用and 运算符进行的逻辑运算被称为逻辑积, 使用or运算符进行的逻辑运算符被称为逻辑和

即 真用1表示, 假用0 表示,对1 和0 进行乘积(and 运算) 或者逻辑和(or 运算) 的计算结果

5, 含有null 时的真值

之前算术运算或者比较运算时提到 null 是一种特殊情况,在逻辑运算符中,null 是除了真值( 真或假)之外的第三种值——不确定(unknown). 一般的逻辑运算并不存在这第三种值。sql之外的语言也基本上只使用真和假这两种真值。与通常的逻辑运算被称为二值逻辑想对,只有sql中的逻辑运算被称为三值逻辑。

在and 运算中,真和不确定运算,最终为不确定;如果假和不确定运算,结果为假;如果不确定和 不确定运算,最终为不确定。

在 or 运算中,真和不确定运算,最终为真; 如果假和不确定运算,结果为不确定;不过不确定和不确定运算,结果为不确定。

注意:数据库领域的有识之士们达成了“尽量不使用null” 的共识。 这就是为何在创建表时,给某些列设置 not null 的约束(禁止录入null ) 的原因。

由于该篇记录已经较长,准备新起一篇,也算是给自己一个小小的激励。再见咯咯文章来源地址https://www.toymoban.com/news/detail-662859.html

到了这里,关于sql in mac学习记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 揭示十年数据库经验,告诉你如何轻松应对常见问题(SQL 小虚竹)

    回城传送–》《数据库问题解决方案》 ❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆,51CTO专家博主🏆 ❤️技术活,该赏 ❤

    2023年04月18日
    浏览(57)
  • Mac 系统配置 MySql 数据库

    https://www.aliyundrive.com/s/8tKz92o6FJq 提取码: 3u3q 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。 1.1 双击打开安装包 mysql-8.0.19-macos10.15-x86_64.dmg: 1.2 双击 mysql-8.0.19-macos10.15-x86_64.pkg 运行安装包,并点击 继续 按钮: 1.3 进入

    2024年02月12日
    浏览(46)
  • MySQL去除数据库重复记录

    要从MySQL数据库中删除重复的记录,您可以使用 DELETE 语句结合 GROUP BY 和 HAVING 子句来实现。以下是一个示例: 在上述示例中,您需要将 your_table 替换为您的表名,并将 column1, column2, ... 替换为用于判断重复的列名。这个查询将删除所有重复的记录,只保留每组重复记录中的一

    2024年02月11日
    浏览(64)
  • 数据库应用:MySQL数据库SQL高级语句与操作

    目录 一、理论 1.克隆表与清空表 2.SQL高级语句 3.SQL函数 4.SQL高级操作 5.MySQL中6种常见的约束 二、实验  1.克隆表与清空表 2.SQL高级语句 3.SQL函数 4.SQL高级操作 5.主键表和外键表  三、总结 克隆表:将数据表的数据记录生成到新的表中。 (1)克隆表 ① 先创建再导入 ② 创建

    2024年02月13日
    浏览(81)
  • 数据库问题记录(粗略版)oracle、mysql等主流数据库通用

    1. ORA-00918:未明确定义列 该问题情况大致为:select 所取列名错误、重复等问题。 2. “select * from temp where 1=0; ”的含义 布尔值为FALSE,只返回表结构,不返回数据。 举一反三: select * from temp where 10 , 布尔值为TRUE,返回所有数据记录; select * from temp where 1=0, 暂不清楚是何

    2024年02月07日
    浏览(50)
  • 记录恶意SQL注入引发的RDS只读数据库CPU飚100%

    前言 : 在广州这座城市下着小雨的晚上,我正在厨房洗着碗,突然手机有来电,脱下手套,一看是来自阿里云的告警电话。打开飞书查看告警内容,发现某个业务的RDS只读实例CPU飚到100%,下意识觉得是不是有慢查询导致,想着不会有啥问题,上去kill慢查就好了,结果发现是

    2024年03月19日
    浏览(47)
  • 【MySQL 数据库】7、SQL 优化

    ① 批量插入数据 ② 手动控制事务 ③ 主键顺序插入,性能要高于乱序插入 主键乱序插入 : 8 1 9 21 88 2 4 15 89 5 7 3 主键顺序插入 : 1 2 3 4 5 7 8 9 15 21 88 89 【☆】 】 ① 如果需要一次性插入大批量数据(百万级别),使用 insert 语句插入性能 很低 ② 可使用 MySQL 数据库提供的 loa

    2024年02月08日
    浏览(60)
  • 【MySQL数据库】MySQL 高级SQL 语句一

    ) % :百分号表示零个、一个或多个字符 _ :下划线表示单个字符 ‘A_Z’:所有以 ‘A’ 起头,另一个任何值的字符,且以 ‘Z’ 为结尾的字符串。例如,‘ABZ’ 和 ‘A2Z’ 都符合这一个模式,而 ‘AKKZ’ 并不符合 (因为在 A 和 Z 之间有两个字符,而不是一个字符)。 ‘ABC%’

    2024年02月09日
    浏览(241)
  • MySQL数据库基础(九):SQL约束

    文章目录 SQL约束 一、主键约束 二、非空约束 三、唯一约束 四、默认值约束 五、外键约束(了解) 六、总结 PRIMARY KEY 约束唯一标识数据库表中的每条记录。 主键必须包含唯一的值。 主键列不能包含 NULL 值。 每个表都应该有一个主键,并且每个表只能有一个主键。 遵循原

    2024年02月19日
    浏览(60)
  • MySQL之SQL与数据库简介

    SQL首先是一门高级语言,同其他的C/C++,Java等语言类似,不同的是他是一种结构化查询语言,用户访问和处理数据库的语言,那类似于C语言,SQL也有自己的标准,目前市面上的数据库系统都支持SQL-92标准 SQL这门语言是具有统一性的,但是不同的数据库支持的SQL有略微差别,

    2024年01月23日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包