mysql or查询命令

mysql or查询命令,第1张

登陆mysql

打cmd命令终端,如果已经添加了mysql的环境变量,可以直接使用命令

mysql -uroot

直接回车,之后按提示输入密码,

如果未添加mysql的环境变量,可以切换到mysql的安装目录下的bin目录,再使用

mysq -uroot

你也可以手动为mysql添加环境变量。这里就不介绍怎么添加环境变量的方法了

密码输入正确之后,就会出现“Welcome to the MySQL monitor. Commands end with or \g. ......”字样,

命令行出现“mysql>”字符前缀。现在你就可以使用命令对mysql进行 *** 作了。曾经有没有过这样的经历,原来看见别人在命令行里面咔咔的猛敲时,就一通的崇拜,觉得这人很牛,现在你也可以让别一通崇拜了。

mysql的所有命令都以""或者\g为结束符

2

新建数据库

在新建数据库之后,我们先设置一下字符集

mysql>SET NAMES utf8

然后再创建数据库

mysql>CREATE DATABASE lesson

3

显示所有数据库

mysql>SHOW DATABASES

使用数据库

mysql>USE 数据库名

新建表

mysql>CREATE TABLE study(

id int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '学生id号',

username varchar(30) NOT NULL DEFAULT '' COMMENT '学生名字',

class tinyint(3) unsigned NOT NULL,

sex enum('男','女','保密') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT '保密' COMMENT '性别',

addtime int(10) NOT NULL DEFAULT '0',

PRIMARY KEY (id)

)ENGINE=InnoDB COMMENT = '学生表'

显示所有表

mysql>SHOW TABLES

修改表的名称

mysql>RENAME TABLE study TO study_new

或者

mysql>ALTER TABLE study_new RENAME TO study

显示字段信息

SHOW COLUMNS FROM study或者DESCRIBE study

插入数据

mysql>insert into study (username,class,sex)VALUES('小王',1,'男'),('小四',2,'女')

查询数据(使concat函数拼接数据)

mysql>SELECT username,CONCAT(class,'班'),sex FROM study

删除数据

mysql>DELETE FROM study WHERE id=1

删除数据表

DROP TABLE study

删除数据库

mysql>DROP DATABASE lesson

网上有很多人都在谈论or与in的使用,有的说二者没有什么区别,其实不然,估计是测试做的不够,其实or的效率为O(n),而in的效率为O(log2n),当基数越大时,in的效率就能凸显出来了。

有人做了这么一组实验(测试库数据为1000万条记录):A组分别用or与in查询3条记录,B组分别用or与in查询120条记录,C组分别用or与in查询500条记录,D组分别用or与in查询1000条记录.

第一种情况,目标列为主键的情况,4组测试执行计划一样,执行的时间也基本没有区别。

A组or和in的执行时间: or的执行时间为:0.002s in的执行时间为:0.002s

B组or和in的执行时间: or的执行时间为:0.004s in的执行时间为:0.004s

C组or和in的执行时间: or的执行时间为:0.006s in的执行时间为:0.005s

D组or和in的执行时间: or的执行时间为:0.017s in的执行时间为:0.014s

第二种情况,目标列为一般索引的情况,4组测试执行计划一样,执行的时间也基本没有区别。

A组or和in的执行时间: or的执行时间为:0.002s in的执行时间为:0.002s

B组or和in的执行时间: or的执行时间为:0.006s in的执行时间为:0.005s

C组or和in的执行时间: or的执行时间为:0.008s in的执行时间为:0.008s

D组or和in的执行时间: or的执行时间为:0.020s in的执行时间为:0.019s

第三种情况,目标列没有索引的情况,4组测试执行计划就不一样,执行的时间也有了很大的区别。

A组or和in的执行时间: or的执行时间为:5.016s in的执行时间为:5.071s

B组or和in的执行时间: or的执行时间为:1min 02s in的执行时间为:5.018s

C组or和in的执行时间: or的执行时间为:1min 50s in的执行时间为:5.010s

D组or和in的执行时间: or的执行时间为:6min 13s in的执行时间为:5.047s

结论:

in和or的效率,取决目标条件列是否有索引或者是否是主键,如果有索引或者主键性能没啥差别,如果没有索引,in的性能要远远优于or.

要么部门号=10且职位为经理,要么部门号=20且职位为办事员。只要满足两者之一就输出记录。不可能存在部门号既为10又为20,而且职位既为经理又为办事员的记录。

再好好思考下这个逻辑。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7178521.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-02
下一篇 2023-04-02

发表评论

登录后才能评论

评论列表(0条)

保存