• 数据库总结


    引言

    数据库是用来存储数据的集合,可以对数据进行持久化存储.

    一、数据库(DataBase)

    1、常见的数据库管理系统

    Orcale数据库是orcale公司开发的,是一个大型收费数据库系统
    MySql数据库是orcale公司开发的,是一个中小型数据库 5.xxx免费 6.xxx收费
    DB2数据库是IBM公司开发,是一个大型的收费数据库系统
    sql Servler数据库是微软公司开发的,是一个大型收费数据库系统
    sqllite数据库是谷歌开发的,是一个微型嵌入式数据库

    2、数据库系统(DataBaseSystem)

    数据库管理系统(DataBaseManagerSystem)	
    数据库(DataBase)
    
    • 1
    • 2

    3、数据库的结构

    一个数据库管理系统可以存储多个数据库
    一个数据库可以存储多张表
    一个表里面可以储存多条记录
    
    • 1
    • 2
    • 3

    4、sql语言的分类

    DDL(数据定义语言)
    	例如:create开头,一般用来创建数据库/表
    DML(数据操作语言)
    	例如:insert update delete 一般用来做增删改
    DCL(数据控制语言)
    	例如:grant/revoke 一般用来赋权限/撤销权限
    DQL(数据查询语言)******
    	例如:select 一般用来查询
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    二、数据库基本操作

    1、mysql的登录

    方式一:
    	cmd:  mysql -uroot -p
    方式二:
    	MySQL 5.5 Command Line Client
    
    • 1
    • 2
    • 3
    • 4

    2、数据库的开启和关闭

    方式一:
    	cmd:
    		开启命令: net start mysql
    		关闭命令: net stop mysql
    方式二:
    	我的电脑--->管理-->服务和应用程序-->服务-->mysql-->开启/关闭
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3、数据库的sql语句

    1.创建数据库sql语句
    	create database 数据库名称;
    2.查看数据库;
    	show databases;
    3.删除数据库
    	drop database 数据库名称;
    4.使用/切换数据库
    	use 数据库名称;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4、表的sql语句

    注意事项:操作表之前先切换数据库
    1.创建表的sql语句
    	create table 表名(字段名称 数据类型,字段名称 数据类型...);//
    2.查看表
    	show tables;
    3.查看表结构
    	desc 表名;
    4.删除表
    	drop table 表名;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    5、表中记录的sql语句

    1.添加记录
    	insert into 表名 values(值1,值2,值3,...);
    2.查询记录
    	select * from 表名;
    3.修改记录
    	update 表名 set 字段=值,字段2=值2;
    4.删除记录
    	delete from 表名 where 条件;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    6、中文乱码问题

    	方式一:
    		找到mysql数据库安装包中的my.ini文件然后把
    		default-character-set=gbk
    	方式二:
    	 show variables like 'char%';
    
    • 1
    • 2
    • 3
    • 4
    • 5

    7、sql的数据类型

    字符串类型
    	varchar:
    	char:
    	text:
    	varchar和char的区别
    	varchar(10):是可变字符串,"abc",存储效率低,但是不占用存储空间
    	char(10):是不可变字符串,"abc",存储效率高,但是占用存储空间
    	
    	text:大文本
    	注意:在sql中定义字符串类型必须指定长度,否则报错
    	例如: name varchar(200);
    数字类型:
    	tinyint   smallint   int  bigint  float  double
    	byte       short     int   long   float  double
    
    	age int   price floate(8,2)
    布尔类型
    	boolean
    大数据类型
    	blob:一般用来存储二进制文件
    日期类型:
    	year: 年  例如 2019
    	time: 时间  例如:10:20:50
    	date: 日期  例如:2019-06-04
    	datetime:日期时间  例如:2019-06-04 14:30:10
    	timestamp:时间戳 自动获取时间
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    8、表中字段的sql语句

    1.添加字段
    	alter table 表名 add 字段名称 字段类型;
    2.删除字段
    	alter  table 表名 drop 字段名称;
    3.修改字段名称
    	alter table 表名 change 原字段名称 新字段名称 数据类型;
    4.修改字段的数据类型
    	alter table 表名 modify 字段名称 新数据类型;
    5.修改表名
    	alter table 表名 rename to 新表名;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    三、MySQL高级SQL语句

    1、条件(where)

    = >  <  >= <= != <>
    and:用来连接多个条件 同时成立
    or:用来连接多个条件 只要有一个成立
    is: 用来查询字段值是NULL的
    is not:用来查询字段值不是NULL的
    in :用来表示满足in中的值的条件
    between .. and :用来查询满足between和and之间的值
    like:模糊查询
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2、排序

    升序(从小到大) order by 字段 asc
    降序(从大到小) order by 字段 desc
    默认是升序
    
    • 1
    • 2
    • 3

    3、分页

    limit 值1,值2:
    	值1:角标
    	值2:长度
    
    • 1
    • 2
    • 3

    4、别名

    as
    
    • 1

    5、聚合/聚集函数

    count():用来统计数量
    sum():用来求和
    avg():用来求平均数
    max():用来求最大值
    min():用来求最小值
    
    • 1
    • 2
    • 3
    • 4
    • 5

    6、分组

    group by
    
    • 1

    7、having

    having一般用来配合group by做分组后的条件查询
    
    • 1

    8、约束

    primary key;主键约束,约束字段中的值不能为空并且唯一
    	auto_increment:主键自增长
    not null:非空约束
    unique:唯一约束
    default:默认约束
    foreign key:外键约束
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    9、创建/删除用户

    创建用户的sql语句:
    	create user '用户名'@'地址' identified by '密码';
    删除用户的sql语句:
    	delete from user where user = '要删除的用户名';
    	flush privileges;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    10、赋权限/撤销权限

    赋权限的sql语句:
    	grant 权限 on 数据库.表 to '用户名'@'地址';
    	grant all privileges on 数据库.表 to '用户名'@'地址';
    撤销权限的sql语句:
    	revoke 权限 on 数据库.表 from '用户名'@'地址';
    	revoke all privileges on 数据库.表 from '用户名'@'地址';
    
    数据库可视化工具
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    四、多表查询

    1、多表之间的关系

    一对多关系
    多对多关系
    一对一关系
    
    • 1
    • 2
    • 3

    2、多表关系的建立原则

    一对多关系的建表原则:在多的那张表上建立一个字段指向一的那张表的主键
    多对多关系的建表原则:需要重新创建一张表,这张新的表中分别有两个字段指向另外两张表的主键
    一对一关系的建表原则:把两张表合并成一张表
    
    • 1
    • 2
    • 3

    3、ER模型图

    E:Entity
    R:relationship 
    
    • 1
    • 2

    4、多表查询

    连(联)接查询
    子查询
    
    • 1
    • 2

    5、连接查询

    交叉连接 :cross join
    	select * from 表1 cross join 表2;
    内连接: inner join
    	显式内连接
    		select * from 表1 inner join 表2 on 主键=外键;
    	隐式内连接
    		select * from 表1 , 表2 where 主键=外键;
    外链接: outer join
    	左外连接 left outer join
    		select * from 表1 left outer join 表2 on 主键=外键;
    	右外连接 right outer join
    		select * from 表1  right outer join 表2 on 主键=外键;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    6、子查询(嵌套查询)

    格式:
    	select * from 表1 where 字段 in(select 字段2 from 表2 where 条件);
    
    • 1
    • 2

    7、子查询的条件

    in :代表查询的条件满足其中任意一个  不能和> < >= <=配合使用
    	例如: id in(1,4,5)//id=1 or id=4 or id=5
    ang :代表查询的条件满足其中任意一个 可以和> < >= <=配合使用 select * from student where s_id>any(select cid from class where cid>3);
    	例如: id >any(1,4,5)// id>1 or id>4 or id>5
    some:和any用法一样
    all:代表查询的条件必须满足所有值 可以和> < >= <=配合使用
    	例如: id >all(1,4,5)// id >1 and id >4 and id>5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    8、外键约束

    foreign key(外键字段) references 主键表(主键字段); 
    
    • 1

    9、视图/view

    sql:
    创建:
    	create view 视图名称 as sql语句; create view asd as  select  sname,s_id from student inner join class on sid=cid inner join zb on  s_id=zid order by s_id desc;
    删除:
    	drop view 视图名称;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    10、存储过程

    sql:
    	create procedure 存储过程名称()
    		begin
    			sql1;
    			sql2;
    		end;
    边界符:
    	delimiter //
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    五、事务

    概述:操作一组sql语句要么全部成功要么全部失败
    sql:
    	开启事务:start transaction;
    	提交事务:commit
    	回滚事务:roll back
    
    • 1
    • 2
    • 3
    • 4
    • 5

    六、数据库修改密码

     * 第一种:知道原始密码 然后修改密码
     * 1.登录mysql:mysql -uroot -p 
     * 2.切换数据库:use mysql
     * 3.修改root用户的密码:
     * update user set password=password('新密码') where user='root';
     * 4.刷新:flush privileges;
     第二种:忘记密码,修改密码
     * 1.停止mysql的服务(右击我的电脑图标-->管理--->服务和应用程序--->服务--->右侧列表找到mysql--->右击关闭服务)
     * 2.打开一个cmd窗口,执行:mysqld --skip-grant-tables(不能加分号;)
     * 3.这时再开一个窗口来登录mysql数据库:mysql -u root
     * 4.切换数据库 use mysql;
     * 5.修改mysql数据库里面user表密码:
     * 6.update user set password=password('新密码') where user='root';
     * 7.把两个cmd窗口关闭,打开任务管理器,找到mysqld的进程,结束
     * 8.启动mysql服务
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    七、数据库的备份/恢复

    数据库备份(建议先找个不重要的数据库进行测试)
    	无需登录数据库直接在 cmd 窗口输入以下命令
    	mysqldump -h localhost -u root -p 要备份的数据库名称>d:/要备份的数据库名称.sql
    	例如把java1809数据库备份到D盘下
    	mysqldump -h localhost -u root -p java1903>d:/java1809.sql
    	
    	
    恢复数据库:
    	1.登录mysql数据库通过 create database java1809;创建数据库
    	2.切换到要恢复 的数据库 use java1809;
    	3.再开一个cmd窗口 在窗口输入以下命令:mysql -u root -p java1809<d:/java1809.sql
    	4.回车输入密码
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    八、数据库的退出

    exit
    quit
    \q
    ctrl+c
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    ELK简介
    配置fail2ban的记录
    Python全栈开发【基础-07】与用户交互
    Java NIO系列 - IO模型
    qt文件操作
    摩尔信使MThings实用功能盘点
    【Android性能】【流畅度】概念初识
    【Apollo学习笔记】——规划模块TASK之PIECEWISE_JERK_NONLINEAR_SPEED_OPTIMIZER(二)
    一种基于物理信息极限学习机的PDE求解方法
    Java --- SpringMVC的HttpMessageConverter
  • 原文地址:https://blog.csdn.net/qq_45088125/article/details/125543341