MySql

数据库基础

数据存储方式(从古至今):
1、结婚记事,在石头上刻画
2、文字:纸
3、电脑:内存(易失)
4、电脑:硬盘,文件:无结构,难以操作
5、电脑:xml结构话存储方式,不能存储大量的数据

存储信息的要求:
1、持久化
2、可存储大量的数据
3、可结构化存储
4、可检查数据的正确性

数据库的集中控制优点:
1、降低储存数据的冗余度
2、更高的数据一致性
3、存储的数据可以共享
4、可以建立数据库所遵循的标准
5、便于维护数据完整性
6、能够实现数据的安全性

关系模型:
在这里插入图片描述
数据库知识:
在这里插入图片描述
数据库工具:
在这里插入图片描述
SQL语言:
在这里插入图片描述

数据库引擎:
在这里插入图片描述

数据库对比:
在这里插入图片描述

应用数据库操作

在这里插入图片描述

数据库表操作

在这里插入图片描述
数据类型:
1、整数数据
在这里插入图片描述
2、浮点数
在这里插入图片描述
3、定位数
在这里插入图片描述
例:
在这里插入图片描述

4、字符
在这里插入图片描述
5、二进制
在这里插入图片描述
6、时间
在这里插入图片描述

约束

在这里插入图片描述

CREATE TABLE stu(
 sid int aoto_increament,   -- aoto_increament 自增
 sno int NOT NULL,   -- NOT NULL创建非空约束
 sage UNIQUE,       -- UNIQUE 创建唯一约束
 sname CHAR(5),  -- CHAR固定字符长度
 saddress VARCHAR(15) DEFAULT '西安'  -- VARCHAR可变字符长度,DEFAULT 默认值
)

在这里插入图片描述

数据库设计

在这里插入图片描述

数据库表数据操作

在这里插入图片描述
在这里插入图片描述

-- 创建表
CREATE TABLE stu(
 sno INT,  
 sage INT,       
 sname CHAR(5), 
 saddress VARCHAR(15)  
)

-- 删除表
DROP TABLE stu

-- 多行注释
/*CREATE TABLE cs(
 snumber DECIMAL(6,2)
)*/

-- 添加主键约束
ALTER TABLE scores ADD CONSTRAINT fk_sno FOREIGN KEY(stuN o) REFERENCES;


-- 通过SQL代码完成增删改操作

-- 添加 
INSERT INTO stu(sno,sage,sname,saddress) VALUES(10,22,"NULL","深圳");

-- 添加多行的两种方式
INSERT INTO stu(sno,sage,sname,saddress) SELECT sno,sage,sname,saddress FROM stu1;
INSERT INTO stu VALUES
(10,31,"cd","东莞"),
(11,32,"cs","广州"),
(12,33,"ca","上海");

-- 修改
UPDATE stu SET sage=22 WHERE sname="ca";

-- 删除
DELETE FROM stu
DELETE FROM stu WHERE sname='cs'

-- 基础查询
SELECT * FROM stu
SELECT sno,sname FROM stu
-- 条件查询
SELECT * FROM stu WHERE saddress='上海';   -- 等值条件
SELECT * FROM stu WHERE saddress !='上海';   -- 不等值条件
SELECT * FROM stu WHERE sage < 20;   -- 范围条件
SELECT * FROM stu WHERE sage < 20 AND saddress !='上海';   -- 多条件查询
SELECT * FROM stu WHERE sname="";   -- 为空查询,不能用null
SELECT * FROM stu WHERE sname IS "NULL";   -- NULL条件查询()
SELECT * FROM stu WHERE sage in(22,20);   -- in进行枚举
SELECT * FROM stu WHERE sage BETWEEN 10 AND	20;  -- 包含10与20

-- 模糊查询
SELECT * FROM stu WHERE saddress LIKE'%上%';
SELECT * FROM stu WHERE saddress LIKE'上_';

-- AS取别名,也可以不加AS
SELECT sno AS '学号',sname AS '姓名' FROM stu;
SELECT sno  '学号',sname  '姓名' FROM stu;

-- 分页查询
SELECT * FROM stu LIMIT 2,3;  -- 2为下坐标,从第三页开始,3代表连续3条

-- 去重
SELECT DISTINCT sage FROM stu;

-- 排序查询
SELECT * FROM stu ORDER BY sage ASC;  -- 升序 ,默认为升序
SELECT * FROM stu ORDER BY sage DESC; -- 降序


-- 聚合函数
-- 获取最大值,最小值,平均值,总值
SELECT MAX(sage) '最大年龄',MIN(sage) '最小年龄',AVG(sage) '平均年龄',
SUM(sage) '总年龄' FROM stu;
 
SELECT COUNT(sno) FROM stu;    -- 统计数量

-- 分组
SELECT sno,saddress,MAX(sage) FROM stu GROUP BY saddress;

SELECT sno,MAX(sage) FROM stu GROUP BY saddress HAVING MAX(sage) > 22;

SELECT sno,MAX(sage) FROM stu 
WHERE sage>22
GROUP BY saddress
ORDER BY MAX(sage)
LIMIT 0,2;

-- 查询当前时间
SELECT NOW() FROM DUAL;   -- DUAL 为虚表
SELECT YEAR(NOW()) FROM DUAL;

-- 子查询
SELECT * FROM stu
SELECT sno,saddress,MAX(sage) from stu -- 这样查询出来的结果是错误的 
SELECT sno,saddress from stu WHERE sage=(SELECT MAX(sage) FROM stu)  -- 子查询

SELECT * FROM stu WHERE saddress=(
SELECT saddress from stu WHERE sname='cs1'
);


SELECT * FROM grade WHERE ggrade > any(   -- ANY用法
		SELECT AVG(ggrade) FROM grade 
);

-- 关联查询
SELECT sname,ggrade FROM stu AS s,grade AS g WHERE s.sno = g.gno; 
SELECT sname,ggrade FROM stu AS s INNER JOIN grade AS g ON s.sno = g.gno; -- 内关联

-- 外关联:左关联,右关联
SELECT sname,ggrade FROM stu AS s 
LEFT  JOIN grade AS g ON s.sno = g.gno;  -- 左关联,在join左边的表为坐标

SELECT sname,ggrade FROM stu AS s 
RIGHT JOIN grade AS g ON s.sno = g.gno; -- 右关联,入代码片

高级特性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值