Mysql

1.定义(分类)

在了解 SQL 之前我们需要知道下面这几个概念

  • 数据定义语言: 简称DDL (Data Definition Language),用来定义数据库对象:数据库、表、列等;
  • 数据操作语言: 简称DML (Data Manipulation Language),用来对数据库中表的记录进行更新。关键字: insert、update、delete等
  • 数据控制语言: 简称DCL(Data Control Language),用来定义数据库访问权限和安全级别,创建用户等。关键字: grant等
  • 数据查询语言: 简称DQL(Data Query Language),用来查询数据库中表的记录,关键字: select from where等

2.CRUD入门

表的创建(DDL)

数据类型:

Mysql_第1张图片
Mysql_第2张图片
Mysql_第3张图片

创建表:

Mysql_第4张图片
auto_increment代表自增

约束:

Mysql_第5张图片

删除表:

Mysql_第6张图片

表的插入,更新,删除(DML)

插入表

Mysql_第7张图片

更新表

Mysql_第8张图片

删除表

Mysql_第9张图片

表的查询(DQL)

基本的查询

Mysql_第10张图片
Mysql_第11张图片
Mysql_第12张图片
distinct代表不重复

条件查询

运算符:

Mysql_第13张图片

实现

-- 1.查询 username为 wzz 的人员信息:
select * from user where username='wzz';

-- 2.查询 age大于等于10的人员信息:
select * from user where age>=10;

-- 3.查询 signature是null的人员信息:
select * from user where signature is null;

-- 4.查询 signature不是null的人员信息:
select * from user where signature is not null;

-- 5.查询 commentTime是在对应时间段间的人员信息:
select * from comment where commentTime >= '2022-5-18 23:58:41' and commentTime <= '2022-5-21 23:58:41';

-- 6.查询 id是1,commentTime是在对应时间段间的人员信息:
select * from comment where commentTime <= '2022-5-18 23:58:41' and authorID = 1;

-- 7.查询 or的数据:
select * from user where age = 8 or age =20;
select * from user where age in (8,20);

-- 8.查询 模糊查询:
select * from user where username like '%杨%';

-- 9.查询 模糊查询2个字符的username:
select * from user where username like '__'

聚合函数

Mysql_第14张图片

分组查询

Mysql_第15张图片
Mysql_第16张图片

排序查询

Mysql_第17张图片

分页查询

image.png
Mysql_第18张图片

if,when表达式

image.png
Mysql_第19张图片
Mysql_第20张图片

mysql进阶

连表

一对多

表的创建

Mysql_第21张图片

-- auto-generated definition
create table tb_staff
(
    id         int auto_increment comment '组件id'
        primary key,
    username   varchar(20)      not null comment '用户名',
    password   varchar(30)      not null comment '密码',
    name       varchar(10)      not null comment 'name',
    gendar     tinyint unsigned not null comment '性别,1男,2女人

',
    image      varchar(300)     null comment '图片
',
    job        tinyint unsigned null comment '工作
',
    entrydate  date             null comment '入职日期
',
    createtime datetime         null comment '创建时间',
    endtime    datetime         null comment '结束时间',
    deptid     int unsigned     null comment '部门id
',
    constraint tb_staff_username_uindex
        unique (username)
);
-- auto-generated definition
create table tb_dept
(
    id         int auto_increment
        primary key,
    name       varchar(10) not null,
    createtime datetime    not null,
    endtime    datetime    not null,
    constraint table_dept_tname_uindex
        unique (name)
)
    comment '部门表
';


外键

Mysql_第22张图片
Mysql_第23张图片

alter table tb_staff drop foreign key tb_staff_tb_dept_id_fk;

alter table tb_staff
add constraint tb_staff_tb_dept1_id_fk
foreign key (deptid) references tb_dept (id);

一对一

Mysql_第24张图片

多对多

Mysql_第25张图片

多表查询

select * from tb_staff,tb_dept where tb_staff.deptid = tb_dept.id;

内连接

Mysql_第26张图片
Mysql_第27张图片

外连接Mysql_第28张图片

子查询

Mysql_第29张图片
查询name=未来的信息表

select * from tb_staff where deptid = (select id from tb_dept where name='未来');

Mysql_第30张图片

行子查询:

Mysql_第31张图片

表子查询Mysql_第32张图片

事务

概念

![6KB0}LR{4Y]R7(~~LJWH.png

使用

Mysql_第33张图片
Mysql_第34张图片

四大特性Mysql_第35张图片

索引

概念

image.png

优缺点

Mysql_第36张图片

语法

Mysql_第37张图片
Mysql_第38张图片
图片来源:B站黑马程序员,javaweb视频

你可能感兴趣的:(后端,mysql,数据库,sql)