安装
版本: Mysql 8.0
OS: centos 7
下载源
https://dev.mysql.com/downloads/repo/yum/
sh
wget https://dev.mysql.com/get/mysql80-community-release-fc36-1.noarch.rpm
安装源
sh
rpm -Uvh mysql80-community-release-fc36-1.noarch.rpm
查看 Mysql 相关资源
sh
yum repolist enabled | grep "mysql.*-community.*"
# 输出
# !mysql-connectors-community/x86_64 MySQL Connectors Community 206
# !mysql-tools-community/x86_64 MySQL Tools Community 94
# !mysql80-community/x86_64 MySQL 8.0 Community Server 367
切换版本
默认开启的是 MySQL 8.0 Community Server
sh
yum repolist all | grep mysql
# 输出
# mysql-cluster-7.5-community/x86_64 MySQL Cluster 7.5 Communit disabled
# mysql-cluster-7.5-community-source MySQL Cluster 7.5 Communit disabled
# mysql-cluster-7.6-community/x86_64 MySQL Cluster 7.6 Communit disabled
# mysql-cluster-7.6-community-source MySQL Cluster 7.6 Communit disabled
# mysql-cluster-8.0-community/x86_64 MySQL Cluster 8.0 Communit disabled
# mysql-cluster-8.0-community-source MySQL Cluster 8.0 Communit disabled
# !mysql-connectors-community/x86_64 MySQL Connectors Community enabled: 206
# mysql-connectors-community-source MySQL Connectors Community disabled
# !mysql-tools-community/x86_64 MySQL Tools Community enabled: 94
# mysql-tools-community-source MySQL Tools Community - So disabled
# mysql-tools-preview/x86_64 MySQL Tools Preview disabled
# mysql-tools-preview-source MySQL Tools Preview - Sour disabled
# mysql55-community/x86_64 MySQL 5.5 Community Server disabled
# mysql55-community-source MySQL 5.5 Community Server disabled
# mysql56-community/x86_64 MySQL 5.6 Community Server disabled
# mysql56-community-source MySQL 5.6 Community Server disabled
# mysql57-community/x86_64 MySQL 5.7 Community Server disabled
# mysql57-community-source MySQL 5.7 Community Server disabled
# !mysql80-community/x86_64 MySQL 8.0 Community Server enabled: 367
# mysql80-community-source MySQL 8.0 Community Server disabled
yum 安装 Mysql
sh
# 安装
yum install mysql-community-server
# 启动
systemctl start mysqld
# 开启自启
systemctl enable mysqld
修改密码
sh
# 查看临时密码
grep 'temporary password' /var/log/mysqld.log
ALTER USER '用户'@'host' IDENTIFIED BY '新密码'
flush privileges
查询
SELECT
表结构编辑
ADD COLUMN
添加表列
sql
ALTER TABLE user
ADD COLUMN age int not NULL after name
CHANGE COLUMN
修改表列
sql
ALTER TABLE user
CHANGE name1 name VARCHAR(255)
DELETE COLUMN
删除表列
sql
ALTER TABLE user
DROP COLUMN name;
数据更新
UPDATE
批量修改时间,统一 +8 小时
sql
update stat set createdAt = DATE_ADD(createdAt, INTERVAL 8 HOUR);
连接
join
内连接, 获取两个表字段匹配关系的记录
left join
左连接, 列出左表所有记录,即使右表没有匹配
举个简单的例子,文章表跟用户表,文章表存的用户信息是用户 id ,但是想查出对应的用户名称,就可以使用左连接
sql
SELECT article.id, article.title, user.name from article left join user on article.user_id = user.id
条件
NOT IN
LIMIT
限定返回行数
查询用户并限定结果为 10 行
sql
SELECT name from user LIMIT 10
DISTINCT
检索不同的行, 去重匹配, 有多个列时, 多个列都相同才会被过滤
查用户, 过滤名字和年龄相同的用户
sql
SELECT DISTINCT name, age from user
Group By
IS NULL 和 IS NOT NULL
对于 NULL 字段 需要使用 IS NULL 和 IS NOT NULL 判断
比如 有些 name 字段为 NULL 时
sql
SELECT name from user where name!='张三' or name IS NULL
Order By
排序默认升序(ASC)排序
查询用户 以年龄降序排序
sql
SELECT name from user Order By age DESC
IFNULL
用于判断一个表达式是否为 NULL, 如果是 NULL 则返回第二个参数的值
sql
SELECT IFNULL((SELECT name from user LIMIT 1), 'xjq')