mysql笔记

安装

1、homebrew安装

首先通过homebrew下载mysql

$ brew install mysql
复制代码

下载完成之后通过命令启动mysql

$ mysql.server start
复制代码

如果无报错,说明成功启动,如果出现如下错误:

mysql.server command not found

这个时候在执行

$ brew install mysql
复制代码

会出现如下错误

Warning: mysql-8.01 already installed, it's just not linked

这个时候先依次执行如下命令:

$ sudo chown -R 'username' /usr/local
$ brew link --overwrite mysql
复制代码

看到如下提示,说明link成功了:

Linking /usr/local/Cellar/mysql/8.01... 93 symlinks created

再执行

mysql.server start
复制代码

启动成功!!



2、安装包安装

首先去官网下载安装包 过程像安装一个普通应用,一直下一步

安装完成后在系统偏好设置里面会多出一个mysql按钮,点击-》start MySQL server 启动服务

设置环境变量:

$ vim ~/.bash_profile  
复制代码

添加配置

PATH=$PATH:/usr/local/mysql/bin 
复制代码

设置完毕之后执行:

source ~/.bash_profile  
复制代码

不想每次都执行这一句,可以将其加入到终端配置

vim .zshrc
复制代码

在最后一行添加配置,就不用每次都输入了

source ~/.bash_profile 
复制代码

之后就可以正常的链接数据库了:

mysql -uroot
复制代码

彻底卸载

依次执行如下命令

$ sudo rm /usr/local/mysql
$ sudo rm -rf /usr/local/mysql*
$ sudo rm -rf /Library/StartupItems/MySQLCOM
$ sudo rm -rf /Library/PreferencePanes/My*
$ sudo rm -rf ~/Library/PreferencePanes/My*
$ sudo rm -rf /Library/Receipts/mysql*
$ sudo rm -rf /Library/Receipts/MySQL*
$ sudo rm -rf /var/db/receipts/com.mysql.*
$ sudo rm -rf /usr/local/Cellar/mysql*
$ sudo rm -rf /usr/local/var/mysql*
$ sudo rm -rf /tml/mysql.*
$ sudo rm -rf /tml/my.*
$ sudo rm -rf /tml/mysqlx.*
$ sudo rm -rf /Users/yit/Library/Caches/Homebrew/mysql-8.0.11.sierra.bottle.tar.gz
$ brew cleanup
复制代码

初始化

Mysql安装成功后,默认的root用户密码为空,你可以使用以下命令来创建root用户的密码:

$ mysqladmin -u root password "new_password"
复制代码

链接数据库

$ mysql -u root -h localhost -p new_password
复制代码

语句


insert

插入时给所有字段赋值

valuse的顺序需要和表中一至,主键id可以传为null或者default

$ insert into table values (NULL|DEFAULT,val1,val2,val3)
复制代码

插入时给部分字段赋值

方式1

$ insert into table (key1,key3,key2) values (val1,val3,val2)
复制代码

方式2

$ insert into table set key1='val1',key2='val2'
复制代码

插入多条记录

valuse后可以跟多条数据的值,以逗号分隔

$ insert into table (key1,key3,key2) values (val1,val3,val2),(val11,val32,val22)
复制代码

插入查询结果

将table2中的key2>3的key2集合插入到table

$ insert into table (key1) select key2 from table2 where key2>3
复制代码

update

单表更新

不加条件会更新所有的数据

$ update table set key = val  
复制代码

更新id大于5的数据

$ update table set key = val  where > 5
复制代码

delete语句

单表删除

删除id=5的数据

$ delete from table where id = 3
复制代码

select语句


查询全部

$ select * from table
复制代码

条件查询

$ select * from table where key = 'value'
复制代码

查询部分字段

$ select key1 as key11,key2 from table 
复制代码

分组查询

将查询结果按照key1分组

$ select key1 as key11,key2 from table group by key1   
复制代码

having

将查询结果中key1>10的按照key1分组

$ select key1 as key11,key2 from table group by key1 having key1>10
复制代码

分组的having条件如果是条件形式,判断条件的字段必须包含在select里面,否则报错,例如:

$ select key1 from table group by key1 having key2>10
复制代码

having条件也可以是聚合函数,并且聚合函数中可以出现select没有的字段

$ select key1 from table group by key1 having count(key2)>10
复制代码

order by 默认升序

降序:desc,升序:asc

将查询结果按照id降序排列

$ select key1 from table order by id desc
复制代码

order by可以跟多个字段,例如下面的例子,会先按照key1排序,如果排序不成功就会按照key2排序,以此类推

$ select key1 from table order by key1,key2,key3 asc
复制代码

imit

查询前两条数据

$ select key1 from table limit 2
复制代码

limit可以传两个参数(offset,count),如下查询:从低条开始,查询两条数据(offset从0开始计数)

$ select key1 from table limit 2,2
复制代码

子查询

子查询是指在sql语句中再次使用select子句,子查询一定要包在括号中,例如?:

$ select key1 from table where col1 = (select col2 from table2)
复制代码

any、some、all

有时候子查询返回了多条结果,直接使用会报错,这时候就需要使用关键字any、some、all

any、some:满足查询结果中任意一条 all:满足所有查询结结果,例如:
$ select key1 from table where col1 = any(select col2 from table2)
复制代码

使用原则

运算符anysomeall
> 、>=最小值最小值最大值
<、<=最大值最大值最小值
<、<=任意值任意值
<>、!=任意值

in、not in

in:满足子查询中的任意一条

$ select key1 from table where col1 in (select col2 from table2)
复制代码

not in:不满足子查询中的所有结果

$ select key1 from table where col1 not in (select col2 from table2)
复制代码

批量插入查询的结果

将table1中查询到的结果插入到table2

$ insert table2 set key2 = (select key1 from table1 group by key1) 
复制代码

多表操作

多表更新

将table2和table1通过key1=key2这个条件连接,并且把key1赋值成table2中的id值

$ update table1 inner join table2 on key1 = key2 set key1 = table2_id
复制代码

creat ... select

创建table2,并将table1查询到的结果插入到table2

$ create table table2
> (
> table2_id smallinit unsigned primary auto_increment,
> table2_name
> )
> select key1 from table1 group by key1
复制代码

多表字段名重复

当两张表中字段名重复的时候,可以给表取别名

$ update table1 as tb1 inner join table2 as tb2 on tb1.key1 = tb2.key2 set key1 = table2_id
复制代码

join、inner join 、outer join

inner join:显示符合连接条件的记录

join、outer join(以left join为例):显示左表中全部数据以及右表中符合条件的记录

三张以上表链接

可以进行多张表的链接

$ select * from table1 as tb1 inner join table2 as tb2 on tb1.key = tb2.key inner join table3 as tb3 on tb1.key = tb3.key
复制代码

自连接(场景:无限级分类)

假设有一张分类表menu有3个字段 type_id、type_pid、type_name

创建自连接,可以想象成有两张一模一样的表

$ select p.type_id,p.type_name,s.type_name from menu as s left join menu as p on s.type_pid = p.type_id
复制代码

多表删除

$ delete tb1 from table1 as tb1 left join table2 as tb2 where (tb1.key = 10)
复制代码

运算符和函数

字符函数

table表

id | name | sex
---|---|---
1 | hellosanbao | 男
1 | boomboom | 男
复制代码

concat:拼接查找

查找出name和sex的拼接结果(例如:'hellosanbao-男')

$ select concat(name,'-',sex) from table
复制代码

concat_ws:使用指定字符拼接查找

查找出name和sex的拼接结果(例如:'hellosanbao-男')

$ select concat_ws('-',name,sex) from table
复制代码

format:数字格式化

保留一位小数

$ select format(123.01,1)
复制代码

lower:转小写

$ select lower('MYSQL')
复制代码

upper:转大写

$ select upper('mysql')
复制代码

left:获取左侧字符串

获取 'mysql'的前两位

$ select left('mysql',2)
复制代码

left:获取右侧字符串

获取 'mysql'的后两位

$ select right('mysql',2)
复制代码

函数嵌套

将 'mysql'的后两位转成大写

$ select upper(right('mysql',2))
复制代码

emmmmm,有点多。。不想列了。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值