数据库基础
数据存储方式(从古至今):
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; -- 右关联,入代码片