mysql详解

本文详细介绍了MySQL数据库的划分、管理工具、语言分类,包括数据操作(增删改查)、表字段基本数据类型、子查询和多表联查等内容,深入讲解了DML、DQL和DCL。此外,还探讨了日期时间类型和数据类型的属性。

1. 数据库划分

关系型数据库:

myslq,oracle,db2,sqlserver,sqllite

非关系型数据库:

redis,mongodb

2. 数据库管理工具

navicat,sqlyog

3. 数据库语言分类

DDL (数据定义语言)
数据定义语言 - Data Definition Language
用来定义数据库的对象,如数据表、视图、索引等
create drop alter truncate

DML (数据操纵语言)
数据处理语言 - Data Manipulation Language
在数据库表中更新,增加和删除记录
如 update, insert, delete 不包含查询

DCL (数据控制语言)
数据控制语言 – Data Control Language
指用于设置用户权限和控制事务语句
如grant,revoke,if…else,while,begin transaction

DQL (数据查询语言)
数据查询语言 – Data Query Language
数据表记录的查询。

4. 数据库操作(增删改查)

基础:

查看所有数据库:show databases;
使用数据库:use 数据库名;
查看当前使用的数据库:select database();
创建数据库:create database 数据库名 charset=utf8;
删除数据库:drop database 数据库名;
查看当前数据库中所有表:show tables;
查看表结构:desc 表名;

4.1 增

insert into 表名 VALUES 数据

4.2 删

delete from student where id =7; 单条删除
delete from student; 删除所有数据

4.3 改

update 表名 set 字段=值 where 约束条件

4.4 查

select * from student;
select * from student where id=3;
select * from student where score BETWEEN 60 and 80;
select * from student where sex=‘男’ and score >80
select * from student where sex=‘男’ or score >80
select * from student where id in(1,2,3)
select * from student where id not in(1,2,3)
select * from student where name like ‘王%’
select * from student where name like ‘%王’
select * from student where name like ‘%王%’

4.5 分组查询

查询男女成绩大于90的各有多少人

select count(*) as 数量,sex as 性别 from student GROUP BY sex HAVING avg(score)>90

4.6 排序

select * from student ORDER BY score desc 倒序
select * from student ORDER BY score 正序

4.7 分页

LIMIT 0,5----> 第一个参数是索引,从0开始;第二个参数是显示几条数据

select * from student LIMIT 1,5

4.8 聚合数据

count() 统计数量

min() 最小值

max()最大值

sum()求和

avg()求平均值

5. 表中字段基本数据类型

5.1 整型
类型大小范围(有符号)范围(无符号)用途
TINYINT1 字节(-128,127)(0,255)小整数值
SMALLINT2 字节(-32 768,32 767)(0,65 535)大整数值
MEDIUMINT3 字节(-8 388 608,8 388 607)(0,16 777 215)大整数值
INT或INTEGER4 字节(-2 147 483 648,2 147 483 647)647)(0,4 294 967 295)
BIGINT8 字节(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)(0,18 446 744 073 709 551 615)极大整数值
FLOAT4 字节(-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)0,(1.175 494 351 E-38,3.402 823 466 E+38)单精度,浮点数值
DOUBLE8 字节(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)双精度,浮点数值
DECIMAL对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2依赖于M和D的值依赖于M和D的值小数值

取值范围如果加了 unsigned,则最大值翻倍,如 tinyint unsigned 的取值范围为(0~256)。
int(m) 里的 m 是表示 SELECT 查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,不知道这个 m 有什么用。

5.2 浮点型
mysql数据类型含义
float(m,d)单精度浮点型 8位精度(4字节) m总个数,d小数位
double(m,d)双精度浮点型 16位精度(8字节) m总个数,d小数位

设一个字段定义为 float(5,3),如果插入一个数 123.45678,实际数据库里存的是 123.457,但总个数还以实际为准,即 6 位。

5.3 定点数

浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。
decimal(m,d) 参数 m<65 是总个数,d<30 且 d<m 是小数位。

5.4 字符串(char,varchar,_text)
mysql数据局类型含义
char(n)固定长度,最多255个字符
varchar(n)可变长度,最多65535个字符
tinytext可变长度,最多255个字符
text可变长度,最多65535个字符
mediumtext可变长度,最多2的24次方-1个字符
longtext可变长度,最多2的32次方-1个字符

char和varchar的区别:

char是定长字符串,长度是固定的
如果插入数据的长度小于char的固定长度时,则用空格填充
因为长度固定,所以存取速度要比varchar快很多,甚至能快50%
但正因为其长度固定,所以会占据多余的空间,是空间换时间的做法
对于char来说,最多能存放的字符个数为255,和编码无关
插入的数据是多长,就按照多长来存储

varchar在存取方面与char相反,它存取慢,因为长度不固定
但正因如此,不占据多余的空间,是时间换空间的做法
对于varchar来说,最多能存放的字符个数为65535
总之,char更快,varchar更小,彼此都具备优秀的特质,怎么使用就看业务

简介版如下:

char和varchar的区别:

1、char的长度是固定的,varchar的长度是可变的
2、char添加时尾部不足补空格,读取时会删掉空格,而varchar不受影响
3、char一般情况下检索速度要比varchar快
4、char最多存255个字符,varchar最多存65535个字符

having和where的区别::

一般情况下,两者可通用,但where后面的条件字段必须在表中有,否则报错
having后面的条件是select后面出现的,否则报错
where必须在group by前面,having必须在group by后面

5.5 日期时间类型
mysql数据类型含义
date日期 ‘2008-12-2’
time时间 ‘12:25:36’
datetime日期时间 ‘2008-12-2 22:06:44’
timestamp自动存储记录修改时间

若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。

特别注意:
设计日期的表字段以后,使用insert  into插入数据时,一定要以字符串的形式插入,否则插入的日期都将会是0000-00-00
在这里插入图片描述
insert into student values(1001,“张大民”,95.5,“2018-03-12”);
在这里插入图片描述

5.6 数据类型的属性
mysql关键字含义
NULL数据列可包含NULL值
NOT NULL数据列不允许包含NULL值
DEFAULT默认值
PRIMARY KEY主键
AUTO_INCREMENT自动递增,适用于整数类型
UNSIGNED无符号
CHARACTER SET name指定一个字符集

6. 子查询

select * from 表1 where 表1.字段=(select 表2.字段 from 表2 where 表2.字段=‘条件’)

7. 多表联查

两个表:

select 表1.字段,表2.字段 from 表1 inner join 表2 on 表1.字段 = 表2.字段

三个表:

select 表1.字段,表2.字段,表3.字段 FROM 表1 inner join 表2 on 表1.字段=表2.字段 inner join 表3 on 表1.字段=表3.字段 where 条件

7.1 inner join、left join、right join三者之间的区别(union全连接)

left join 以左边表为主,右边没有,用null代替
right join 以右边表为主,左边没有,用null代替
inner join 显示共同有的

inner join:
在这里插入图片描述

left join:
在这里插入图片描述

right join:
在这里插入图片描述
union :实现全连接,将左连接和右连接连接起来
在这里插入图片描述

8. 快捷进入mysql

在桌面新建一个txt文件
将txt文件的后缀改为bat
右击点击编辑
编辑内容如下:

cd D:\mysql\mysql\bin
d:
mysql -uroot -p
pause
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值