mySql学习记录

56 阅读4分钟

学习指导

MAC安装MySQL

学习路线

入门

mac安装

dev.mysql.com/downloads/m…

image.png

image.png

下载完包后,双击打开安装即可,安装完成后,看是否一切正常。

image.png

终端配置路径,方便在终端任何地方调用mysql

  • 打开文件:open ~/.bash_profile

  • 加入语句:PATH=$PATH:/usr/local/mysql/bin

  • 使配置的语句生效:source ~/.bash_profile

最后,打开终端,输入mysql -uroot -p 输入密码后成功登录。

image.png

常用指令

命令大全

登录

# 根用户登录
mysql -u root -p
# 其他用户登录
mysql -u 用户名称 -p

数据库

# 创建
CREATE DATABASE 数据库名;

# 查看数据库列表
SHOW DATABASES;

# 选择数据库
use 数据库名;

创建表

# 创建表
# AUTO_INCREMENT 关键字用于创建一个自增长的列,PRIMARY KEY 用于定义主键。
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    birthdate DATE,
    is_active BOOLEAN DEFAULT TRUE
);

修改表名

ALTER TABLE 旧表名
RENAME TO 新表名;

查看表结构

desc 表名称

删除表

DROP TABLE IF EXISTS 表名称;

新增一列

ALTER TABLE 表名
ADD COLUMN 列名称 数据类型;

修改列数据类型

ALTER TABLE 表名
MODIFY COLUMN 列名称 数据类型;

修改列名

ALTER TABLE 表名
CHANGE COLUMN 旧列名称 新列名称 数据类型;

删除列

ALTER TABLE 表名
DROP COLUMN 列名称;

查看所有表

show tables;

复制表

# 先获取创建表的代码
SHOW CREATE TABLE 被复制表名 \G;
# copy对应代码
# 粘贴并修改表名
# 执行插入语句,获取被复制表的所有数据
INSERT INTO 复制表名 (column1,column2)
SELECT column1,column2 from 被复制表名 

表内容的增删改查

# 如果插入重复的主键值,则报错
INSERT INTO 表名称 (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

# 如果插入重复的主键值,则警告,不更新数据
INSERT IGNORE INTO 表名称 (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

# 如果插入重复的主键值,则更新数据重复主键
REPLACE INTO 表名称 (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
删除
DELETE FROM 表名称
WHERE 条件;
修改
UPDATE table_name
SET column1 = 某个值, column2 = 某个值
WHERE 条件;
select * from 表名称;

WHERE 条件;

WHERE column1 LIKE 某个值; # 模糊查询
WHERE column1 IS NULL; # 查询值为null
WHERE column1 IS NOT NULL; # 查询值为null
WHERE column1 REGEXP '正则表达式'; # 查询值符合正则表达式

union 两表去重查询

select 列名称需相同 from 表名称1
union
select 列名称需相同 from 表名称2;

数据排序ORDER BY

## ASC升序
ORDER BY column1 ASC;

## DESC降序
ORDER BY column1 DESC;

## 先按column1升序,再按column2降序
ORDER BY column1 ASC, column2 DESC;

数据汇总GROUP BY, 汇总函数COUNT, SUM, AVG,column2的数据类型为数字

SELECT column1, 汇总函数(column2) as 汇总名称
FROM 表名
WHERE 条件
GROUP BY column1;
## 场景:统计商品名称(column1)中每种商品一共卖了多少钱

过滤重复数据GROUP BY

SELECT column1,column2,column3
FROM 表名
GROUP BY (column1,column2,column3);

多表查询

## INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
SELECT 表1.column1, 表2.column2
FROM 表1
INNER JOIN 表2 ON 表1.column3 = 表2.column3;
## LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
## RIGHT JOIN(右连接):与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

查询优化(索引),通过建立索引,暂定

CREATE INDEX index_name
ON table_name (column1 [ASC|DESC], column2 [ASC|DESC], ...);

主键与外键

主键:是表中的一个列或列的组合,它的值能唯一标识表中的每一行。多个主键列则代表用 主键1 + 主键2来做唯一标识。

外键:用户将两个表链接在一起的键

user表

uidsexage
1223
2224
3225

order表

orderIduidamount
1123
2324
3125
  • uid为user表的主键
  • orderId为order表的主键
  • 而order表中的uid列则为order表的外键啦

导入与导出数据

www.runoob.com/mysql/mysql…

导出数据库

mysqldump -u username -p password -h hostname database_name > output_file.sql

www.runoob.com/mysql/mysql…

导入数据库

mysql -uroot -p123456 < runoob.sql