Mysql

目录

SQL语句的分类

DDL

表的数据类型

DML

 DQL

聚合函数

where和having的区别

多表查询

内连接

外连接

自然连接

        联合查询:union 关键字

子查询

函数

事务 

事务控制

并发事务

脏读

不可重复读

幻读

事务隔离级别


SQL语句的分类

DDL

1.查询所有数据库
show databases;
 
2.查询当前正在使用的数据库
select database();

3.创建数据库
create database databaseName;

#4.创建数据库并指定字符集
create database databaseName default charset utf8mb4;

5.删除数据库
drop database databaseName;

6.切换数据库
use databaseName;

7.查询当前库所有表
show tables;

#8.查看指定表结构(describe:描述)
desc tableName;

#9.查询指定表的建表语句
show create table tableName;

10.创建表语句
create table tableName(
    name1 int primary key comment '字段注释',
    name2 char not null
)comment '表注释';

#11.修改表
添加字段
alter table tableName add 字段名 类型(长度) [约束]

修改数据类型
alter table tableName modify 字段名 新类型(长度) [约束]

修改字段名和字段类型
alter table tableName change 原字段名 新字段名 新字段名类型(长度) [约束]

删除字段
alter table tableName drop 字段名

修改表名
alter table tableName rename to 新表名

#12.删除表
drop table tableName;

表的数据类型

数值类型
类型占字节大小有符号范围无符号范围描述
TINYINT1 byte(-128,127)(0,255)极小整数值
SMALLINT2 byte(-32768,32767)(0,65535)小整数值
MEDIUMINT3 byte(-8388608,8388607)(0,16777215)中整数值
INT/INTEGER4 byte(-2147483648,2147483647)(0,4294967295)大整数值
BIGINT8 byte(-2^63,2^63-1)(0,2^64-1)极大整数值
FLOAT4 byte单精度浮点数
DOUBLE8 byte双精度浮点数
DECIMAL小数值,金钱等

age tinyint unsigned

score double(4,1)

money decimal(12,6)
字符串类型
类型占字节大小描述
CHAR0-255 byte定长字符串(需指定长度)
VARCHAR0-65535 byte变长字符串(需指定长度)
TINYBLOB0-255 byte不超过255个字符的二进制数据
TINYTEXT0-255 byte短文本字符串
BLOB0-65535 byte二进制形式的长文本数据
TEXT0-65535 byte长文本数据
MEDIUMBLOB0-16777215 byte中等长度的二进制文本数据
MEDIUMTEXT0-16777215 byte中等长度长文本数据
LONGBLOB0-4294967295 byte极大长度二进制文本数据
LONGTEXT0-4294967295 byte极大长度长文本数据

日期时间类型
类型占字节大小范围格式描述
DATE3 byte1000-01-01 ,9999-12-31YYYY-MM-DD日期值
TIME3 byteHH:MM:SS时间值
YEAR1 byte1901 - 2155YYYY年份值
DATETIME8 byte日期+时间值
TIMESTAMP日期+时间值(将时间转换成时间戳存储)

DML

1.给指定字段添加数据
insert into tableName() values();

2.修改数据
update tableName set 字段名1=值1,字段名2=值2 [where 条件]

3.删除数据 
delete from tableName [where 条件]

 DQL

SELECT ----- FROM ---- WHERE ---- GROUP BY ---- HAVING ---- ORDER BY ---- LIMIT

1.查询
select [distinct] 字段 from tableName where 条件 
group by 分组字段列表
having 分组后条件列表
order by 排序字段    ASC:升序(默认)  DESC:降序
limit 分页参数

聚合函数

        count(),max(),min(),avg(),sum()。

where和having的区别

        执行时机不同:where分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。

        判断条件不同:where不能对聚合函数进行判断,而having可以

多表查询

内连接

        内连接:查询AB交集部分数据

        隐式内连接

select * from table1,table2 where 条件;

        显示外连接

select * from table1 join table2 on 条件;

外连接

        左外连接:查询左表所有数据,以及两张表交集部分数据

select * from table1 left join table2 on 条件;

        右外连接:查询右表所有数据,以及两张表交集部分数据

select * from table1 right join table2 on 条件;

自然连接

        联合查询:union 关键字

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

对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
union all 会将全部的数据直接合并在一起, union 会对合并之后的数据去重。
select name from table1
union [all]
select name from table2;

子查询

        嵌套查询。

函数

字符串函数
函数功能
concat(S1,S2,...Sn)字符串拼接,将S1,S2...Sn拼接成一个字符串
lower(str)将字符串str全部转换成小写
upper(str)将字符串str全部转换成大写
lpad(str,n,pad)左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
rpad(str,n,pad)右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
trim(str)去掉字符串头部和尾部的空格
substring(str,start,len)返回字符串str从start位置起len个长度的字符串

数值函数
函数功能
cell(x)向上取整
floor(x)向下取整
mod(x,y)返回 x ➗ y 的余数
rand()返回0 ~ 1内的随机数,[ 0 , 1 )
round(x,y)返回 x 四舍五入的值,并保留 y 位小数

日期函数
函数功能
curdate()返回当前日期
curtime()返回当前时间
now()返回当前日期和时间
year(date)获取指定date的年份
month(date)返回指定date的月份
day(date)返回指定date的日期
datediff(date1,date2)返回起始时间date1 和 结束时间date2之间的天数
date_add(date,interval
 expr type)
返回一个日期 / 时间加上一个时间间隔 expr 后的
时间值


 

SELECT DATE_ADD('2023-10-26', INTERVAL 3 DAY); -- 结果为 '2023-10-29'

SELECT DATE_ADD('2023-10-26 12:00:00', INTERVAL 2 HOUR); -- 结果为 '2023-10-26 14:00:00'
流程函数
函数功能
if(value , t , f)如果value为true,返回 t ,否则返回 f 
ifnull(value1,value2)如果value1不为空,返回value1,否则返回value2
case when [ val1 ] then [res1] ... else [default] endcase表达式用于执行条件逻辑并返回不同的值,类似于编程中的条件语句。case 表达式可以有多个条件,每个条件对应一个可能的结果。

SELECT
    name,
    CASE
        WHEN age < 18 THEN 'Minor'
        WHEN age >= 18 AND age < 65 THEN 'Adult'
        ELSE 'Senior'
    END AS age_group
FROM
    users;

事务 

事务控制

开启事务:start transaction 或者 begin;

提交事务:commit;

回滚事务:rollback;

并发事务

脏读

概念:一个事务读到另一个事务还没有提交的数据

不可重复读

概念:一个事务先后读取到同一条记录,但两次读取的数据不同

幻读

概念:一个事务按照条件查询时,没有数据,但插入时,数据存在。l

事务隔离级别

为解决并发事务所引发的问题,在数据库中引入事务隔离级别

隔离级别脏读不可重复读幻读
Read uncommitted
Read committed×
Repeatable Read(默认)××
Serializable×××

set session transaction isolation level <isolation_level>;
其中 <isolation_level> 是您想要设置的隔离级别,可以是
 "READ-UNCOMMITTED"、"READ-COMMITTED"、"REPEATABLE-READ" 或 "SERIALIZABLE" 中的一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值