概述
概念
- 数据库(DB)-数据存储的仓库
- 数据库管理系统(DBMS)-操纵和管理数据库的大型软件
- 数据库系统(DBS)-是由数据库及其管理软件组成的系统。
- SQL-操作关系型数据库的编程语言,是一套标准
MySQL启动与停止
启动
net start mysql80
停止
net stop mysql80
客户端连接
cmd指令
mysql [-h 127.0.0.1] [-P 3306] -u root -p
关系型数据库(RDBMS)
建立在关系模型基础上,由多张相互连接的二维表组成的数据库。
特点:
- 使用表存储数据,格式统一,便于维护
- 使用SQL语言操作,标准统一,使用方便
SQL
数据类型
数值类型:主要是不同大小的整型。
字符串类型:主要理清char(定长字符串)和varchar(变长字符串)的区别。
日期类型:常用DATE,注意日期要写在单引号内部:
类型 | 描述 | 大小 | 格式 | 范围 |
DATE | 日期值 | 3 | YYYY-MM-DD | 1000-01-01至9999-12-31 |
DDL
Data Definition Language | 数据定义语言,用来定义数据对象(数据库,表,字段) |
数据库操作
1.查询所有数据库:SHOW DATABASES;
2.查询当前数据库:SELECT DATABASE();
3.创建:CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARSET 字符集 COLLATE 排序规则;
4.删除:DROP DATABASE IF EXISTS 数据库名;
5.使用:USE 数据库名;
表操作
1.查询当前数据库所有表
SHOW TABLES;
2.查询表结构
DESC 表名;
3.查询指定表的建表语句
SHOW CREATE TABLE 表名;
4.创建表
CREATE TABLE 表名( 字段1 字段1类型[COMMENT 字段1注释], 字段2 字段2类型[COMMENT 字段2注释], 字段3 字段3类型[COMMENT 字段3注释], ...... 字段n 字段n类型[COMMENT 字段n注释] )[COMMENT 表注释];
5.添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释];
6.修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
7.修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释];
8.删除字段
ALTER TABLE 表名 DROP 字段名;
9.修改表名
ALTER TABLE 表名 RENAME TO 新表名;
10.删除表
DROP TABLE [IF EXISTS] 表名;
11.删除指定表,并重新创建该表
TRUNCATE TABLE 表名;
DML
DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增删改操作。
1.给指定字段添加数据:
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...);
2.给全部字段添加数据:
INSERT INTO 表名 VALUES(值1,值2,...);
3.批量添加数据:
INSERT INTO 表名(字段名1,字段名2,...) VALUES(值1,值2,...), (值1,值2,...), (值1,值2,...),...; INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,...),...;
4.修改数据:
UPDATE 表名 SET 字段名1=值1,字段名2=值2,... [WHERE 条件];
5.删除数据:
DELETE FROM 表名 [WHERE 条件];
DQL
DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。
- 基本查询
- 条件查询(WHERE)
- 聚合函数(count、max、min、avg、sum)
- 分组查询(GROUP BY)
- 排序查询(ORDER BY)
- 分页查询(LIMIT)
简单提一些容易忘记的知识点:
1.去除重复记录的关键字:distinct
SELECT DISTINCT 字段列表 FROM 表名;
2.where与having(分组查询关键字)的区别
- 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
- 判断条件不同:where不能对聚合函数进行判断,而having可以。
执行顺序:where > 聚合函数 > having
3.排序查询中:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
4.分页查询:
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
起始索引从0开始,起始索引= (查询页码-1)*每页显示记录数
分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10
5.查询语句编写顺序和执行顺序:
编写顺序:
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
执行顺序:
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
SELECT
字段列表
ORDER BY
排序字段列表
LIMIT
分页参数
DCL
DCL英文全称是Data Control Language(数据控制语言),用来管理数据库用户、控制数据库的访问权限。
1.查询用户
USE mysql; SELECT * FROM user;
2.创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
3.修改用户密码
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
4.删除用户
DROP USER '用户名'@'主机名';
注意:
- 主机名可以使用通配符‘%’。
- 这类SQL开发人员操作得比较少,主要是DBA(Database Administrator 数据库管理员)使用。作简单了解
5.查询权限
SHOW GRANTS FOR '用户名'@'主机名';
6.授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名';
7.撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机名';
注意:
- 多个权限之间,使用逗号分隔
- 授权时,数据库名和表名可以使用*进行通配,代表所有
函数
MySQL数据库——基础篇总结(概述、SQL、函数、约束、多表查询、事务)二:https://developer.aliyun.com/article/1531170