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

update a set flag='p' where flag is null

你这图片不是插入页吗?

如果你确定真没有值写入,首先查一下,你的set列中是否有'p'还是'P',更新完后可以用show warnings查看警告信息

补充:

很有可能你指的空值不是null,而是'',所以应该

update a set flag='p' where flag=''

尝试一下。

mysql or用不到索引

不是说,一条sql语句只能用一个索引么

但SELECT * FROM `comment` WHERE `toconuid` = '10' or `tocomuid` = '10'

其中 toconuid列 和 tocomuid列 分别为单列索引

explain后 显示两个索引都用了,extra为 Using union(toconuid,tocomuid)Using where

答:

凡事总有特列。

而MYSQL可以理解为把这个语句拆成了两条语句SELECT * FROM `comment` WHERE `toconuid` = '10'unionSELECT * FROM `comment` WHERE `tocomuid` = '10'

在某些情况下,or条件可以避免全表扫描的。

1 .where 语句里面如果带有or条件, myisam表能用到索引, innodb不行。

1)myisam表:

CREATE TABLE IF NOT EXISTS `a` (

`id` int(1) NOT NULL AUTO_INCREMENT,

`uid` int(11) NOT NULL,

`aNum` char(20) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `uid` (`uid`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6

mysql>explain select * from a where id=1 or uid =2

+----+-------------+-------+-------------+---------------+-------------+---------+------+------+---------------------------------------+

| id | select_type | table | type| possible_keys | key | key_len | ref | rows | Extra |

+----+-------------+-------+-------------+---------------+-------------+---------+------+------+---------------------------------------+

| 1 | SIMPLE | a | index_merge | PRIMARY,uid | PRIMARY,uid | 4,4 | NULL |2 | Using union(PRIMARY,uid)Using where |

+----+-------------+-------+-------------+---------------+-------------+---------+------+------+---------------------------------------+

1 row in set (0.00 sec)

2)innodb表:

CREATE TABLE IF NOT EXISTS `a` (

`id` int(1) NOT NULL AUTO_INCREMENT,

`uid` int(11) NOT NULL,

`aNum` char(20) DEFAULT NULL,

PRIMARY KEY (`id`),

KEY `uid` (`uid`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6

mysql> explain select * from a where id=1 or uid =2

+----+-------------+-------+------+---------------+------+---------+------+------+-------------+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+----+-------------+-------+------+---------------+------+---------+------+------+-------------+

| 1 | SIMPLE | a | ALL | PRIMARY,uid | NULL | NULL| NULL |5 | Using where |

+----+-------------+-------+------+---------------+------+---------+------+------+-------------+

1 row in set (0.00 sec)

2 .必须所有的or条件都必须是独立索引:

+-------+----------------------------------------------------------------------------------------------------------------------

| Table | Create Table

+-------+----------------------------------------------------------------------------------------------------------------------

| a | CREATE TABLE `a` (

`id` int(1) NOT NULL AUTO_INCREMENT,

`uid` int(11) NOT NULL,

`aNum` char(20) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 |

+-------+----------------------------------------------------------------------------------------------------------------------

1 row in set (0.00 sec)

explain查看:

mysql>explain select * from a where id=1 or uid =2

+----+-------------+-------+------+---------------+------+---------+------+------+-------------+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+----+-------------+-------+------+---------------+------+---------+------+------+-------------+

| 1 | SIMPLE | a | ALL | PRIMARY | NULL | NULL| NULL |5 | Using where |

+----+-------------+-------+------+---------------+------+---------+------+------+-------------+

1 row in set (0.00 sec)

全表扫描了。

3. 用UNION替换OR (适用于索引列)


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存