数据库

数据库的英文单词————DataBase(简称DB)。

什么是数据库?

用于存储和管理数据的仓库。

数据库的特点

  1. 持久化存储数据的。其实数据库就是一个文件系统。
  2. 方便存储和管理数据。
  3. 使用了统一的方式操作数据库————SQL。

常见的数据库软件

MySQL数据库软件
1.安装
2.卸载

  • 去mysql的安装目录找到my.ini文件

     复制 datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
    
  • 卸载MySQL

  • 删除C:\ProgramData\目录下的MySQL文件夹

3.配置
MySQL服务启动
1.手动。
2.cmd–>service.msc 打开服务的窗口。
3.使用管理员打开cmd

  • net start mysql——启动mysql的服务
  • net start mysql——关闭mysql的服务
    MySQL登陆
    1.mysql -uroot -proot
    2.mysql -hip -uroot -p连接目标的密码
    3.mysql --host=ip --user=root --password=连接目标的密码
    MySQL退出
    1.exit
    2.quit
    MySQL目录结构
    1.MySQL安装目录
  • 配置文件——my.ini

2.MySQL数据目录

  • 数据库——文件夹
  • 表————文件
  • 数据

SQL

一.什么是SQL?
Structured Query Language————结构化查询语句
其实就是定义了操作所有关系数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。
二.SQL通用语法
1.SQL语句可以单行或者多行书写,以分号结尾。
2.可以使用空格和缩进来增强语句的可读性。
3.SQL数据库的SQL语句不区分大小写,关键字建议使用大写。
4.三种注释

  • 单行注释———— - - 注释内容 或 #注释内容(mysql特有的)
  • 多行注释————— /*注释内容*/

SQL分类

在这里插入图片描述

DDL——操作数据库、表

一.操作数据库——CRUD

  1. C(Create)————创建
  • 创建数据库
    create datavase 数据库名称
  • 创建数据库,判断不存在,再创建
    create database if not exists 数据库名称;
  • 创建数据库,并指定字符集
    create database if not exists 数据库名称 character set 字符集名;
  • 创建db数据库,判断是否存在,并制定字符集为gbk
    create database if not exists db character set gbk;
  1. R(Retrieve)————查询
  • 查询所有数据库的名称
    show databases;
  • 查看某个数据库的字符集——查询某个数据库的创建语句
    show create database 数据库名称;
  1. U(Update)————修改
  • 修改数据库的字符集
    alter database 数据库名称 character set 字符集名称;
  1. D(Delete)————删除
  • 删除数据据库
    drop database 数据库名称;
  • 判断数据库存在,存在再删除
    drop database if exists 数据库名称;
  1. 使用数据库
  • 查询当前正在使用的数据库名称
    select database();
  • 使用数据库
    use 数据库名称;
    二.操作表
  1. C(Create)————创建
  • 语法

create table 表名(
列名1 数据类型1,
列名2 数据类型2,

列名n 数据类型n
);
注意——最后一列,不需要加逗号(,)

  • 数据类型
    int————整数类型(age int)
    doulble——小数类型(score double(5,2))
    date————日期(只包含年月日,yy-MM-dd)
    datetime——日期(包含年月日时分秒,yy-MM-dd HH:mm:ss)
    timestamp——时间错类型(包含年月日时分秒,yy-MM-dd HH:mm:ss)如果将来不给这个字段赋值,或者赋值为null,则默认使用当前的系统时间,来自动赋值。
    varchar——字符串(name varchar(20)姓名最大20个字符)
    在这里插入图片描述
    创建表
create table stu(
		id  int,
		name varchar(32),
		age int,
		score double(4,1),
		birthday date,
		insert_time timestamp
		); 

复制表
create table 表名 like 被复制的表名;

  1. R(Retrieve)————查询
  • 查看某个数据中所有的表名称
    show tables;
  • 查询表结构
    desc 表名;
  1. U(Update)————修改
  • 修改表名
    alter table 表名 rename to 新的表名;
  • 修改表的字符集
    alter table 表名 character set 字符集名称;
  • 添加一列
    alter table 表名 add 列名 数据类型;
  • 修改列名称 类型
    alter table 表名 change 新列名 新数据类型;
    alter table 表名 modify 新列名 新数据类型;
  • 删除列
    alter table 表名 drop 列名 ;
  1. D(Delete)————删除
  • 删除数据据库
    drop table 表名;
    drop tableif exists 表名;

客户端图形化工具——SQLYog

DML——增删改表中的数据

一、添加数据
语法
INSERT INTO 表名(列名1,列名2,…,列名n)VALUE(值1,值2…值n);
注意
1.列名和值要一一对应。
2.如果表名后,不定义列名,则默认给所有列添加值。
INSERT INTO 表名VALUE(值1,值2…值n);
3.除了数字类型,其他类型需要使用引号(单双都可以)引起来。
二、删除数据
语法
delete from 表名[where 条件]
注意
1.如果不加条件,则删除表中所有的数据。
2.如果要删除所有记录
①delete from 表名;————不推荐使用(有多少条记录就会执行多少次删除操作)。
②TUNCATE TABLE 表名;——先删除表,然后再创建一张一样的表。
三、修改数据
语法
update 表名 set 列名1=值1,列名2=值2,…[where 条件];
注意
如果不加任何条件,则会将表中所有记录全部修改。

DQL——查询表中的记录

select * from 表名;
一、语法

select
	字段列表
from
	表名列表
where
	条件列表
group by
	分组字段
having
	分组之后的条件
order by
	排序
limit
	分页限定

二、基础查询
1.多个字段的查询
select 字段名1, 字段名2,…from 表名;
注意
如果查询所有字段,则可以使用*代替字段列表。
2.去除重复
di’stinct
3.计算列
一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
ifnull(表达式1,表达式2)——null参与的运算,计算结果都为null。
表达式1——哪个字段需要判断是否为null。
如果该字段为null后的替换值。
4.起别名
as——as也可以省略
三、条件查询
1.where字句后跟条件
2.运算符

  • <、>、<=、>=、=、!=、<>
  • BETWEEN…AND
  • IN(集合)
  • LIKE——模糊查询
    占位符
    _ ——单个任意字符
    % ——多个任意字符
  • IS NULL
  • and 或&&
  • or 或 ||
  • not 或 !
    四、排序查询
    语法——order by 子句
    order by 排序字段1 排序方式1,排序字段2 排序方式2…
  • ASC——升序,默认的。
  • DESC——降序。

注意
如果有多个条件,则当前面的条件值一样时,才会判断第二个条件。
五、聚合函数——将一列数据作为一个整体,进行纵向的计算。
1.count——计算个数
①一般选择非空的列——主键
②count(
2.max——计算最大值
3.min——计算最小值
4.sum——计算和
5.avg——计算平均值
注意
聚合函数的计算,会排除null值。
解决方案
1.选择不包含非空的列进行计算
2.IFNULL函数
六、分组查询
语法——group by 分组字段;
注意
1.分组之后查询的字段——分组字段、聚合字段
2.where和having的区别?
①where再分组之前进行限定,如果不满足条件,则不参加分组。having再分组之后进行限定,如果不满足,则不会被查询出来。
②where后不可以跟聚合函数,having可以进行聚合函数的判断。
七、分页查询
语法 ——limit开始的索引,每页查询的条数;
公式——开始的索引=(当前的页码 - 1)
每页显示的条数
limit是一个MySQL“方言”。

表的约束

概念——对表中的数据进行限定,保证数据的正确性、有效性和完整性。
分类
1.主键约束——primary key
注意

  • 含义——非空且唯一
  • 一张表只能有一个字段为主键
  • 主键就是表中记录的唯一标识

2.非空约束——not null(值不能为null)
3.唯一约束——unique(值不能重复)
注意
mysql中,唯一约束限定的列的值可以有多个null。
4.外键约束——foreign key
5.自动增长
如果某一列是数据类型,使用auto_increment可以来完成值的自动增长。

多表操作

多表关系——多对多关系实现
在这里插入图片描述
多表关系——一对一关系实现
在这里插入图片描述

多表查询的分类

多表查询——内连接
1.隐式内内连接——使用where条件消除无用数据。
2.显示内连接
语法——select 字段列表 from 表1 [inner] join 表2 on 条件;

  • 从哪些表中查询数据
  • 条件是什么
  • 查询哪些字段
    多表查询——外连接
    1.左外连接
    语法——select 字段列表 from 表1 left [outer] join 表2 on 条件;
    (查询的是左表的所有数据及其交集部分。)
    2.右外连接
    语法——select 字段列表 from 表1 right[outer] join 表2 on 条件;
    (查询的是右表的所有数据及其交集部分。)
    子查询****加粗样式
    概念——查询中嵌套查询,称嵌套查询为子查询。
    子查询的不同情况
    ①子查询的结果是单行单列的;
    (子查询可以作为条件,使用运算符去判断)
    ②子查询的结果是多行单列的;
    (子查询可以作为条件,使用运算符来判断)
    ③子查询的结果是多行多列的;
    (子查询可以作为一张虚拟表参与查询)

事务

事务的基本介绍
概念
如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败。
操作
1.开启事务——start transaction;
2.回滚————rollback;
3.提交————commit;

  • MySQL数据库中事务默认自动提交

事务的四大特征
1.原子性——是不可分割的最小操作单位,要么同时成功,要么同时失败。
2.持久性——当事务提交或回滚后,数据库会持久化的保存数据。
3.隔离性——多个事物之间,相互独立。
4.一致性——事务操作前后,数据总量不变。
事物的隔离级别
概念——多个事物之间隔离的,相互独立的。但如果是多个事务操作同一批数据,则会引发一些问题,设置不同的隔离级别就可以解决这些问题。
存在问题
1.脏读——————一个事务,读取到另一个事务中没有提交的数据。
2.不可以重复读——同一个事务中,两次读取到的数据不一样。
3.幻读——————一个事务操作(DML)数据表中所有的记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改。
隔离级别
1.read uncommitted——读未提交

  • 产生的问题———————脏读、不可重复读、幻读

2.read committed————读已提交(Oracle默认)

  • 产生的问题——————不可重复读、幻读

3.repeatable read ——可重复读(MySQL默认)

  • 产生的问题——————幻读

4.serializable————串行化

  • 可以解决所有的问题
    注意
    隔离级别从小到大安全性越来越高,但效率越来越低。
    数据库查询隔离级别
    select @@tx_isolation;
    数据库设置隔离级别
    set global transaction isolation level 级别字符串;

DCL——管理用户,授权

管理用户
1.添加用户
语法——CREATE USER ‘用户名@’‘主机名’ IDENTIFIED BY ‘密码;’
2.删除用户
语法——DROP USER ‘用户名@’‘主机名’ ;
3.修改用户密码
UPDATE USER SER PASSWORD =PASSEORD(‘密码’)WHERE USER=‘用户名’;
SET PASSWORD FOR ‘用户名’@‘主机名’=PASSWORD(‘新密码’);
mysql中忘记root用户的密码?
①cmd–>net stop mysql 停止 mysql服务

  • 需要管理员运行cmd

②使用无验证方式启动mysql服务————mysql – skip - grant - tables
③打开新的cmd窗口,直接输入mysql命令,敲回车。就可以登录成功。
④use mysql;
⑤UPDATE USER SER PASSWORD =PASSEORD(‘你的新密码’)WHERE USER=‘root’;
⑥关闭两个窗口。
⑦打开任务管理器,手动结束mysql》exe进程。
⑧启动mysql服务。
⑨使用新密码登录。
4.查询用户
①切换到mysql数据库
USE mysql;
②查询user表
SELECT * FROM USER;
通配符 —— % 表示可以再任意主机使用用户登录数据库。
权限管理
1.查询权限
SHOW GRANTS FOR ‘用户名’@‘主机名’;
2.授予权限
grant 权限列表 on 数据库名.表名 to ‘用户名’@‘主机名’;
3.撤销权限
revoke 权限列表 on 数据库名. 表名 from ‘用户名’@‘主机名’;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值