MySQL - 速查&笔记

数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库

关系型数据库

建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据

关系数据库管理系统(Relational Database Management System)的特点:

  • 1.数据以表格的形式出现
  • 2.每行为各种记录名称
  • 3.每列为记录名称所对应的数据域
  • 4.许多的行和列组成一张表单
  • 5.若干的表单组成 Database

连接数据库

# 启动数据库
➜ brew services start mysql
# 关闭数据库
➜ brew services stop mysql
# 登录数据库
➜ mysql -u root -p  
Enter password: ******
# 退出数据库
mysql> exit
Bye

MySQL基础

数据库操作(DDL)

1、创建数据库
CREATE DATABASE [IF NOT EXISTS] `db_name` [[DEFAULT] CHARACTER [=] `charset_name`]
2、查看当前服务器下的数据库列表
SHOW DATABASES
3、查看指定数据库的定义
SHOW CREATE DATABASE `db_name`
4、修改指定数据库的编码方式
ALTER DATABASE `db_name` [DEFAULT] CHARACTER SET [=] `charset_name`
5、打开指定数据库
USE `db_name`
6、删除指定数据库
DROP DATABASE [IF EXISTS] `db_name`
7、显示当前打开的数据库名称
SELECT DATABASE()
8、查看上一步操作产生的警告信息
SHOW WARNINGS;

数据表的的操作

1、什么是表?
  • 数据表示数据库最重要的组成部分之一,是其他对象的基础
  • 数据表是存储数据的数据结构
  • 数据表由行(row)和 列(column)构成的二维网络
  • 数据表一定先有表结构,再有数据
  • 数据表至少有一列,可以没有行或者多行
  • 数据表名称要求唯一,而且不要包含特殊字符
2、如何创建数据表
CREATE TABLE [IF NOT EXISTS] table_name(字段名称 字段类型 [完整性约束条件] ...) 
ENGINE=引擎名称 CHARSET='编码方式';

完整性约束条件

  • PRIMARY KEY 主键
  • AUTO_INCREMENT自增长
  • FOREIGN KEY 外键
  • NOT NULL 非空
  • DEFAULT 默认值
  • UNIQUE 唯一
3、查看数据库中的数据表以及表结构
# 查看数据库下的表
SHOW TABLES

# 查看指定表的表结构
DESC table_name

DESCRIBE table_name

SHOW COLUMNS FROM table_name
4、修改表结构

修改表名

ALTER TABLE table_name RENAME [TO | AS] new_name

添加字段

ALTER TABLE table_name ADD 字段名称  字段类型 [完整性约束条件] [FIRST | AFTER] 字段名称

删除字段

ALTER TABLE table_name DROP 字段名称

修改字段

ALTER TABLE table_name MODIFY 字段名称 字段类型 [完整性约束条件] [FIRST | AFTER] 字段名称

修改字段名称

ALTER TABLE table_name CHANGE 旧字段名称 新字段名称 字段类型 [完整性约束条件] [FIRST | AFTER] 字段名称

添加默认值

ALTER TABLE table_name ALTER 字段名称 SET DEFAULT 默认值

删除默认值

ALTER TABLE table_name ALTER 字段名称 DROP DEFAULT

修改表的存储引擎

ALTER TABLE table_name ENGINE=存储引擎名称

设置自增长的值

ALTER TABLE table_name AUTO_INCREMENT=值
5、删除数据表
DROP TABLE [IF EXISTS] table_name [, table_name...]

数据的操作(DML)

1、插入数据
# 不指定具体的字段名
INSERT [INTO] table_name VALUES | VALUE(值...)

# 列出指定字段
INSERT [INTO] table_name(字段名称1...) VALUES | VALUE(值1...)

# 同时出入多条记录
INSERT [INTO] table_name[(字段名称...)] VALUES(值...), (值...)...

# 通过SET 形式插入记录
INSERT [INTO] table_name SET 字段名称=值,...

# 将查询结果插入到表中
INSERT [INTO] table_name[(字段名称, ...)] SELECT 字段名称 FROM table_name
[WHERE 条件]
2、更新数据
UPDATE table_name SET 字段名称=值, ... 
[WHERE 条件]
[ORDER BY 字段名称]
[LIMIT 限制条数]
3、删除数据
DELETE FROM table_name 
[WHERE 条件] 
[ORDER BY 字段名称] 
[LIMIT 限制条件]

# 彻底清空数据表
TRUNCATE [TABLE] table_name

查询数据操作(DQL)

1、查询记录

每一个表达式表示想要的一列,必须至少有一列,多个列之间用逗号分隔
* 表示所有列, table_name.* 可以表示命名表的所有列
查询表达式可以使用 [AS] alias_name 为其赋予别名

查询表达式

简单版

SELECT column_name [,column_name | *] FROM table_name 
[WHERE Clause] 
[LIMIT N]
[ OFFSET M]

完整版

SELECT select_expr [, select_expr ...] 
[FROM table_name
[WHERE 条件] 
[GROUP BY { col_name | position } [ASC | DESC], ... 分组] 
[HAVING 条件 对分组结果进行二次筛选]
[ORDER BY {col_name | position} [ASC | DESC], ...排序] 
[LIMIT 限制显示条数]
]
2、WHERE 条件

WHERE 子句添加到 SELECT 语句中, 可以有条件地从表中选取数据

SELECT field1 [, field2,...fieldN] FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
3、查询结果分组
SELECT column_name [, function(column_name)]
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
  • 配合 GROUP_CONCAT() 得到分组详情
  • 配合聚合函数
    • 计算数量:COUNT()
    • 求最大值:MAX()
    • 求最小值:MIN()
    • 求平均值:AVG()
    • 求和: SUM()
  • 配合WITH ROLLUP 记录上面所有记录的总和
4、HAVING 子句

通过 HAVING 子句对分组结果进行二次筛选

SELECT column_name [, function(column_name)]
FROM table_name
WHERE column_name operator value
HAVING conditions;
5、ORDER BY排序

通过 ORDER BY 对查询结果排序

SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]
6、LIMIT限制查询结果显示条数

LIMIT 显示条数 / LIMIT 偏移量,显示条数

SELECT column_name [, function(column_name)]
FROM table_name
WHERE column_name operator value
LIMIT [offset_count,] limit_count;
7、正则表达式
SELECT column_name FROM table_name WHERE column_name REGEXP '正则表达式';

常见REGEXP 操作符

模式描述
^匹配以什么字符串的开始,例如:^A 表示以A开头
$匹配以什么字符串的结尾,例如:8$ 表示以8结尾
.匹配除 “\n” 之外的任何单个字符
[...]字符集合, 匹配所包含的任意一个字符
[^...]负值字符集合, 匹配未包含的任意字符
p1 | p2 | p3匹配 p1 或 p2 或 p3
*匹配前面的子表达式零次或多次, 例如,go* 能匹配 “g” 以及 “goo”
+匹配前面的子表达式一次或多次。例如,‘go+’ 能匹配 “go” 以及 “goo”,但不能匹配 “g”
{n}n 是一个非负整数。匹配确定的 n 次
{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值