MySQL常用操作(一)

这篇具有很好参考价值的文章主要介绍了MySQL常用操作(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

创建表

create table user(
	id int unsigned primary key not null auto_increment,
	name varchar(50) unique not null,
	age tinyint not null,
	sex enum('M', 'W') not null
)engine=INNODB default charset=utf8;

# 查看创建表语句
show create table user

两种插入方式比较

# 方式1
insert into user(name, age, sex) values('zhangsan', 21, 'M');
insert into user(name, age, sex) values('lisi', 22, 'M');
insert into user(name, age, sex) values('xiaohong', 21, 'W');
insert into user(name, age, sex) values('wangwu', 22, 'M');
insert into user(name, age, sex) values('zhaoliu', 23, 'M');

# 方式2
insert into user(name, age, sex) values('zhangsan', 21, 'M'),('lisi', 22, 'M'),('xiaohong', 21, 'W'),('wangwu', 22, 'M'),('zhaoliu', 23, 'M');

方式1五次insert就要5次的TCP握手和挥手,而方式2只要一次TCP握手和挥手

例子:union合并查询

SELECT expression1, expression2, ... expression_n
FROM tables[WHERE conditions]
UNION [ALL | DISTINCT] # 注意:union默认去重,不用修饰distinct,all表示显示所有重复值
SELECT expression1, expression2, ... expression_n
FROM tables[WHERE conditions];

如:

select name,age,sex from user where age >= 22 union all select name,age,sex from user where sex='M';

注:or 也可用到索引

limit分页查询

从第1行开始(第0行是起始行),查找出3行数据:

select * from user limit 1, 3;

explain可以查看SQL语句的执行计划:
首先表内容为:

MySQL常用操作(一)

查看执行计划:

explain select * from user where age = 20;

MySQL常用操作(一)

可以看出来age这一列没有建立索引,需要逐行查找。

而对于name列有建立索引,虽然记录不在第一行但是只需要查找一次:

MySQL常用操作(一)

例子:使用存储过程往表中插入大量记录

这个例子可以用于进行一些测试工作中提前需要有大量记录的表

# 将结束符设置为 $
delimiter $
create Procedure add_t_user(IN n INT)
BEGIN
DECLARE i INT;
SET i=0;

WHILE i<n DO
insert into t_user values(null,concat(i+1, '@qq.com'),i+1);
SET i=i+1;
END WHILE;
END$
# 将结束符修改回 ;
delimiter;
call add_t_user(2000000);

limit能够优化查询效率

limit在没有索引的时候查找到指定的记录就停止,如果不加limit就要全表扫描。

MySQL常用操作(一)

例子:
设每页行数pagenum=20, pageno为页号,显示某一页的数据:

select * from user limit (pageno-1)*pagenum, pageno * pagenum

但是这个select效率太低,偏移量( (pageno-1)*pagenum )大的时候需要花时间,可以通过使用:

select * from user where id>上一页最后一条数据的id值 limit 20;

这条语句能够利用id索引省去偏移的时间开销。

order by排序

发现order by查询的Extra列是 Using filesort 说明使用到了归并排序(外排序)可以性能优化,如加索引或者修改查询列文章来源地址https://www.toymoban.com/news/detail-493179.html

到了这里,关于MySQL常用操作(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL创建数据库(CREATE DATABASE语句)

     在 MySQL 中,可以使用  CREATE DATABASE  语句创建数据库,语法格式如下: [ ] 中的内容是可选的。语法说明如下: 数据库名: 创建数据库的名称。MySQL 的数据存储区将以目录方式表示 MySQL 数据库,因此数据库名称必须符合操作系统的文件夹命名规则,不能以数字开头,尽量

    2024年02月04日
    浏览(50)
  • MySQL数据库——MySQL创建触发器(CREATE TRIGGER)

    触发器是与 MySQL 数据表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性。 在 MySQL 5.7 中,可以使用 CREATE TRIGGER 语句创建触发器。 语法格式如下: 语法说明如下。 1) 触发器名 触发器

    2024年02月10日
    浏览(48)
  • Hbase 常用 shell 操作:增删改查(create、put、delete、scan)

    1、表分区也清除掉,需重新建表: 2、表分区不变,只清空表数据,不需要重新建表: create ‘hbase表名’ ,‘列族名1’,‘列族名2’,\\\'列族名N’ put ‘hbase表名’,‘rowkey’,‘列族:列名’,\\\'值’ hbase表是列存储,所以不能跟mysql表一次插入一行数据,只能按列一个一个插入,比

    2023年04月12日
    浏览(37)
  • 【Flink 实战系列】Incremental snapshot for tables requires primary key, but table test.ab doesn’t have pri

    问题背景 今天有同学问了这么一个问题,在使用 Flink CDC 同步数据到 Hudi 时,任务抛出异常,完整的报错信息如下所示:

    2023年04月08日
    浏览(44)
  • 【flink番外篇】9、Flink Table API 支持的操作示例(1)-通过Table API和SQL创建表

    一、Flink 专栏 Flink 专栏系统介绍某一知识点,并辅以具体的示例进行说明。 1、Flink 部署系列 本部分介绍Flink的部署、配置相关基础内容。 2、Flink基础系列 本部分介绍Flink 的基础部分,比如术语、架构、编程模型、编程指南、基本的datastream api用法、四大基石等内容。 3、

    2024年01月17日
    浏览(58)
  • 【Hive】——DDL(CREATE TABLE)

    3.2.1 指定序列化类(ROW FORMAT SERDE ‘’) 3.2.2 指定分隔符(row format delimited fields terminated by “t”) 6.1.1 建表语句 6.1.2 上传数据文件到hdfs 6.1.3 查询 6.2.1 建表语句 6.2.2 上传数据文件到hdfs 6.2.3 查询 select * from t_hot_hero_skin_price; 6.3.1 建表语句 6.3.2 上传数据文件到hdfs 6.3.3 查询

    2024年02月04日
    浏览(50)
  • [Oracle] 创建表空间用户常用操作

    以system用户登录,查找需要删除的用户 删除用户并清空表空间 删除表空间与数据文件 实例

    2024年01月17日
    浏览(64)
  • sqlachemy orm create or delete table

    sqlacehmy  one to one    ------detial  to descript  关于uselist的使用。如果你使用orm直接创建表关系,实际上在数据库中是可以创建成多对多的关系,如果加上uselist=False 你会发现你的orm只能查询出来一个,如果不要这个参数orm查询的就是多个,一对多的关系。数据库级别如果也要限制

    2024年01月24日
    浏览(43)
  • 【git常用操作】git的分支创建、切换、提交与关联分支操作

    下拉代码建议用ssh密钥方式下拉 ,配置好之后后续操作不需要输入密码等权限验证操作,很方便。 查看分支: 创建本地分支: 切换本地分支: 创建+切换分支: 将新分支推送到github: 建议使用IDEA集成git来完成下列操作 ,如果使用上面提到的ssh密钥方式下拉工程的话会方便

    2024年02月15日
    浏览(48)
  • iptables规则、路由表配置、虚拟IP创建常用操作

    一、iptables规则 1.查看iptables设置 2.开启全部流量 上述命令将全部流量允许通过防火墙。 3.关闭全部流量 iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP 上述命令将防火墙关闭,不允许任何流量通过。 4.允许某个端口的流量通过 iptables -A INPUT -p tcp --dport port_number -j AC

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包