Mysql数据库基础总结:

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。Mysql数据库基础总结:,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

什么是数据库:

数据库(DataBase):存储和管理数据的一个仓库。

数据库类型分为:关系型数据库和非关系型数据库。

关系型数据库(SQL):存储的数据以行和列为格式,类似于excel表格,一张二维表。例如:MySQL、Oracle等。

非关系型数据库:数据是以对象类型存储。例如:redis、mongdb等。

几个概念介绍:

  • DB:DataBase数据库。
  • DBMS:DataBase Management System数据库管理系统。
  • DBS:DataBase System数据库系统。
  • DBA:DataBase Administrator数据库管理员。

MySQL介绍:

开源免费、属于Oracle公司旗下。体积小、速度快。

常用版本:5.7和8.0两个版本。

MySQL安装

请参考:百度

MySQL可视化工具:

常见的MySQL可视化管理工具有:Navicat、sqlyog、DBeaver等。

五种SQL类型:

  • DDL:Data Definition Language,数据定义语言。例如:create、alter、drop等,主要用于操作表结构。
  • DML:Data Manipulation Language,数据操纵语言。例如:select、insert、delete、update,主要用于操作表中数据。
  • DCL:Data Control Language,数据控制语言。例如:grant、deny、revoke,主要用于控制数据访问权限。
  • DTL:Data Transaction Language,数据事务语言。例如:commit、rollback,主要用于事务控制。
  • DQL:Data Query Language,数据查询语言。例如:select,主要用于查询数据表中的数据。

操作数据库命令:

创建数据库

create database 数据库名称;

指定数据库字符集

create database 数据库名称 default character set utf8;

指定数据库引擎

create database 数据库名称 engine = innodb

删除数据库

drop database 数据库名称;

使用数据库

use 数据库名称;

查看已有数据库

show databases; -- 有s

查看某个数据库的信息

show create database 数据库名称;

数据表操作:

创建数据表

create table 表名称(
    字段名称 类型 [属性] [索引] [注释],
    字段名称 类型 [属性] [索引] [注释],
    字段名称 类型 [属性] [索引] [注释]
);
 
CREATE TABLE  USER (
    id INT PRIMARY KEY auto_increment,
    username VARCHAR (20) NOT NULL,
    password VARCHAR (20) NOT NULL
);

数据表字段类型:

数值类型

  • tinyint:占用1字节。
  • int:占用4字节。这是常用类型。
  • bigint:占用8字节。
  • float:4字节。
  • double:8字节。
  • decimal:高精度浮点类型,字符串类型的浮点类型。

字符串类型

  • char:固定长度的字符串类型。0到255长度。
  • varchar:可变长度的字符串类型。0到65536长度。这是常用类型。
  • tingtext:微型文本。2^8-1长度,博客文章可以使用该类型足以。
  • text:文本串。2^16-1长度。

日期类型

  • date:日期类型,格式:yyyy-MM-dd。
  • time:时间类型,格式:HH:mm:ss。
  • datetime:日期时间类型,格式:yyyy-MM-dd HH:mm:ss。这是常用类型。
  • timestamp:时间戳类型,格式:毫秒数。

myisam和innodb区别

myisam innodb
事务支持 不支持 支持
数据行锁定 不支持(默认是表锁) 支持
外键约束 不支持 支持
全文索引 支持 不支持
表空间大小 较小 较大,约是myisam的2倍

mysiam优点:节约空间、存储速度快。

innodb优点:安全性高,支持事务,支持多用户多表操作。

数据表操作

添加数据

insert into 表名称 (字段1,字段2...) values (1,2...);

更新数据

update 表名称 set 字段1=1,字段2=2... where 条件;

删除数据

delete from 表名称; -- 全表删除
 
delete from 表名称 where 条件; -- 指定数据删除

清空数据

truncate 表名称;

truncate作用是清空一张数据表中的所有数据,表的结构和索引约束不会改变。

delete和truncate区别

  • delete和truncate都可以用于清空一张数据表的所有数据。
  • delete清空数据后,数据的自增值不会从1开始。
  • truncate清空数据后,数据的自增会从1开始。
  • delete删除问题,对于innodb引擎,重启数据库后,自增值会从1开始,因为innodb引擎下,自增数据存储在内存中。
  • 对于myisam引擎,delete删除问题,重启数据库后,自增值不会从1开始,因为myisam引擎下,自增数据存储在文件中。

数据库查询

基本查询语句格式

select 字段 from 表名称 where 条件 order by 排序字段 group by 分组字段 Asc/Desc;

去重查询

select distinct 字段 from 表名称 where 条件;

使用关键字distinct去除重复的数据,只保留一条。

like模糊查询

select 字段 from 表名称 where 字段 like '%内容%';
  • %百分号表示任意字符,下划线_表示一个字符。

IN范围查询

select 字段 from 表名称 where 字段 in(1,2,3);
  • 表示字段是值1、值2、值3其中的一个即可。

数据联表查询

  • inner join内连接
select 字段
from A
inner join B 
on A.x = B.x
where 条件;

在这里插入图片描述

  • left join 左连接(不含交集情况)
select 字段
from A
left join B
on A.x = B.x
where B.x is null;

在这里插入图片描述

  • right join 右连接(不含交集情况)
select 字段
from A
right join B
on A.x = B.x
where A.x is null;

在这里插入图片描述

  • left join 左连接(含交集情况)
select 字段
from A
left join B
on A.x = B.x

在这里插入图片描述

  • right join 右连接(含交集情况)
select 字段
from A
right join B
on A.x = B.x

在这里插入图片描述

  • full outer join 全外连接(含交集情况)
select 字段
from A
full outer join B
on A.x = B.x

在这里插入图片描述

  • full outer join 全外连接(不含交集情况)
select 字段
from A
full outer join B
on A.x = B.x
where A.x is null or B.x is null;

在这里插入图片描述

数据库聚合函数

count()函数:统计数量。

-- 指定列计数
select count(指定列) from 表名称;
 
-- *
select count(*) from 表名称;
 
-- 1
select count(1) from 表名称;

三者区别:

  • count(指定列):只统计该列的数量,如果该列的值为null,则不统计该列。
  • count(*):统计所有列,相当于按行计数,如果为null,则也会就行统计。
  • count(1):和count(*)类似。

max()函数:求最大值。

select max(指定列) from 表名称;

min()函数:求最小值。

select min(指定列) from 表名称;

avg()函数:求平均值。

select avg(指定列) from 表名称;

sum()函数:求数据总和。

select sum(指定列) from 表名称;

分组查询

分组语法

在 MySQL 使用 GROUP BY 来实现分组。语法如下:
SELECT [DISTINCT] *|分组字段1 [别名] [, 分组字段2 [别名] ,…] | 统计函数
FROM 表名称 [别名], [表名称 [别名] , …]
[WHERE 条件(s)]
[GROUP BY 分组字段1 [, 分组字段2 ,…]]
[ORDER BY 排序字段 ASC | DESC [, 排序字段 ASC | DESC]];
分组效果:
  • 使用 GROUP BY 子句将表分成小组;
  • 结果集隐式按升序排列,如果需要改变排序方式可以使用 ORDER BY 子句。

使用分组注意

  • SELECT 子句出现的字段,要不在统计函数中,要不出现在 GROUP BY 子句中,否则不合理(整
  • 体与个体);
  • 在GROUP BY 子句中出现的字段,可以不出现在 SELECT 列表中;
  • 统计函数可以单独使用,SQL 中可以没有 GROUP BY 子句;
  • 在 GROUP BY 子句中,可以按单列进行分组,也可以在多列上进行分组,多列分组就是按照多个
  • 字段的组合进行分组,最终的结果也会按照分组字段进行排序显示。

分组限定

  • 不能在 WHERE 子句中对分组限定,限制组须使用 HAVING 子句;
  • 不能在 WHERE 子句中使用统计函数,而在 HAVING 子句可使用统计函数。

列子:

查询在 80, 81, 82 年各进公司多少人

SELECT YEAR(HIREDATE) y, COUNT(EMPNO)
FROM emp
GROUP BY YEAR(HIREDATE)
HAVING y BETWEEN '1980' AND '1982'

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/188500.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!