1:MySql基础
1:数据库概述/SQL分类
1:关系型数据库概述
2:SQL分类和通用语法
2:DDL
1:DDL_操作数据库
2:DDL_操作表_查询
show TABLES;//显示库里所有表
DESC 表名字;//显示表的详细信息
3:DDL_操作表_创建表
1:创建表的格式
CREATE TABLE goods (
id INT,
name VARCHAR(10),
price DOUBLE(4,2),
miaoshu VARCHAR(10),
bir DATE
);
2:表中列名的数据类型
CREATE DATABASE db2; -- 创建数据库db2
USE db2; -- 使用数据库
CREATE TABLE Student( -- 创建表Student
id int,
name VARCHAR(10),
score DOUBLE(4,1),
birthday DATE
);
4:DDL_操作表_删除
5:DDL_操作表_修改/删除(列)
-- 修改表
-- 1:修改表名
ALTER TABLE Student RENAME TO Student1;
--show TABLES;
-- 2:向Studnet1表里增加一列
ALTER Table Student1 Add address VARCHAR(10);
DESC Student1;
-- 3:修改name列的数据类型为varchar(5)
ALTER TABLE Student1 MODIFY name VARCHAR(5);
DESC Student1;
-- 4:修改列名和数据类型
ALTER Table Student1 CHANGE birthday bir date;
DESC Student1;
-- 5:删除列
ALTER TABLE Student1 DROP address;
DESC Student1;
2:DML
1:DML_操作数据_添加
-- 表里插入数据
-- 1:给指定的列添加数据
INSERT INTO Student1(id,NAME,score,bir) VALUES(1,'王慧天',20.2,'2021-11-11');
SELECT * FROM Student1; -- 查询表里的数据
-- 2:给全部列添加数据
INSERT INTO Student1 VALUES(2,'王丹',100,'2021-11-12');
SELECT * FROM Student1;
-- 3:给指定的列添加数据
INSERT INTO Student1(id,name,bir) VALUES(3,'张三','2021-11-13');
SELECT * FROM Student1;
SELECT * FROM Student1 WHERE id = 2;
2:DML_操作数据_修改删除
- 修改指定列中的数据
- 删除数据
-- 修改表中某列的数据
SELECT * FROM Student1;
-- 修改表中的数据,最重要的注意事项是必须有条件,否则全改!!!
UPDATE Student1 SET name='王四',score = 21.2 WHERE id = 3;
SELECT * from Student1;
-- 删除表中某列某个数据
DELETE FROM Student1 WHERE name = '王四';
SELECT * FROM Student1;
3:DQL(列名就是字段)
1:DQL_基础查询
-- DQL基础查询语句
SELECT * from Student1;
-- 查询name,id,age列
SELECT id,name,score FROM Student1;
-- 去重查询.
-- DISTINCT可以去重,但是要求查询的所有列值都相同才算重复
SELECT DISTINCT id,name,bir FROM Student1;
-- 起别名查询.可以使用as,也可以不使用as,但是需要加空格
SELECT DISTINCT id as 编号,name 姓名,score 成绩,bir FROM Student1;
3:DQL_条件查询-模糊查询
- 条件查询:
- 模糊查询
4:DQL_排序查询
5:DQL_聚合函数
6:DQL-分组查询
7:DQL-分页查询
2:MySQL高级
1:约束
1:概述和分类
2:外键约束
2:数据库设计
1:简介
2:多表关系实现
1:一对一
2:一对多
3:多对多
-- 创建一个多表
-- 创建主表餐厅
CREATE TABLE restrant(
rid int PRIMARY key auto_increment,
rname VARCHAR(20) NOT null,
loc VARCHAR(20)
);
-- 创建主表菜谱
CREATE TABLE dish(
did int PRIMARY KEY auto_increment,
dname VARCHAR(30) not NULL
);
-- 创建中间表,关联餐厅和菜谱两张表
CREATE TABLE restrant_dish(
rid int,
did int,
price DOUBLE(6,2),
FOREIGN KEY (rid) REFERENCES restrant(rid),
FOREIGN KEY (rid) REFERENCES dish(did),
PRIMARY KEY(rid,did) -- 将两列设置成主键,避免重复
);
-- 给餐厅赋值
INSERT into restrant VALUES
(null,'沙县小吃','慈航路101号'),
(null,'东北虎','慈航路102号'),
(null,'张师傅','慈航路103号');
-- 给菜谱赋值
INSERT INTO dish VALUES
(null,'酸辣土豆丝'),
(null,'蒸饺'),
(null,'大盘鸡'),
(null,'锅包肉'),
(null,'红烧茄子');
-- 中间表赋值
INSERT INTO restrant_dish VALUES
(1,2,12),
(1,3,45),
(1,5,16),
(2,1,8),
(2,4,31),
(3,2,14),
(3,3,55),
(3,5,13);
-- 删除表
DROP TABLE restrant_dish;
3:案例
3:多表查询
1:简介
2:内连接
-- 多表查询
-- 查询餐厅所有的菜谱
-- 1:显示内连接
SELECT
*
FROM
restrant t1
INNER JOIN
restrant_dish t2
on
t1.rid = t2.rid
INNER JOIN
dish t3
ON
t2.did = t3.did;
=======================================
-- 2:隐式内连接
SELECT
*
FROM
restrant t1,
restrant_dish t2,
dish t3
WHERE
t1.rid = t2.rid AND
t2.did = t3.did;
3:外连接
-- 3:外连接
SELECT
*
FROM
restrant t1
LEFT OUTER JOIN
restrant_dish t2
ON
t1.rid = t2.rid
LEFT OUTER JOIN
dish t3
ON
t2.did = t3.did;
4:子查询-简介
5:子查询3种方式
4:事务
1:四大特征
- MySQL中事务是自动提交的
- Orcal数据库中事务是手动提交的,所以在操作语句后要进行手动提交.