一 数据库简介
数据库,顾名思义是用来存储数据的仓库。通常把数据库分为:关系型数据库 、 非关系型数据库
关系型数据库:关系型数据库通过外键关联来建立表与表之间的关系,即表与表、字段与字段之间存在找关联; 非关系型数据库:非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性
二 MYSQL 常用SQL关键字
- SELECT:从数据库中获取数据。
- FROM:指定查询的表格名称。
- WHERE:设置查询条件。
- INSERT:向数据库插入新数据。
- UPDATE:更新数据库表格中已有的记录。
- DELETE:删除数据库表格中的记录。
- CREATE:创建新表格、存储过程、函数、索引等。
- ALTER:修改已有的数据库对象,如修改表格的列名等。
- DROP:删除已有的数据库对象。
- LIKE:用于查询符合特定模式的数据。
- IN:表示一个数据是否在另一个数据列表中。
- UNION:将两个或多个 SELECT 语句的结果合并到一起。
- ORDER BY:按照指定列对数据进行排序。
- GROUP BY:按照指定列对数据进行分组。
- COUNT:统计行数。
- AVG:求平均值。
- MAX:求最大值。
- MIN:求最小值。
三 MYSQL基本语句
1.DDL语句
1.创建数据库
create database 数据库名
2.打开数据库
use 数据库名
3. 创建表
CREATE TABLE 表名 (
列名1 数据类型,
列名2 数据类型,
.....
);
4.修改表结构
AKTER [datebase/schema] 数据库名 /*修改数据库名*/
ALTER [IGNORE] TABLE 表名
ADD [COLUMN] 列名 [FIRST| AFTER 列名] /*添加列*/
ALTER [COLUMN] 列名
{SET DEFAULT 默认值} DROP DEFAULT /*修改默认值*/
CHANGE [COLUMN] 旧列名 列定义 /*对列重命名*/
[FIRST|AFTER 列名]
MOIFY [COLUMN] 定义列 [FIRST | AFTER 列名] /*修改列类型*/
DROP [COLUMN] 列名 /*删除列*/
RENAME [TO] 新表名 /*重命名该表*/
5.删除表
DROP TABLE [IF EXTISTS] 表名1 [表名2]....
说明:
IF EXISTS:避免要删除的表不存在出现错误信息
约束
约束是用于定义表格数据列(字段)的限制条件的一种机制。
SQL语句中常用约束
- 主键约束:PRIMARY KEY 设置列为主键,保证唯一性和非空性。
- 非空约束:NOT NULL 设置列不允许为空值。
- 唯一约束:UNIQUE 设置列值不能重复。
- 外键约束:FOREIGN KEY 创建一个到另一个表格的外键约束,
主键约束
主键约束是在 MySQL 数据库中定义表格的一种约束,用于唯一标识表格中的每一条记录
可以使用 AUTO_INCREMENT 关键字来自动在每次插入新行时生成唯一的主键值
实例如下:
CREATE TABLE Students (
ID INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(50),
Age INT,
Gender CHAR(1)
);
外键约束
用于确保关系型数据库中不同表格之间关联数据的完整性和正确性。
实例如下:
CREATE TABLE Customers (
CustomerID INT PRIMARY KEY,
CustomerName VARCHAR(50),
CustomerAddress VARCHAR(255)
);
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
OrderDate DATE,
CustomerID INT,
ProductID INT,
FOREIGN KEY (CustomerID, ProductID)
REFERENCES Customers(CustomerID, ProductID)
);
DML语句
1.插入数据
INSERT INTO 表 (字段1 字段2, 字段3, ...)
VALUES (值1, 值2, 值3, ...); /*注意,插入时要一一对应*/
2.修改数据
UPDATE 表名
SET 列名1 = 值1, 值2 = 值2, ...
WHERE 条件;
3.删除数据
DELETE FROM 表名
WHERE 条件;
DQL语句
1.简单查询
全表查询
SELECT * FROM 表名
查询一个字段
SELECT 字段 FROM 表名
2. 条件查询
SELECT 字段 FROM 表明
WHERE 条件
数据排序
1.升序
SELECT 字段名 FROM 表名 ORDER BY 字段 ASC
/*若是升序ASC可以省略。因为默认就是升序*/
2.降序
SELECT 字段名 FROM 表名 ORDER BY 字段名 DESC;
连接查询
分类
内连接
1.等值连接
2.非等值连接
3.自连接
外连接
1.左连接
2.右连接
内连接
SELECT 字段1, 字段2, ... FROM 表1
INNER JOIN 表2 ON 表1.字段名 = 表2.字段名;
左连接
SELECT 表1.字段1, 表1.字段2, ..., 表2.字段1, 表2.字段2, ...
FROM 表1
LEFT JOIN 表2
ON 表1.字段名 = 表2.字段名;
右连接
SELECT 表1.字段1, 表1.字段2, ..., 表2.字段1, 表2.字段2, ...
FROM 表1
RIGHT JOIN 表2
ON 表1.字段名 = 表2.字段名;
limit子句
LIMIT 偏移量,行数|行数 OFFSET 偏移量
说明:语法中的偏移量和行数必须是非负的整数常数
分组查询
GROUP BY 后面加列名或者表达式,有having就一定有GROUP BY,有GROUP BY 不一定有having
常用聚合函数
函数名 | 说明 |
---|---|
COUNT | 统计指定列中非 NULL 值的数量 |
SUM | 计算指定列中数值类型数据的总和 |
AVG | 计算指定列中数值类型数据的平均值 |
MAX | 找出指定列中的最大值 |
MIN | 找出指定列中的最小值 |
视图
视图是从一个或者多个表(或视图)导出的虚拟表,不进行实际存储
1.创建视图
CREATE VIEW 视图名 列名列表
2.查询视图
SELECT 列名1 列名2
FROM 视图名
数据库安全
数据库安全包括,数据库账户权限管理,数据加密,数据库备份和恢复,数据库审计,安全更新补丁。