mysql学习总结(黑马视频总结)--基础篇

提示:以下所有内容都是对黑马视频的讲解的集合,仅用于学习交流

目录

前言

一,mysql的安装:

二,关于编译的软件:

一、基础篇

一 ,sql的通用语法:

二、mysql的分类

1.ddl( data definition language)数据定义语言,用来定义数据库对象(数据库,表,字段)

数据库操作代码及注释

表操作代码及注释

2、dml(data manipulation language) 数据操作语言用来对数据库表中的数据进行增删改

3、dql(data query language) 数据查询语言,用来查询数据库中表的记录

3.1 基本查询

3.2 条件查询

​编辑

3.3 聚合函数

​编辑

3.4 分组查询

3.5 排序查询

3.6分页查询

​编辑

4、dcl(data control language)数据控制语言,用来创建数据库用户,控制数据库

的访问权限

4.1操作函数

4.2 字符串函数

​编辑

4.3 数值函数

4.4 日期函数

4.5 流程函数

三 约束与多表查询

一. 外键

1.1 定义

1.2 外键约束

1.2.1 定义

1.2.2 语法

1.2.3 删除外键出现的 删除/更新关系

1.3 外键与多表查询

1.3.1 定义

1.3.2 内连接

1.3.3 外连接

1.3.4 自连接

1.3.4 联合查询

1.3.5 子查询

1.3.5.1 标量子查询

1.3.5.2 列子查询

1.3.5.3 行子查询

1.3.5.4 表子查询

四, 事务

一,事务简介

二,事务的四大特性

三,并发事务问题



前言

一,mysql的安装:

这里的安装教程是mysql社区版(免费版),有钱的小伙伴也可以下载专业版

参考安装教程:http://t.csdnimg.cn/pl4e1

二,关于编译的软件:

在这里推荐三款软件:

sqlyog    navicat    和 datagrip

个人推荐navicat,因为它所需求的代码量十分少,对一些不熟练sql代码的人也能灵活运用,但是如果你想熟练掌握代码的话,可以使用datagrip或者 sqlyog

naviact 免费下载和安装教程: 星浩工具站(微信公共号)


提示:以上的各种软件的安装及使用教程与本人无关,只用于学术交流,其他用途后果自负!

一、基础篇

一 ,sql的通用语法:

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

2,sql语句可以使用空格/缩进来增强语句的可读性

3,mysql数据库的sql语句可以不区分大小写,关键字建议大写

4,注释:

单行注释:--注释内容或#注释内容(mysql特有)

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

二、mysql的分类

1.ddl( data definition language)数据定义语言,用来定义数据库对象(数据库,表,字段)

数据库操作代码及注释
查询所有数据库: SHOW DATABASES
查询当前数据库:    SELECT DATABASE()
创建: CREATE DATABASE [IF NOT EXISTS] 数据库名 [ DEFAULT CHARSET 字符集 ] [COLLATE  排序规则]
if not exists 的意思是如果我创建的数据库的名字存在就不执行。不存在就创建。 
collate同理
default charset 指定字符集,没有就是默认的,字符集最好使用utf8mb4(拥有四个字节的utf8)
删除 某数据库
DROP DATABASE [IF EXISTS] 数据库名
if exists 同上
使用 某数据库
USE 数据库名
表操作代码及注释
查询:
查询当前数据库的所有表: show tables;
查询表结构:desc 表名
查询指定表的建表语句: show create table 表名;

创建:
create table 表名(
     字段1 字段1类型[ comment 字段1注释 ] ,
     字段n 字段n类型[ comment 字段n注释 ]
) [comment 表注释 ];
    注意最后一个字段是没有‘,’

表操作
字符段的增加
Alter table 表名 add 字段名 类型(长度)[comment 注释] [约束]
字符段的修改
修改数据类型
Alter table 表名 modify 字段名 新数据类型(长度)
修改字段名和字段类型
Alter table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释] [约束]
删除字段
Alter table 表名 drop 字段名;
表名的修改
Alter table 表名 rename 新表名
表的删除
Drop table [ if exists] 表名;
删除指定表,并重新创建该表
Truncate table 表名;

2、dml(data manipulation language) 数据操作语言用来对数据库表中的数据进行增删改

Dml
1,给指定字段增加数据
Insert into 表名(字段名1,字段名2,…)values(值1,值2);
提示:这里是将值1添加进入字段名1,值2添加进入字段名2,
2,给全部字段添加数据
Insert into 表名 values(值1,值2);
提示:这里是将所有的值插入字段中,并且每个字段的值相同
3,批量添加数据
Insert into 表名(字段名1,字段名2)values(值1,值2),(值1,值2);
Insert into 表名values (值1,值2),(值1,值2);
注意:
在插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
字符串和日期型数据应该包含在引号中
插入的数据大小,应该在字段的规定范围内

3、dql(data query language) 数据查询语言,用来查询数据库中表的记录

3.1 基本查询
1,查询多个字段
select 字段1,字段2,字段3 from 表名;
select * from 表名;  # 查询表中所有数据

2,设置别名
select 字段1 [as 别名1], 字段2 [as 别名2] from 表名;
被修改别名的字段,后续操作只能使用别名

3,去除重复记录
select distinct 字段列表 from 表名;
3.2 条件查询
条件查询语法
select 字段列表 from 表名 where 条件列表;

3.3 聚合函数

将一列数据当成一个整体,进行纵向计算

select 聚合函数(字段列表) from 表名;

3.4 分组查询
语法
select 字段列表 from 表名[where 条件] group by 分组组名 [having 分组条件];

where与having的区别:

1,where的优先级大于having,先where条件判断以后再判断having

2,只有having才能使用分组条件,where不行

3.5 排序查询
语法:
select 字段列表 from 表名 order by 字段1 排序方式1,字段2 排序方式2;
排序方式
1,asc 升序
2,desc 降序
3.6分页查询
语法:
select 字段列表 from 表名 limit 起始索引,查询记录数;

注意:
1,起始索引从0开始
2,查询索引的关键词每个语言都不同,mysql是limit
3,若查询的页数为第一页,起始索引可以省略,直接写为 limit 10

4、dcl(data control language)数据控制语言,用来创建数据库用户,控制数据库

的访问权限

4.1操作函数
1,查询权限
show grants for '用户名' @ '主机名';
2,授予权限
grant 权限列表 on 数据库名.表名 to '用户名' @ '主机名';
3,授予权限
revoke 权限列表 on 数据库名.表名 to '用户名' @'表名';
4.2 字符串函数

4.3 数值函数

4.4 日期函数

4.5 流程函数

三 约束与多表查询

一. 外键

1.1 定义

设F是基本关系R的一个或一组属性,但不是关系的键,Ks是基本关系S的主键。如果F与Ks相对应,则称F是R的外键,并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。

总结:外键就是用来联系两个表或者组的桥梁

1.2 外键约束
1.2.1 定义

约束:

作用表中字段的规则,用于限制存储在表中的数据。

目的:用户保证数据库中数据的正确性,有效性和完整型;

外键约束:就是用来让两张表的数据之间建立联系,从而保证数据的一致性和完整性。

有外键的表叫做子表,与外键相关联的表叫做父表

1.2.2 语法
1.添加外键
create table 表名(
     字段名 数据类型;
     [constraint] [外键名称] foreign key (外键字段名) references 主表(主表列名)
);

alter table 表名 add constraint 外键名称 foreign key (外键字段名) REFERENCES 主表(主表列名);

2.删除外键

alter table 表名 drop foreign key 外键名称;
1.2.3 删除外键出现的 删除/更新关系

1.3 外键与多表查询
1.3.1 定义

多表关系: 一对多  多对多  一对一

一对多:在多的一方建立外键,指向一的乙方的主键

多对多:建立第三张中间表,中间表至少包含两个外检,分别关联两方主键。

一对一:一对一关系多用于单表拆分,将一张表的基础字段放在一张表中,其他详细信息放在另一张表中,用来提升操作效率。实现:在任意一方加入外键,关联另一方的主键,并且设置外键为唯一的(unique)

在进行多表查询时,为了避免重复去掉多余的笛卡尔积,我们一般会采用条件查询。来去除多余的笛卡尔积。

1.3.2 内连接

用于查询两表交集的部分

语法

1,隐式内连接
 select 字段列表 from 表1,表2 where 条件;
2,显示内连接
select 字段列表 from 表1 [inner] join 表2 on 连接条件;
1.3.3 外连接

语法

1.左外连接
select 字段列表 form 表1 left [outer] join 表2 on 条件;
相当于查询左表的所有数据包含左表和右表交集的数据

2.右外连接
select 字段列表 from 表1 right [outer] 表2 on 条件;
相当于查询右表的所有数据包含右表和左表交集的数据
1.3.4 自连接

语法

select 字段列表 from 表1 别名 a join 表2 别名 b on 条件;
自连接查询可以是内连接查询也可以是外连接查询
1.3.4 联合查询

联合查询分为 union 和union all

union查询就是把多次查询的结果结合起来,形成一个新的查询集

union all 则是将这个新的查询集进行去重

语法

select 字段列表 from 表a
union [all]
select 字段列表 from 表b;
对于联合查询的每张表的列数需要相同,字段类型也要保持一致
1.3.5 子查询

所有子查询的语法基本一致,差距一般在条件中,每类子查询的条件的操作符都有所不同

1.3.5.1 标量子查询

定义:子查询返回的结果是单个值 

常用的操作值 = ,<>,>,>=,<,<=

语法 标量子查询没有较标准的语法模版

select 字段列表 form 表名 where 条件;

只要是条件满足返回的是单个值就是标量子查询

1.3.5.2 列子查询

1.3.5.3 行子查询

1.3.5.4 表子查询

四, 事务

一,事务简介

事务是一种操作的集合,是一个不可分工的工作单位,事务会将所有操作作为一个整体向系统提交或撤销操作。

二,事务的四大特性

1,原子性:事务是最小的操作单元要么全部成功要么全部失败

2,一致性:事务完成时,必须使所有数据保持一致状态

3,隔离性:数据库系统提供的隔离机制,保证事务在不收外部并发操作影响下的独立环境运行

4,持久性:事务一旦提交或回滚后,对数据库的改变是永久的

三,并发事务问题

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值