快速掌握MySql的常用基本操作

一、MySql的数据类型

整数类型字节最小值最大值
TINGINT1有符号-128,无符号0有符号127,无符号255
SMALLINT2有符号032768,无符号0有符号32767,无符号65525
INT、INTEGER4有符号-2147483648,无符号0有符号2147483647,无符号4294967295
BIGINT8有符号-9223372036854775808,无符号0有符号9223372036854775808,无符号18446744073709551615
浮点数类型字节最小值最大值
FLOAT4±1.175495351E-38±3.402823466E+38
DOUBLE8±2.2250738585072014E-308±1.7976931348623157+308

浮点类型推荐使用 decimal(保持为字符串格式)

字符串类型字节描述及存储需求
CHAR(M)M
VARCHAR(M)M为0~65535间的整数,值的长度+1字节
TINGBLOB允许长度0~255字节,值的长度+1字节
BLOB允许长度0~65535字节,值的长度+2字节
MEDIUMBLOB允许长度0~167772150字节,值的长度+3字节
LONGBLOB允许长度0~4294967295字节,值的长度+4字节
TINGTEXT允许长度0~255字节,值的长度+2字节
TEXT允许长度0~65535字节,值的长度+2字节
MEDIUMTEXT允许长度0~167772150字节,值的长度+3字节
LONGTEXT允许长度0~4294967295字节,值的长度+4字节
VARBINARY(M)允许长度为0~M个字节的可变厂字节字符串,值的长度+1字节
BINARY(M)M允许长度0~M个字节的定长字节字符串
日期和时间类型字节最小值最大值
DATE41000-01-019999-12-31
DATETIME81000-01-01 00:00:009999-12-31 23:59:59
TIMESTAMP4197001010800012038年的某个时刻
TIME3-838:59:59939:59:59
YEAR119012155

enum 和 set:只能去固定的值,但enum唯一,set可以去任意个值

二、MySql运算符

> 		 	 算术运算符   		#1
+				加法
-				减法
*				乘法
/, DIV			除法,返回商
%,MOD			除法,返回余数

>		  	 逻辑运算符		    #2
NOT或!			逻辑非
AND或&&			逻辑与
OR或||			逻辑或

>		 	 比较运算符   		#3
=				等于
<>或!=			不等于
<=>				NULL安全的等于
<				小于
>				大于
>=				小于等于
<=				大于等于
BETWEEN			存在知道范围
IN				存在指定集合
IS NULL  		为NULL
IS NOT NULL 	不为NULL
LIKE			通配符匹配
REGEXP或RLIKE   正则表达式

三、MySql常用函数

>			时间和日期函数    #1
NOW();    //返回当前日期和时间
UNIX_TIMESTAMP(date);  //返回日期date的UNIX时间戳
CURRENT_TIMESTAMPCURRENT_TIMESTAMP();  //当前时间
CURDATE();
CURTIME();
DATE_FORMAT(date, "%y-%m-%d");  //格式化时间等

>			聚合函数			#2
count()sum()avg()max()min()

四、MySql完整性约束

primary key    	主键
auto_increment	自增键
unique			唯一键
not null		非空键
default			默认值
foreign key		外键

五、MySql核心操作(库、表、CRUD、连接)

SQL作为结构化查询语言,是关系型数据库的同样语言,分为三个类别:

  • DDL(Data Definition Languages)语句:
    数据定义语言,这些语句定义了不同的数据库、表、列、索引等数据库对象的定义。常用的语句关
    键字主要包括 create、drop、alter等。
  • DML(Data Manipulation Language)语句:
    数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字
    主要包括 insert、delete、update 和select 等。
  • DCL(Data Control Language)语句:
    数据控制语句,用于控制不同的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户
    的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。

库操作

show databases;   //查询数据库
create database ChatDB;  //创建数据库
drop database ChatDB;   //删除数据库
use ChatDB;   //选择数据库

表操作

show tables;   //查看表
create table user(
		id int unsigned primary key not null auto_increment,
		name varchar(50) not null,
		age tinyint not null,
		sex enum('M','W') not null
		)engine=INNODB default charset=utf8;   
		//创建表
		
desc user;   //查看表结构
show create table user\G;  //查看建表sql,\G表示分别罗列出每个属性的详细信息
drop table user;   //删除表

CRUD

>     insert增加       	#1
insert into user(id, name, age, sex) values(null, 'zhang san', 22,
'M');
insert into user(id, name, age, sex) values(null, 'li si', 21, 'W'),
(null, 'gao yang', 20, 'M');

>    update修改			#2
update user set age=23 where name='zhang san';
update user set age=age+1 where id=3;

>    delete删除			#3
delete from user where age=23;
delete from user where age between 20 and 22;
delete from user;

>    select查询			#4
select * from user;
select id,name,age,sex from user;
select * from user where sex='M' and age>=20 and age<=25;

>     distinct去重		#5
select distince name from user;

>	  is[not]null空值  	#6
select * from user where name is null;

>     in子查询			#7
select * from user where id in(10, 20, 30, 40, 50)
select * from user where id not in(10, 20, 30, 40, 50)
select * from user where id in(select stu_id from grade where average>=60.0)

>     limit分页			#8
select * from user limit N(offset) ,M(lines);

没有索引的情况下,limit可以提高效率
# 1 select * from user limit (pag - 1) * pagnum, pag;  效率低
select * from user where id > 上一页的最后一条数据 limit 20; 效率高
# 2 select * from user  limit 100000, 20;
# 3 select * from user where id > 100000 limit 0, 20;

>      order by排序		#9
select id,name,age,sex from user where sex='M' and age>=20 and age<=25
order by age asc;

>	   group by分组		#10
select count(id),age from user group by age having age>20;

通过存储过程生成大量测试数据

delimiter $

Create Procedure add_t_user (IN n INT)
BEGIN
DECLARE i INT;
SET i=0;
WHILE i<n DO
INSERT INTO t_user VALUES(NULL,CONCAT(i+1,'@fixbug.com'),i+1);
SET i=i+1;
END WHILE;
END$

delimiter ;
call add_t_user(2000000);

连接查询

先截个图,如下:
在这里插入图片描述

内连接(即最简单的等值连接):
select * from ta, tb where ta.a = tb.b;

左外连接(左连接):把left这边的表所有的数据显示出来,在右表中不存在相应数据,则显示NULL
select a.* from User a left outer join Orderlist b on a.uid=b.uidd where
a.orderid is null;

右外连接(右连接):把right这边的表所有的数据显示出来,在左表中不存在相应数据,则显示NULL
select a.* from User a right outer join Orderlist b on a.uid=b.uid where
b.orderid is null

参考图源博客:https://blog.csdn.net/qq_62687015/article/details/128104836

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leisure-pp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值