mysql学习--入门(二)
文章目录
数据分组(Group By和Having)
注意事项
- group by 子句必须出现在where子句之后,order by 子句之前。
- 如果分组的数据中有NULL值,则将NULL值作为一个分组
- where过滤行,而Having过滤分组。
Select子句的顺序
select -> from -> where -> group by -> having -> order by-> limit
语文理解
查找
从哪里查
查的行的条件
对查出来的行进行分组
分组后数据条件
排序
只要哪几行
子查询
- 多条select 通过 in 语句的组合,就可以实现嵌套查询。但使用in语句并不是最高效的一种查询方式。
- 子查询总是从内向外进行查询
联结表
INNER JOIN ON 等价于 where
LEFT JOIN (左表全行)
RIGHT JOIN (右表全行)
全文搜索
给要进行全文搜索的字段,在创建的时候就加上索引(FULLTEXT)。
然后使用Match(索引字段名) Against(条件名) 就可以根据索引查出内容
索引也可以在创建之后添加。
查询扩展
against(条件名 WITH QUERY EXPANSION)。会根据你搜索的词的段落的内容,进行扩展搜索,可能与内容相关的值
降低插入,删除,更新语句的优先级,使得查询语句优先级更高
在 Insert 和 into之间添加关键字LOW_PRIORITY
插入,删除,更新一些注意事项
-
Insert
insert方法,最好可以使用对应列名,对应值。一条insert,多条插入,效率比多条insert要快。
insert into 表名(列,列,...)
values(值,值,...),
values(值,值,...),
....
values(值,值,...)
-
Insert Select
插入查询出来的值,但前提保证主键不会重复
insert into 表名(列,列,...)
select (列,列,...) from 表名;
-
Update
使用 update set where 结构,避免更新整个表。因为mysql没有撤销按钮
update ignore 可以,忽略更新中的错误,使整个更新继续完成
update 表名
set column = '' ,
set column = '' ,
...
set column = ''
where ...
-
Delete
delete from where 结构,避免删除整个表。因为mysql没有撤销按钮
如果要快速删除所有的行,可以使用 truncate table。实际是删除表,再建一个新表。速度比delete快
delete from 表名
where ...
Default
mysql只允许使用常量作为默认值,不允许使用函数
Alter
-
给表添加一个列
alter table 表名 add 列名 字段值类型 -
删除添加的列
alter table 表名 drop column 列名
视图View
-
创建视图
create view 视图名 as
select 语句 -
查询视图
select * from 视图名 -
查看创建视图的语句
show create view 视图名;
存储procedure
-
创建存储
create procedure 存储名()
begin
select 语句结果
end
下面就是将各个select语句作为多个输出,放入到名为productpricing的存储中 -
调用该存储语句:
call 存储名()
下面就是调用上面的那个存储,因为有参数,所以要加入,如果没有则单放一个() -
用in out 来表示传入的参数和传出的值
下面这个例子就是将onumber作为传入的参数,ototal作为输出的值 -
参数前都要加上@
-
查看创建存储的语句
show create procedure 存储名
游标cursor
-
游标的使用
游标局限于存储过程 -
游标的创建
declare 游标名 cursor for select语句
-
开启和关闭游标cursor
open 游标名
close 游标名
创建和删除用户
对于数据库的实际使用过程中,我们肯定要创建不同的用户,这些用户拥有不同的权限,可以对数据库的数据进行不同的操作。比如该用户只能进行查询,不能进行更新。也可能该用户只能对指定的数据库或者表进行修改更新。
-
创建用户
create user 用户名 identity by password -
删除用户
drop user 用户名 -
查看权限
show grants for 用户名 -
授予权限
grant Select(操作) on 数据库.表(数据库.*) to 用户名
将对整个数据库的select操作权限授予用户。 -
删除权限
revoke select on 数据库.表 from 用户名 -
更改密码
set password for 用户名 = password(’ 新密码 ')
数据库的维护
-
备份数据库的方式
学会4种备份MySQL数据库
MySQL之mysqldump的使用
检查表的状态
-
检查表键是否正确
analyze table 表名 -
针对许多问题的检查
check table 表名 -
如果从一个表中删除了大量的数据
optimize table 表名。(收回所用的空间,优化表的性能)
改善mysql性能常用命令
# 查看当前mysql的设置
show variables;
show status;
# 遇到显著的性能不良,可以查看活动线程
show processlist;
# 想要优化sql语句,得让mysql解释一下该条sql语句的执行
explain
- 如果select 语句中用到了一系列复杂的or条件,可以通过使用多条select语句和连接它们的union语句。可以提高查询性能。
- select 语句中,如果一个简单的where子句和order by 子句返回结果时间过长,则其中可能存在需要建索引的对象
- 不同的select语句性能不同,通过试验联结,子查询,并等方法,找出最佳的方法。
本文地址:https://blog.csdn.net/qq_44705904/article/details/107632061
上一篇: 今天你又让我出示驾照