Mysql基础知识总汇
一.mysql简单简单介绍
1.数据库的好处
2.数据库的常见概念
DB:数据库,存储数据的容器
DBMS:数据库管理系统,又称为数据库软件或数据库产品,用于创建或管理DB
SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有主流的数据库软件通用的语言
3.数据库存储数据的特点
数据存放到表中,表再放到库中
一个库可以由多张表,每张表具有唯一的表名用来标识自己
表中有一个或多个列,列又称为“字段”,相当于java中“属性”
表中每一行数据,相当于java中“对象”
四、常见的数据库管理系统
mysql,oracle,db2,sqlserver
二.Sql操作分类
一.操作数据库
DDL:
一 .Create(创建)
1.创建数据库
create database + (数据名称);
2.创建数据库,先判断是否存在,再创建
create database if not exists +(数据库名称);
3.创建数据库并且指定字符集
create database +(数据库名称)character set + (字符集);
4.创建数据库并且指定字符集
create database if not exists + (数据库名称)+ character set +(字符集);
二.Reterieve(查询)
1.查询所有数据库
show databases;
2.查询某个数据库的字符集
show create database +(数据库名称);
三.Updata(修改)
1.修改数据库的字符集
alter database +(数据库名称)character set +(字符集);
2.修改数据库的名称
EXEC sp_renamedb +( 旧名 ), ( 新名);
注:名称用单引号引起
四.Delete(删除)
1.删除数据库
drop database + (数据库名称);
2.判断是否存在,再删除
drop database if existis +(数据库名称);
五.使用数据库
1.查询当前在使用的数据库
select database();
2.使用数据库
use +(数据库名称);
二.操作表
DDL:
一 .Create(创建)
1.create table +(表名)(
列名 数据类型,
列名 数据类型,
。。。。。。。
列名 数据类型
);
注:最后一行不需要加逗号(,)
数据类型:int 整数类型
date 日期
varchar 字符串
二.Reterieve(查询)
1.查询某个数据库的所有表
show tables;
2.查询表的结构
desc +(表名);
三.Updata(修改)
1.修改表名
alter table +(表名)rename to +(新表名);
2.修改表的字符集
alter table +(表名) character set +(字符集);
3.添加一行
alter table +(表名 )add + (行名 数据类型);
4.修改列的名称,类型
alter table +(表名)change +(列名 新列名 新数据类型);
四.Delete(删除)
1.删除表名
drop table +(表名);
drop table if exists +(表名);
三.DML(对数据操作)
一.Add(添加数据)
1.向表中添加数据
insert into +(列名1,列名2,。。。列名n)values (值1,值2,。。值n);
注:1)列名和值要一一对应
2)如果表名后,不定义列名,则默认给所有的添加值。
3)除了数字基本类型,其他需要单引号引起来
二.Delete(删除)
1.delete from 表名 + [where 条件];
注:如果不加条件删除所有数据
如果要删除所有数据推荐使用 truncate table +(表名);
三.Updata(修改)
1.update +(表名)set +(列名1=值1,列名2=值2,。。。+列名n=值n)+[ where 条 件];
注:如果不加条件修改所有数据
四.DQL(查询)
一.排序查询
1.order by +列名+(排序方式);
例如:order by 排序字段1 排序方式1,排序字段1 排序方式1。。。;
排序方式:
ASC:升序,默认的
desc:降序
注:如果多个排序,先判断第一个
二.聚合函数:将一列作为一个整体进行,纵向计算的
1.cout :计算机数量个数
例如:SELECT COUNT(name) FROM student;
例如:排除null的方法
SELECT COUNT( IFNULL(name,0)) FROM student;
2.max:计算最大值
例如:SELECT MAX(MARK) FROM student;
3.min : 计算最小值
例如:SELECT MIN(MARK) FROM student;
4.sum: 计算和
例如:select sum(mark) from student ;
5.avg:计算平均值
例如:select avg(mark) from student ;
注:排除聚合函数会排除null值。
三.分组查询
1.group by +(字段);
例如:SELECT gender, AVG(mark) FROM student GROUP BY gender ;
注:1)分组之后查询的字段:分组字段,聚合函数
2)where 和having 的区别
1.where 在分组之前进行限定 ,如果不满足,则不参与查询。
2.having 在分组之后进行限定,如果不满足,则不查询出来。
四.分页查询
1.limit 分页查询
例如 : select *from student limit (x,y);x:从什么时候开始;y:每页显示的页数。
五.基础查询
1.查询基础语法
select 字段列表 from 表名 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页
2.查询字段
select 字段1 字段2 from 表名;
注:除去重复的结果集 distinct ;
起别名AS +别名;
3.条件查询
1.where +条件
例如:select *from student where age >20;
2.运算符 > , <, <=, >= ,=, <>
例如:select *from student where age (运算符)
3.between … and…
例如:select *from student where age between 20 and 30;
4.in(集合)
例如:select *from student where age in (X,X,X);
5.like (模糊查询)
占位符:
单个字符:select *from student where name like ’ 龙%’;
select*from student where name like “_化%”;
多个字符
6.is null 查询某一列null的值,注:不能写=null;(is not null)
例如:select *from student where age is null ;
7.逻辑查询
or 或者 &&
not 或 !
五.约束
概念:对表中的数据进行限定,保证数据的正确性,有效性和完整性。
分类:
1.主键约束:primary key
2.非空约束:not null
3.唯一约束: unique
4.外键约束:foreign key
一.非空约束(所约束的列无法为空)
1.创建表创建约束
例如:
create table student(
id int,
name varchar(20)not null;(名字不能为空)
);
2.创建表之后,添加非空约束
例如:
alter table student modify name varchar(20) not null;
3.删除非空约束
例如:
alter table student modify name varchar(20);
二.唯一约束:unique,值不能重复
1.创建表创建约束
例如:
create table student(
id int,
phone int unique ;(名字不能为空)
);
2.删除唯一约束
例如:
alter table student drop index phone ;
3.创建表之后,添加唯一约束
例如:
alter table student modify phone int unique ;
三.主键约束:primary key
1.注意:
1.含义:非空且唯一
2.一张表只能有一个字段为主键
3.主键就是表中的唯一标识
2.添加主键
例如:
create table stu(
id int primary key,
name varchar (20)
);
3.删除主键
正确演示:
例如:
alter table stud drop primary key ;
错误示范:
alter table stud modify id primary key;
4.创建表之后,添加逐主键
alter table stud modify id int primary key;
5.自动增长
1.概念:如果某一列是数值类型的,使用auto_increment 可以用来完成自动增长
2.创建表时,添加主键
create table stu(
id int auto_increment,
name varchar (20)
);
3.删除自动增长
alter table stu modify id int ;
4.添加自动增长
alter table stu id int int auto_increment;
6.外键约束:foreign key
1.在创建表时,可以添加外键
语法:
create table 表名(
。。。
外键列
contraint 外键名称 foreign key (外键列的名称) referrnces 主表主称名字
);
2.删除外键
alter table (表名) drop foreign key 外键名;
3.添加外键
alter table (表名)add contraint 外键名称 foreign key (外键列的名称) referrnces 主表主称
7.级联操作
1.添加外键,设置级联更新
alter table 表名 add constraint 外键名称
foreign key (外键名称) references 主键名称 (on update cascade on delete casecade);
2.分类:
1.级联更新:on update cascade
2.级联删除:on delete casecade
三.多表操作
数据库的设计:
1.多表之间的关系
1.一对一
如:人和身份证(A->B ,B–>A A<->B)
2.一对多(多对一)
如:部门和员工
分析:一个部门有多个员工,一个员工只对应一个部门
3.多对多
如:学生和课程
分析:一个学生选选择很多门课程 ,一个课程也可被多个学生选择
2.实现这个关系
1.一对一的关系
2.多对多
2.数据库设计的范式
第一范式:每一个列都是不可分割的的原子数据项
第二范式:在1FN的基础上,非码属性必完全依赖于候选码(在1FN基础上消除传递依赖非主属性对主码的部分函数依赖)
概念:
A—>B,如果通过A属性(属性组)的值,可以确定唯一属性的值。则称B依赖于A
例如:学号---->名字,(学号,课程名称)–>分数
完全依赖:A—>B,如果A是一个属性组,则B属性值确定需要依赖A的属性的属性值
例如:(学号,课程名称)–>分数
部分函数依赖:A—>B,则B的属性值确定只需要依赖A属性组中某一些值即可。
传递依赖:A–>B,B–>C,如果通过A的属性的值,可以确定唯一B的属性的值,再通过B的属性值可以确定唯一的CC属性值,则称C传递函数依赖A。
例如:学号–>系名,系名–>系主任。
码:如果在一张表中,一个属性或属性组,被其他所有属性组完全依赖,则称这个属性为该表的码
1.主属性:码属性组中的所有属性
2.非码属性:除了码属性的属性
第三范式:在2FN
基础上,任何给非主属性不依赖其他非主属性(在2FN基础上消除传递依赖)
一.多表查询
基础查询:
select +(列名)+from+(表名)where +条件
笛卡儿积:
两个集合组合情况 A B 取两个集合组成情况
完成多表查询,需要消除无用的数据
多表的查询的分类:
1.内连接查询
1.隐式内连接: select +(列名)+from+(表名)where +条件
2.显示内连接:select 字段列表 from 表名1 inner join 表名2 条件
2.外连接查询:
1.左外链接:
select 字段列表 from 表1 left【outer】 join 表2 条件;
查询的左表所有数据以及交集部分
2.右外链接:
select 字段列表 from 表1 left【outer】 join 表2 条件;
查询的右表所有数据以及交集部分
3.子查询:
概念在查询中嵌套查询,称为子查询
1.子查询的结果是单行单列
2.子查询结果是多行多列
3.子查询结果是多行单列
四.数据库的备份和还原
1.命令行:
语法:mysqldump -u用户名 -p密码 数据库的名称>保存的路径
2.图形化工具
五.事务基本操作
1.事务的介绍:
1.概念:
如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
2.操作:
1.开始事务:start transaction
2.回滚事务:rollback
3.提交事务:commit
2.事务的四大特征:
1.原子性:不分割的最小操作单位,要么成功,要么失败
2.持久性:当事务提交或回滚后,数据库持久化保存数据
3.一致性:事务操作前后,总量不变的
3.事务的隔离级别(了解)
存在问题:
1.脏读:一个事务,读到另一个提交事务的数据
2.不可重复:在同一个事务中,两次读取到数据不一样;
3.幻读:一个事务数据表所有记录,一个数据添加到另一个事务修改自己的修改
六.DCL管理(了解)
1.管理用户
1.添加用户
语法:create user ‘用户名’@‘主机号’ identified by ‘密码’;
2.删除用户
语法:drop user ‘用户名’@‘主机号’;
3.修改用户
修改语法:update user set password =password (‘新密码 ’)where user =‘ 用户名 ’;
4.查询用户
use mysql;
use * from user;
Mysql总汇.md( 需要的吱一声)
链接:https://pan.baidu.com/s/1iSAp20qbRDKBNx-IpaKXUQ
提取码:zzl0