函数
字符串函数
(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:即可用修改后的新密码登陆.