Mysql——入门(下)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: mysql数据库管理软件:C/S(1)服务器必须先启动(2)客户端连接服务器端

函数

字符串函数

(1)length (zx):求字节数,和字符集有关

(2)char_length (zz):求字符数

(3)CONCAT(str1,str2,…)

( 4)CONCAT_WS(分隔符,strl,str2,…)

UPPER(S)或UCASE(S)

将字符串s的所有字母转成大写字母

LOWER(s)缆LCASE(s)

将字符串s的所有字母转成小写字母

LEFT(s,n)

返回字符串S最左边的n个字符

RIGHT(s,n)

返回字符串s最右边的n个字符

LPAD(str, len, pad)

用字符串pad对str最左边进行填充,直到str的长度为len个字符

RPAD(str ,len, pad)

用字符串pad对str最右边进行填充,直到tr的长度为len个字符

LTRIM(S)

去掉字符串s左侧的空格

RTRIM(s)

去掉字符串s右侧的空格

TRIM(s)

去掉字符串s开始与结尾的空格

TRIM( [BOTH ] s1 FROMs)

去掉字符串s开始与结尾的s1

TRIM( [LEADING] s1 FROM s)

去掉字符串s开始处的s1

TRIM( [TRALING] s1 FROM s)

去掉字符串s结尾处的s1

数学函数

ROUND(x,y)

返回参数x的四舍五入的有y位的小数的值

TRUNCATE(x.y)

返回数字x截断为y位小数的结果

SORT(x)_

返回的平方根

POW(x,y)

返回x的y次方

时间函数

CURDATE()或CURRENT _DATE()

返回当前日期

CURTIME()或CURRENT TIME()

返回当前时间

NOW() / SYSDATE() / CURRENT TIMESTAMP() / LOCALTIME()/

返回当前系统日期时间

LOCALTIMESTAMP()

YEAR(date) / MONTH(date) / DAY(date) 1 HOUR(time) 1

返回具体的时间值

MINUTE(time) / SECOND(time)

WEEK(date) / WEEKOFYEAR(date)

返回一年中的第几周

DAYOFWEEK()

返回周几,注意:周日是1,周一是

2,。。。周六是7

WEEKDAY(date)"

返回周几,注意,周1是0,周2是

1…。。周日是6

DAYNAME(date)

返回星期:

MONDAY,TUESDA…UNDAY

MONTHNAME(date)

返回月份:January…。

DATEDIFF(date1,date2) / TIMEDIFF(time1, time2)

返回date1 - date2的日期间隔/返回

time1 - time2的时间间隔

DATE ADD(datetime, INTERVAL expr type)

返回与给定日期时间相差INTERVAL时间

段的日期时间

DATE FORMAT(datetime ,fmt)

按照字符串fmt格式化日期datetime值

其他函数、

password(str)

返回字符串str的加密版本, 41位长的字符串

md5(str)

返回字符串str的md5值,也是一种加密方式

组函数

组函数类型

。AVG()【求平均数】

。SUM()【求总和】

。MAX()【求最大值】

。MIN()【求最小值】

。COUNT()【求数量之和】

连接

1、I内连接:inner join

2、外连接(1)ANB

(1)左外连:left join

(2)A

(3)A-ANB

(2)右外连接:rightjoin

(4)B

(5)B-AnB

(3)全外连接:full join但是可以使用union(合并)结果来实现以下两种结果

但是不直接支持全外连接,(2) Aunion(合并)(4)B

(6) AUB 用

(7)AUB-AnB用(3) A - A nB union(合并)(5)B-AnB

内连接:AnB、

两张表内连接关联查询

select字段列表

from A表名inner joinB表名

on 1个关联条件

where其他条件等

三张表内连接关联查询

select字段列表

from A表名inner joinB表名inner joinc表名

on 2个关联条件

where其他条件等

关联条件的个数=表数- 1

如果少了关联条件,就会笛卡尔积

全外连接

使用union来实现全外连接的查询结果:

(1)AUB

(2)AUB- A B 迂回成

(1)A UNION B

(2)A - A B UNION B - A∩B

Select的六大子句

使用规则:按顺序使用

(1)form子句:后面跟字段列表等表状工具

(2)where子句:后面跟条件 where意思取那几行,要哪些行(where后面不能跟分组语句)

(3) group by:后面跟字段 group by意思是分组

select结果字段列表

from表名称

where条件

group by.分组字段列表;

要求:结果字段列表中不要出现和分组无关的字段

(4)having:后面跟条件

having:意味着在分组统计结果中再次对统计结果加条件,不是对原表中的记录加条件

(5)order by: 后面跟字段或表达式

order by:. 排序

升序:省略asc或加asc

降序: desc

(6)limit:取几条记录

limit m, n

m表示从第几天记录开始取,n表示最多取n条件 通常用于分页

查询

查询的学习的顺序:

1、简单查询

2、联合查询

3、select的6个子句

4、子查询


子查询:

在一个查询中嵌套了另一个查询,那么这个嵌套在里面的查询称为子查询。 子查询的结果作为外部查询的条件或者数据的筛选范围来使用。

子查询分为三类:

1、 where

子查询的结果作为外部查询的条件使用的

(1) 子查询结果是: 单值结果

比较运算符后面可以跟单值的结果

(2)子查询结果是:一列多行的多值结果

in(),比较运算符all(), 比较运算符any()

2、 from

子查询的结果是作为外部查询的筛选范围来使用

注意:

对子查询的多行多列的二维表结构的临时表取别名

给用分组函数统计的结果列取别名

3、exists型

子查询的结果是作为外部查询的条件使用的

Mysql事务

1、事务处理(事务操作)︰保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方 式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;要 么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。

2、事务的ACID属性∶

( 1)原子性(Atomicity )

原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

( 2)一致性(Consistency )

事务必须使数据库从一个一致性状态变换到另外一个一致性状态。

(3)隔离性( lsolation )

事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是 隔离的,并发执行的各个事务之间不能互相干扰。

(4)持久性(Durability )

持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该 对其有任何影响


事务:

事务是表示一组操作要么同时成功,要么同时失败,而且事务与事务之间是独立。

事务有ACID的特性。

(1)原子性(2)一致性(3)隔离性(4)持久性

mysql默认是自动提交事务,一句SQL是一个事务,执行成功一句就提交一句。

手动开始事务,取消自动提交。

方式一:

set autocommit = false;

这次客户端连接,在你恢复自动提交之前,

r接下来所有的sQL执行都必须手动提交了,否则就不生效。

这个设置只管一个连接,和其他的连接(登录)无关。

set autocommit = false;

…都是需要手动提交的。

set autocommit = true;

当只是部分的SQL需要构成事务,手动提交,而其他SQL还是想要自动提交的。 那么我们选择方式二。

方式二:

start transaction;

一个事务

commit;或rollback;

start transaction; 另一个事务

commit;或rollback;

tip:事务对ddl语句无效

用户与权限

1、身份认证:

( 1 )IP+用户名作为身份验证

例如:root@localhost:只允许在本机使用root用户登录

root@%:运行在任意机器上使用root用户登录

root@192.168.11.56:只运行在192.168.11.56主机上使用root用户登录 chailinyan@%∶运行在任意机器上使用chailinyan用户登录

( 2)密码

2、给每个用户权限,4个权限级别∶

( 1)全局

( 2)数据库

(3)表 l

( 4)字段

依次校验权限,如果前面通过了,后面就不校验了∶

全局>数据库>表>字段

2、忘记root用户密码问题

1:通过任务管理器或者服务管理,关掉mysqld(服务进程)

2:通过命令行+特殊参数开启mysqld

mysqld --skip-grant-tables

3:此时,mysqld服务进程已经打开,并且,不需要权限检查.

4:mysql-uroot无密码登陆服务器.

5:修改权限表

( 1 ) use mysql;

( 2 ) update user set Password = password(123456’) where User = ‘root’;

( 3 ) flush privileges;

6:通过任务管理器,关掉mysqld服务进程.

7:再次通过服务管理,打mysql服务。

8:即可用修改后的新密码登陆.

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
20天前
|
存储 监控 关系型数据库
轻松入门Mysql:MySQL性能优化与监控,解锁进销存系统的潜力(23)
轻松入门Mysql:MySQL性能优化与监控,解锁进销存系统的潜力(23)
|
20天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
104 0
|
20天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
20天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:揭秘MySQL游标,数据处理的神秘利器(16)
轻松入门MySQL:揭秘MySQL游标,数据处理的神秘利器(16)
|
20天前
|
存储 SQL 关系型数据库
轻松入门MySQL:加速进销存!利用MySQL存储过程轻松优化每日销售统计(15)
轻松入门MySQL:加速进销存!利用MySQL存储过程轻松优化每日销售统计(15)
|
20天前
|
SQL 关系型数据库 MySQL
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
轻松入门MySQL:保障数据完整性,MySQL事务在进销存管理系统中的应用(12)
|
20天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:优化进销存管理,掌握MySQL索引,提升系统效率(11)
轻松入门MySQL:优化进销存管理,掌握MySQL索引,提升系统效率(11)
|
20天前
|
关系型数据库 MySQL 数据库
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
轻松入门MySQL:精准查询,巧用WHERE与HAVING,数据库查询如虎添翼(7)
|
20天前
|
SQL 存储 关系型数据库
轻松入门MySQL:玩转数据表的增、删、改、查(4)
轻松入门MySQL:玩转数据表的增、删、改、查(4)
|
2月前
|
SQL 存储 关系型数据库
解析MySQL Binlog:从零开始的入门指南【binlog入门指南】
解析MySQL Binlog:从零开始的入门指南【binlog入门指南】
1051 0