欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

mysql学习--入门(二)

程序员文章站 2022-03-03 20:05:55
文章目录数据分组(Group By和Having)注意事项Select子句的顺序子查询联结表全文搜索查询扩展降低插入,删除,更新语句的优先级,使得查询语句优先级更高插入,删除,更新一些注意事项DefaultAlter视图View存储procedure游标cursor创建和删除用户数据库的维护检查表的状态改善mysql性能常用命令数据分组(Group By和Having)注意事项group by 子句必须出现在where子句之后,order by 子句之前。如果分组的数据中有NULL值,则将NUL...

数据分组(Group By和Having)

mysql学习--入门(二)

注意事项

  • 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的存储中
    mysql学习--入门(二)

  • 调用该存储语句:
    call 存储名()
    下面就是调用上面的那个存储,因为有参数,所以要加入,如果没有则单放一个()
    mysql学习--入门(二)

  • 用in out 来表示传入的参数和传出的值
    下面这个例子就是将onumber作为传入的参数,ototal作为输出的值
    mysql学习--入门(二)
    mysql学习--入门(二)
    mysql学习--入门(二)
    mysql学习--入门(二)

  • 参数前都要加上@

  • 查看创建存储的语句
    show create procedure 存储名

游标cursor

  • 游标的使用
    游标局限于存储过程
  • 游标的创建
    declare 游标名 cursor for select语句
    mysql学习--入门(二)
  • 开启和关闭游标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(’ 新密码 ')

数据库的维护

  • 备份数据库的方式
    mysql学习--入门(二)

mysql学习--入门(二)

学会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