mysql语法问题_MySQL系列(3) 常见语法 & sql & & 问题

1.MySQL查询字段区不区分大小写?

MySQL默认的字符检索策略:utf8_general_ci,表示不区分大小写。

1.1 解决方案一

可以使用utf8_general_cs,表示区分大小写,也可以使用utf8_bin,表示二进制比较,同样也区分大小写 。

#注意:

在Mysql5.6.10版本中,不支持utf8_genral_cs

>> 创建表时,直接设置表的collate属性为utf8_general_cs或者utf8_bin;

- 创建表:

CREATE TABLE testt(

id INT PRIMARY KEY,

name VARCHAR(32) NOT NULL

) ENGINE = INNODB COLLATE =utf8_bin;

>> 如果已经创建表,则直接修改字段的Collation属性为utf8_general_cs或者utf8_bin。

-- 修改表结构的Collation属性

ALTER TABLE TABLENAME MODIFY COLUMN COLUMNNAME VARCHAR(50) BINARY CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL;

1.2 解决方案二

直接修改sql语句,在要查询的字段前面加上binary关键字

-- 在每一个条件前加上binary关键字

select * from user where binary username = 'admin' and binary password = 'admin';

-- 将参数以binary('')包围

select * from user where username like binary('admin') and password like binary('admin');

2. 各种 join 的意思

/*

SQL 脚本

*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for score

-- ----------------------------

DROP TABLE IF EXISTS `score`;

CREATE TABLE `score` (

`score_id` int(11) NOT NULL AUTO_INCREMENT,

`score` double NOT NULL,

`stu_id` int(11) NOT NULL,

`subject` varchar(255) NOT NULL,

PRIMARY KEY (`score_id`)

) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;

-- ----------------------------

-- Records of score

-- ----------------------------

INSERT INTO `score` VALUES ('1', '90', '1', '语文');

INSERT INTO `score` VALUES ('2', '80', '6', '语文');

-- ----------------------------

-- Table structure for stu

-- ----------------------------

DROP TABLE IF EXISTS `stu`;

CREATE TABLE `stu` (

`stu_id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(255) DEFAULT NULL,

PRIMARY KEY (`stu_id`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;

-- ----------------------------

-- Records of stu

-- ----------------------------

INSERT INTO `stu` VALUES ('1', 'tom1');

INSERT INTO `stu` VALUES ('2', 'tom2');

INSERT INTO `stu` VALUES ('3', 'tom3');

2.1 inner join (内连接)

内连接是一种一一映射关系,就是两张表都有的才能显示出来

bbfb93ebd852

内连接.png

bbfb93ebd852

内连接示例查询.png

2.2 left join (左连接)

左连接是左边表的所有数据都有显示出来,右边的表数据只显示共同有的那部分,没有对应的部分只能补空显示,

所谓的左边表其实就是指放在left join的左边的表

bbfb93ebd852

左连接.png

bbfb93ebd852

左连接示例查询.png

2.3 right join (右连接)

右连接正好是和左连接相反的,这里的右边也是相对right join来说的,在这个右边的表就是右表

bbfb93ebd852

右连接.png

bbfb93ebd852

右连接示例查询.png

2.4 外连接或全连接

查询出左表和右表所有数据,但是去除两表的重复数据.

MySQL 没有 FULL JOIN, 用 UNION 替代.

bbfb93ebd852

外连接或全连接.png

bbfb93ebd852

外连接或全连接示例查询.png

3.一些SQL

3.1 查询连接数

MySQL连接查询语句(注意与各种连接池的关系及在多线程中的影响):

1.查询最大连接数

show variables like '%max_connections%';

2.查询已发生的最大连接数

show global status like '%Max_used_connections%';

3.查询当前连接数

select * from information_schema.processlist order by Time desc;

4.查询某用户下当前连接数

select * from information_schema.processlist WHERE USER='root';

3.2 查询 mysql全局/会话事务隔离级别(默认是可重复读)

select @@global.tx_isolation, @@tx_isolation;

3.3 查询mysql 某个库所有表元信息(含存储引擎类型)

select * from information_schema.tables;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值