MySQL基础

一,SQL的介绍

1,数据库的介绍

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

        英文单词为DataBase,简称DB

        它的存储空间很大,可以存放百万条,千万条,上亿条数据

        使用一种同意的方式操作数据库----SQL

2,SQL介绍

        SQL:结构化查询语言,其实就是定义了操作所有关系型数据库的一种规则

通用语法规则:

        SQL语句可以单行或多行书写,以分号结尾

        可以使用空格和缩进来整强语句的可读性

        MySQL数据库的SQL语句不区分大小写,关键字建议使用大写

        单行注释:-- , #

        多行注释:  /*注释内容*/

SQL分类

        DDL:数据定义语言,用来操作数据库,表,列等

        DML:数据操作语言,用来对数据库中表的数据进行增删改

        DQL:数据查询语言,用来查询数据库中表的记录(数据)

        DCL:数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户

        

二,DDL数据定义语言

查询和创建数据库

1,查询所有数据库

show databases;

2,查询数据库的创建语句

show create database 数据库名称;

3,创建数据库

create database 数据库名称;

4,创建数据库(判断,如果不存在则创建)

create database if not exists 数据库名称;

5,创建数据库(指定字符集)

create database 数据库名称 character set 字符集名称;

修改、删除、使用数据库

1,修改数据库(修改字符集)

alter database 数据库名称 character set 字符集名称;

2,删除数据库

drop database 数据库名称;

3,删除数据库(判断,如果存在则删除)

drop database if exists 数据库名称;

4,使用数据库

use 数据库名称;

5,查看当前使用的数据库

select database();

查询数据表

1,查询所有的数据表

show tables;

2,查询表结构

desc 表名;

3,查询表字符集

show table status from 库名 like '表名';

创建数据表

create table 表名(
    列名 数据类型 约束,
    列名 数据类型 约束,
    ...
    列名 数据类型 约束
);

数据类型

        int :整数类型

        double :小数类型

        date : 日期类型。包含年月日,格式yyyy-MM-dd

        datetime:日期类型。包含年月日时分秒,格式yyyy-MM-dd HH:mm:ss

        timestamp:时间戳类型。包含年月日时分秒,

                                如果不给该列赋值,或赋值为null,则默认使用当前系统时间自动赋值

        varchar(长度):字符串类型

修改数据表

1,修改表名

alter table 表名 rename to 新表名;

2,修改表的字符集

alter table 表名 character set 字符集名称;

3,单独添加一列

alter table 表名 add 列名 数据类型;

4,修改某列的数据类型

alter table 表名 modify 列名 新数据类型;

5,修改列名和数据类型

alter table 表名 change 列名 新列名 新数据类型;

6,删除某一列

alter table 表名 drop 列名;

删除数据表

删除数据表

drop table 表名;

删除数据表(判断,如果存在则删除

drop table if exists 表名;

三,DML数据操作语言

DML新增表数据

给指定列添加数据

insert into 表名(列名1,列名2,...) values(值1,值2,...);

给全部列添加数据

insert into 表名 values(值1,值2,...);

批量添加数据

insert into 表名(列名1,列名2,...) values (值1,值2,...),(值1,值2,...),...;
insert into 表名 values (值1,值2,...),(值1,值2,...),...;

 列名和值的数量以及数据类型要对应,除了数字类型,其他类型的数据都需要加引号(推荐单引号)

DML修改和删除表数据

修改表中的数据

update 表名 set 列名1=值1,列名2=值2,...[where 条件];

修改语句中必须加条件,如果不加,则会将所有数据都修改

删除表中的数据

delete from 表名  [where 条件];

删除语句中必须加条件,如果不加条件,则会将所有数据都删除

四,DQL数据查询语言

1,DQL表数据查询——查询语法

select
    字段列表
from
    表名列表
where
    条件列表
group by
    分组字段
having
    分组后的过滤条件
order by
    排序
limit
    分页;

1,查询全部的表数据

select * from 表名;

2,查询指定字段的表数据

select 列名1,列名2,... from 表名;

3,去除重复查询

select distinct  列名1,列名2,...from 表名;

4,计算列的值(四则运算)

select 列名1 运算符(+,-,*,/)列名2 from 表名;

如果某一列为null,可以进行替换

ifnull(表达式1,表达式2)

表达式1:想替换的列

表达式2:想替换的值

select ifnull(列名,替换的值)  from 表名;

5,别名查询

select 列名 as 别名 from  表名;

2,DQL表数据查询——条件查询

查询条件分类

符号功能
>大于
<小于
>=大于等于
<=小于等于
=等于
<>或者!=不等于
between...and...在某个范围之内(都包含)
in(...)多旋一
like  占位符模糊查询,_单个任意字符,%多个任意字符
is null是null
is not null不是null
and或&&并且
or或||或者
not或!非,不是

2,条件查询语法

select 列表名 from 表名 where 条件;

3,DQL表数据查询——聚合函数查询

聚合函数的介绍

        将一列数据作为一个整体,进行纵向的计算

集合函数的分类

        

函数名功能
count(列名)统计数量(一般选用不为null的列)
max(列名)最大值
min(列名)最小值
sum(列名)求和
avg(列名)平均值

聚合函数查询语法

select 函数名(列名) from 表名 [where 条件];

4,DQL表数据查询——排序查询

排序查询语法

select 列名列表 from 表名 [where 条件] order by 列名 排序方式,列名,排序方式...;

排序方式:ASC 升序,DESC 降序;

如果有多个条件,只有当前边条件值一样时,才会判断第二个条件。 

5,DQL表数据查询——分组查询

分组查询语法

select 列名列表 from 表名 [where 条件] group by 分组列名
[hiving 分组后的条件过滤]
[order by 排序列名 排序方式];

6,DQL表数据查询——limit分页查询

分页查询语法

select 列名列表 from 表名
[where 条件]
[group by 分组列名]
[having 分组后的条件过滤]
[order by 排序列名 排序方式]
limit 当前页数,每页显示的条数;

LIMIT 当前页数,每页显示的条数

公式:当前页数 = (当前页数-1)*每页显示的条数

五,约束

什么是约束

        对表中的数据进行限定,保证数据的正确性,有效性,完整性!

约束的分类

约束作用
PRIMARY KEY主键约束
PRIMARY KEY AUTO_INCREMENT主键自增
UNIQUE唯一约束
NOT NULL非空约束
FOREIGN KEY外键约束
FOREIGN KEY ON UPDATE CASCADE外键级联更新
FOREIGN KEY ON DELETE CASCADE外键级联删除

1,主键约束

主键约束的特点

        主键约束默认包含非空和唯一两个功能

        一张表只能有一个主键

        主键一般用于表中数据的唯一标识

建表时加主键约束

create table 表名(
    列名 数据类型 primary key,
    ...
    列名 数据类型
);

删除主键约束

slter table 表名 drop primary key;

建表后单独添加主键约束

anter table 表名 modify 列名 数据类型 primary key ;

2,主键自增约束

建表时添加主键自增约束

create table 表名(
    列名 数据类型 primary key auto_increment,
    ...
    列名 数据类型
);

删除主键自增约束

alter table 表名 modify 列名 数据类型;

建表后单独添加主键自增约束

alter table 表名 modify 列名 数据类型 auto_increment;

MySQL中的自增约束,必须配合键的约束一起使用。

3,唯一约束

建表时添加唯一约束

create table 表名 (
    列名 数据类型 unique,
    ...
    列名 数据类型 约束
);

删除唯一约束

alter table 表名 drop index 列名;

建表后单独添加唯一约束

alter table 表名 modify 列名 数据类型 unique;

4,非空约束

建表的时添加非空约束

create table 表名 (
    列名 数据类型 not null,
    ...
    列名 数据类型 约束
);

删除非空约束

alter table 表名 modify 列名 数据类型;

建表后单独添加非空约束

alter table 表名 modify 列名 数据类型 not null;

5,外键约束

当表与表之间的数据有相关联性的时候,如果没有相关的数据约束,则无法保证数据的准确性!

外键约束的作用

        让表与表之间产生关联关系,从而保证数据的准确性

建表时添加外键约束

create table 表名(
    列名 数据类型 约束,
    ...
    列名 数据类型 约束,
    constraint 外键名 foreign key (本表外键列名) references 主表名(主表主键列名)
);

删除外键约束

alter table 表名 drop foreign key 外键名;

建表后添加外键约束

alter table 表名 add
constraint 外键名 foreign key (本表外键列名) references 主表名(主表主键列名);

6,外键级联更新和级联删除

级联更新:当想把主表中的数据进行修改时,我期望从表中有关联的数据也会随之修改

级联删除:当想把主表中的数据进行删除时,我期望从表中有关联的数据也会随之删除

添加级联更新

alter table 表名 add
constraint 外键名 foreign key (本表外键列名) references 主表名(主键列名)
on update cascade;

添加级联删除

alter table 表名 add
constraint 外键名 foreign key (本表外键列名) references 主表名(主键列名)
on delete cascade;

同时添加级联跟新和删除

alter table 表名 add
constraint 外键名 foreign key (本表外键列名) references 主表名(主键列名)
on update cascade on delete cascade;

六,多表查询

1,多表概述

        就是多张数据表,而表与表之间是可以有一定的关联关系,这种关联关系通过外键约束实现

多表的分类

        一对一:

适用场景:任何身份证,一个人只有一个省份证,一个身份证只能对应一个人

建表原则:在任意一个表建立外键,去关联另外一个表的主键

        一对多:

适用场景:用户和订单。一个用户可以有多个订单。

                商品分类和商品,一个分类下可以有多个商品

建表原则:在多的一方,建立外键约束,来关联另一方的主键

        多对多:

适用场景:学生和课程。一个学生可以选择多个课程,一个课程可以被多个学生选择

建表原则:需要借助第三张表,中间表至少包含两个列,这两个列作为中间表的外键,分别关联两张表的主键

2,多表查询

分类:内连接查询,外连接查询,子查询,自关联查询

1,内连接查询

查询原理:内连接查询的是两张表有交集的部分数据(有主外键关联的数据)

查询语句:

        显式内连接:

select 列名 from 表名1 [inner] join 表名2 on 条件;

        隐式内连接:

select 列名 from 表名1,表名2 where 条件;

2,外连接查询

左外连接:

        查询原理:查询左表的全部数据,和左右两张表有交集部分的数据

        查询语法:

select 列名 from 表名1 lift [outer] join 表名2 on 条件;

右外连接:

        查询原理:查询右表的全部数据,和左右两张表右交集部分的数据

        查询语法:

select 列名 from 表名1 right [outer] join 表名2 on 条件;

3,子查询

子查询概述:查询语句中嵌套了查询语句,就是子查询

结果是单行单列的

        查询作用:可以将查询的结果作为另一条语句的查询条件,使用运算符判断。

        查询语句:

select 列名 from 表名 where 列名=(select 列名 from 表名 [where 条件]);

结果是多行单列的

        查询作用:可以作为条件,使用运算符in或者ont in 进行判断。

        查询语法:

select 列名 from 表名 where 列名 [not] in (select 列名 from 表名 [where] 条件);

结果是多行多列的

        查询作用:查询的结果可以作为一张虚拟表参与查询

        查询语法:

select 列名 from 表名 [别名],(select 列名 from 表名 [where 条件])[别名] [where 条件];

4,自关联查询

在同一张表中数据有关联性,我们可以把这张表当成多个表来查询

七,视图

视图:是一种虚拟存在的数据表,这个虚拟表并不在数据库中实际存在

作用:将一些较为复杂的查询语句的结果,封装到一个虚拟表中,后期再有相同的需求时,直接查询该虚拟表即可。

创建视图语法:

create view 视图名称 [(列名列表)] as 查询语句;

查询视图语法:

select * from 视图名称;

修改视图数据语法:

update 视图名称 set 列名=值 where 条件;

 修改视图数据的时候,源表中的数据也会随之修改

修改视图结构语法:

alter view 视图名称(列名列表) as 查询语句;

删除视图语法:

drop view [if exists]  视图名称;

八,数据库备份和恢复

1,备份

        登录MySQL服务器,输入 mysqldump -u root -p 数据库名称 > 文件保存路径

2,恢复

        登录MySQL数据库

        删除已经备份的数据库

        重新创建名称相同的数据库

        使用该数据库

        导入文件执行:source 备份文件全路径

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值