zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

mysql数据库学习笔记(二)

2023-09-14 09:13:55 时间

mysql数据库学习笔记

什么是数据库

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

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

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

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

几个概念介绍

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

MySQL介绍

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

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

MySQL安装

请参考:windows下通过压缩包形式安装MySQL

MySQL可视化工具

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

五种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区别

 myisaminnodb
事务支持不支持支持
数据行锁定不支持(默认是表锁)支持
外键约束不支持支持
全文索引支持不支持
表空间大小较小较大,约是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 表名称;