一、数据库
1.数据库相关概念
存储数据的仓库,数据是有组织的进行存储(DataBase ,DB)
2)数据库管理系统
管理数据库的大型软件(DataBase Management Sytem,DBMS)
3)SQL
结构化查询语言
操作关系型数据库的编程语言
定义操作所有关系型数据库的统一标准
4)Mysql数据模型
关系型数据库
关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的二维表组成的数据库。
优点:
1.都是使用表结构,格式一致,易于维护
2.使用通用的SQL语言操作,使用方便,可用于复杂查询
3.数据存储在磁盘中,安全
5)SQL通用语法DDL:数据定义语言,用来定义数据库对象 操作数据库、表等
DML:数据操作语言,用来对数据库中表的数据进行增删改查
DQL:数据查询语言,用来查询数据库中表的数据
DCL:数据控制语言,用来定义数据库的访问权限和安全级别、及创建用户
1.查询
show databases;
2.创建
创建数据库
create Database 数据库名称;
创建数据库(判断,如果不存在则创建,规避错误)
create database if not exists 数据库名称
3.删除
删除数据库
drop database 数据库名称
删除数据库(判断,如果存在则删除)
drop database if exists 数据库名称
4.使用数据库
查看当前使用数据库
select database();
使用数据库
use 数据库名称
查询当前数据库下所有表名称
show tables;
查询表结构
desc 表名称
首先要在一个已经存在的数据库中创建表,创建表之前要先使用数据库(use 数据库名),然后在来创建表,
注意:最后一行末尾,不能加逗号。
age int
score double(总长度,小数点后保留的位数)0-100
birthday date
“张三”
name char(10) 10个字符空间(定长字符串) 存储性能高,但是浪费空间,固定就是10个字符空间
name varchar(2) 2个字符空间 (变长字符串) 存储性能低,节约空间
drop table 表名;
alter table 表名 rename to 新的表名
alter table 表名 add 列名 数据类型
alter table 表名 modify 列名 新的数据类型
alter table 表名 change 列名 新列名 新数据类型
alter table 表名 drop 列名
12)模糊查询
like======
通配符
_:代表单个任意字符
%:代表任意个数字符
查询姓马的学员信息
select * from stu where name like ‘马%’;
查询第二个字是花的学员信息
select * from stu where name like ‘_花%’;
查询名字中包含’德‘的学员信息
select * from stu where name like ’%德%‘;
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 【排序方式】,排序字段名2 【排序方式2】
排序方式:
ASC:升序排列(默认值)
DESC:降序排序
14)聚合函数
函数名:count(列名),max(列名),min(列名),sum(列名),avg(列名)
SELECT 聚合函数名(列名) FROM表;
SELECT 字段列表 FROM 表名 【WHERE 分组前条件限定】GROUP BY 分组字段名【HAVING 分组后条件过滤】;
1)执行时机不一样:where是分组之前进行限定的,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤
2)可判断的条件不一样:where不能对聚合函数进行判断,having可以。因为执行顺序是不一样的
起始索引:从0开始
注意:
1,分页查询limit是mysql数据库的方言
2.oracle 分页查询使用rownumber
3.sql server 分页查询使用top
-- 1.从0开始,查询3条数据
select * from stu limit 0, 3;
--1.每页显示3条数据,查询第一页数据
select *from stu limit 0,3;
-- 2.每页显示3条数据,查询第二页数据
select * from stu limit 3,3
--3.每页显示3条数据,查询第三页数据
select * from stu limit 6,3
17)MYSQL约束
约束是作用于表中列上的规则,用于限制加入表的数据
约束的存在保证了数据库中数据的正确性、有效性和完整性
非空约束 保证列中所有数据不能有null值 NOT NULL
唯一约束 保证列中所有数据各不相同 UNIQUE
主键约束 主键是一行数据的唯一标识,要求非空且唯一 PRIMARY KEY
检查约束 保证列中的值满足某一条件 CHECK
默认约束 保存数据时,未指定值则采用默认值 DEFAULT
外键约束 外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性 FOREIGN KEY
18)外键约束
语法:
1)添加约束
-- 创建表时添加外键约束
CREATE TABLE 表名(
列名 数据类型,
[CONSTRAINT][外键名称(一般用fk主表名附表)】 FOREIGN KEY(外键列名) REFERENCES 主表(主表列名)
);
2)删除约束
ALTER TABLE 表名DROP FOREIGN KEY 外键名称
注意点:流程:创建主表,创建从表,从表中添加外键约束
CONSTRAINT 外键名 FOREIGN KEY(从表外键) REFERENCES 主表外键(外键名)
先执行主表后执行从表,先添加主表元素,后添加从表元素。
19)多表关系的实现
20)多表查询
内连接
- 隐式内连接
SELECT 字段列表 FROM 表1,表2... WHERE 条件
-- 显式内连接
SELECT 字段列表 FROM 表1【INNER] join 表2 on 条件
内连接相当于查询A B 交集数据
查询emp表所有数据和对应的部门信息
select * from emo left join dept on emp.dep_id=dept.id;
22)右外连接查询dept表所有数据和对应的员工信息
select * from emp right join dept on emp,dep_id=dept.id;
概念:查询中嵌套查询,称嵌套查询为子查询。
子查询根据查询结果不同,作用不同
单行单列:作为条件值,使用=!=》《等进行条件判断
SELECT 字段列表 FROM 表 WHERE 字段名=(子查询);
-- 查询‘财务部‘和市场部所有员工信息
select did from dept where dname='财务部’;
select * from emp where dep_id=(select did from dept where dname='财务部‘);
数据库的事务是一种机制、一个操作序列,包含了一组数据库操作命令
事务是一个不可分割的工作逻辑单元
开启事务
START TRANSACTION
或者 BEGIN
-- 提交事务
COMMIT
-- 回滚事务
ROLLBACK
原子性:事务是不可分割的最小操作单位,要么同时成功,要么同时失败
一致性:事务完成时,必须使所有的数据都保持一致状态
隔离性:多个事务之间,操作的可见性
持久性:事务一旦提交或回滚,她对数据库中的数据的改变是永久的;