Mysql
1.相关概念
1.1 数据库DB:
存储数据的仓库,数据进行有组织的存储
1.2 数据库管理系统DBMS:
管理数据库的大型软件。如Mysql,Oracle,SQL server
1.3 SQL:
结构化查询语言,操作所有关系型数据库管理软件的标准
1.4 Mysql数据模型:
关系型数据库是由多张能互相连接的二维表组成的数据库
2.SQL语法
2.1 注释
– 或# 多行/* */
2.2 分类
DDL 数据定义语言:定义数据库对象,如数据库,表,列等
DML 数据操作语言;对数据库中的数据增删改
DQL 数据查询语言:查询数据库中的数据
DCL 数据控制语言:用来定义数据库的访问权限和安全级别,及创建用户
3.DDL操作数据库
1.show database
2.create database 数据库名称
3.create database if not exist 数据库名称
4.drop database 数据库名称
5.drop database if exist 数据库名称
6.use 数据库名称
4.DDL操作表
1.创建表:create table 表名(字段名 数据类型 );
数据类型有三类:数值,日期,字符串
2.查询表:show tables查询当前数据库所有表名称; DESC 表名称:查询表结构
3.修改表: alter table 表名 rename 新表名;
alter table 表名 ADD 列名 数据类型
alter table 表名 modify 列名 数据类型
alter table 表名 change 列名 新列名 新数据类型
alter table drop 列名
4.删除表 drop table 或drop table if exist 表名
5.DML操作数据
1.insert into 表名 values(值1,值2,...);给全部列添加数据
2.insert into (表名列名1,列名2,···)values(值1,值2···);给指定列添加数据
6.DQL数据查询语言
SELECT
FROM
WHERE
GROUP BY 分组
HAVING 分组后条件
ORDER BY 排序
LIMIT 分页限定 将所有的结果以页数展示
7.关于分页查询
1.语法: SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数
2.起始索引从0开始
3.计算公式:起始索引=(当前页码-1)*每页显示的条数
-- 从0开始查询,查询三条数据
SELECT * FROM salary
LIMIT 0,3
-- 每页显示3条数据,查询第一页数据
SELECT * FROM salary
LIMIT 0,3
-- 每页显示3条数据,查询第二页数据
SELECT * FROM salary
LIMIT 3,3
-- 每页显示3条数据,查询第三页数据
SELECT * FROM salary
LIMIT 6,3
4.分页查询LIMIT是mysql的方言;Oracle分页查询用rownumber;SQL server分页用top
8.约束
8.1 概念
约束是作用于表中列上的规则,用于限制加入表的数据。约束的存在保证了数据库中数据的正确性,有效性和完整性。
8.2约束类型
非空约束(列中数据不能有null值 NOT NULL);
唯一约束(保证数据唯一 UNIQUE);
主键约束(主键是一行数据的唯一标识,要求非空且唯一, PRIMARY KEY);
检查约束(保证列中的某一个值满足某一条件 MySQL不支持检查约束 CHECK);
默认约束(保存数据时,未指定值则采用默认值 DEFAULT);
外键约束(外键用来让两个表的数据建立连接,保证数据的一致性和完整性 FOREIGN KEY)
CREATE TABLE emp(
id INT FOREIGN KEY,auto_increment /*主键且自增长*/
ename VARCHAR(50) NOT NULL UNIQUE,/* 员工姓名非空且唯一*/
joindate DATE NOT NULL,/*入职日期,非空*/
sSalary DOUBLE(7,2) NOT NULL,/*工资非空*/
bonus DOUBLE(7,2) DEFAULT 0/*奖金,没有奖金就默认为0*/
);
9.外键约束
9.1 在建表的时候添加约束
CONSTRAINT 外键名称(自取) FOREIGN KEY(外键列表) REFERENCES 主表(主表列名)
9.2 删除外键
alter table 表名 drop foreign key 外键名称
9.3 创建完表之后添加外键
alter table 表名 add CONSTRAINT 外键名称(自取) FOREIGN KEY(外键列表) REFERENCES 主表(主表列名)
10.数据库设计
有哪些表,有什么字段,表与表之间关系?
10.1 表之间关系
- 一对多关系
在多的一方建立外键,指向一方主键 - 多对多关系
建立第三张关系表,中间表至少包含两个外键,分别关联两方主键 - 一对一关系
多用于表拆分,将一个实体中经常使用的字段放一张表,不经常使用的字段放在另一张表,用于提升查询性能;实现方式,在任意一方加入外键,关联另一方的主键,并设置外键唯一UNIQUE
11.多表查询
11.1 笛卡尔积
select * from emp,dept 查询的结果是两张表的笛卡尔积,两张表的所有组合,消除无效数据 用where 连接两个表
11.2 连接查询:
内连接:查询两张表的交集数据;
左外连接:查询a表所有数据和交集数据
右外连接:查询b表所有数据和交集数据
12.内连接 外连接
1.隐式内连接 select from where 条件
2.显示内连接 select from 表1 [inner] JOIN 表2 ON 条件
3.左外连接:select from 表1 left [outer] join 表2 on 条件
4.右外连接:select from 表1 right [outer] join 表2 on 条件
13.子查询
查询中嵌套查询,子查询根据查询结果不同,作用不同:
1.单行单列:作为条件值,使用 = ,!= , > , <
select from where 字段 = / != / > / < (子查询)
2.多行单列:作为条件值,使用in等关键字进行条件查询
select from where 字段 in(子查询)
3.多行多列:作为虚拟表,放在from下
select from(子查询) where 条件
14.事务
1.数据库的事务是一种机制,一个操作序列,包含了一组数据库命令
2.事务把所有的命令作为一个整体一起向系统提交或撤销要求,即这一组数据要么同时成功,要么同时失败
3.事务是一个不可分割的工作单位
4.标记:开启事务,回滚事务,提交事务
开启事务:START TRANSACTION 或者BEGIN
提交事务:COMMIT 目的数据持久化变化
回滚事务:ROLLBACK
5.事务的四大特征
A:原子性:事务是不可分割的最小操作单位,要么同时成功,要么同时失败
C:一致性:事务完成时,必须使所有数据都保持一致状态。(转账操作之后的总金额不变)
I:隔离性:多个事务,操作的可见性
D:持久性:事务一旦提交或回滚,他对数据库的更改就是永久的
6.查询事务的默认提交方式
select @@autocommit
如果为1,则自动提交,否则为手动提交,要更改数据时,应该在加commit表示永久更改
7修改事务的提交方式
set @@autocommit=0/1
15.事务操作
-- 事务操作
-- 转账操作
-- 开启事务 开启事务之后进行的操作是临时性的操作
START TRANSACTION;
-- 1.查询李四余额
-- 2.李四金额-500
UPDATE account SET money=money-500 WHERE aname='李四';
-- 3.张三金额+500
UPDATE account SET money=money+500 WHERE aname='张三';
-- 提交事务 数据被持久化更改
COMMIT;
-- 回滚事务 回滚到开始事务之前的状态
ROLLBACK;