mysql无关子查询_mysql中相关,无关子查询,表与表之间的关系以及编码和乱码的解决...
※MySQL中的字符编码(注意,utf8中没有'-',跟Java中不一样)
SHOW VARIABLES; //查看系统变量
//查询字符编码相关的系统变量
SHOW VARIABLES WHERE variable_name LIKE 'character%';
解决MySQK的中文乱码:
character_set_client,character_set_connection和character_set_results这三者必须一致(GBK,GB2312,UTF8这三者都可以,但若采用其中一种则3个变量都要设这种)
设置字符编码的系统变量:
set character_set_client=utf8; //独立设置某个变量
set names utf8; //同时设置3个:client、 connection和results
※其实,MySQL中的数据库、数据表 甚至 数据列 都可以有自己的编码,只是我们一般不专门设置。---从SQLyog中的更改表结构中可以查看出
INSERT INTO stud VALUES(4,'湖南',20);
CREATE TABLE person(
id INT,
NAME VARCHAR(30),
age INT
);
CREATE TABLE car(
id INT PRIMARY KEY, //不允许重复,也不允许NULL
NAME VARCHAR(30),
NO INT UNIQUE //不允许重复,允许NULL但最多只能一个
);
//除了在创建表时如上的方式直接指定主键,也可以通过修改表的方式单独创建主键:
ALTER TABLE person ADD CONSTRAINT person_pk PRIMARY KEY(id);
ALTER TABLE person ADD CONSTRAINT UNIQUE (NAME); //为name字段添加一个unique约束
//添加和删除unique约束 --通过约束名称
ALTER TABLE person ADD CONSTRAINT UNIQUE uniq_nm (NAME);
DROP INDEX uniq_nm ON person;
//删除主键
ALTER TABLE person DROP PRIMARY KEY;
//有关性别字段,比较好的表结构。DATE类型勉强用,建议不要用DATETIME。为考虑兼容性,最好用CHAR(19),VARCHAR(19) //datetime格式: 2016-11-11 23:24:09
CREATE TABLE s(
id INT,
sex CHAR(1) DEFAULT '0',
birth DATE
);
INSERT INTO s(id,birth) VALUES(3,'2008/8/8'); //因为sex字段设了default,所以该字段不手动赋值时,由默认值0来赋
按理,date的规范格式是"yyyy-MM-dd",但我们给其他格式如"yyyy/M/d"时,MySQL也会帮我们自动转换成规范格式。
//有关性别字段的显示
学习一个SQL语法: 手册-->函数和操作符-->控制流程函数-->Case-When
SELECT id, (CASE sex WHEN '0' THEN '女' WHEN '1' THEN '男' ELSE '其它' END) AS 性别, birth FROM s;
※1无关子查询
需求:查询具有同龄人的学生
SELECT * FROM stud WHERE age IN(20,22,23); //过渡版:"20,22,23" 写死了
SELECT age FROM stud GROUP BY age HAVING COUNT(age)>=2; //这句可以动态输出:20,22,23
综上:
SELECT * FROM stud WHERE age IN( SELECT age FROM stud GROUP BY age HAVING COUNT(age)>=2 ) ORDER BY age ASC;
※2相关子查询(子查询中用到了外面的查询结果表)
需求:查询具有同龄人且年龄大于22的学生
SELECT * FROM stud as s2 WHERE age IN( SELECT age FROM stud where s2.age>22 GROUP BY age HAVING COUNT(age)>=2 ) ORDER BY age ASC;
select ... from ... where ... in( 子查询 ) order by ... asc(desc)
select ... from ... where ... group by ... having ...
※表与表之间的关系(1对1)
1、
CREATE TABLE person(
id INT,
NAME VARCHAR(10),
sex CHAR(1),
wife INT,
husband INT
);
INSERT INTO person VALUES(1,'小花','0',0,3);
INSERT INTO person VALUES(2,'玉芬','0',0,4);
INSERT INTO person VALUES(3,'张三','1',1,0);
INSERT INTO person VALUES(4,'李四','1',2,0);
INSERT INTO person VALUES(5,'王五','1',0,0);
SELECT * FROM person WHERE sex='0';
SELECT * FROM person WHERE sex='1';
CREATE VIEW w AS SELECT * FROM person WHERE sex='0';
CREATE VIEW m AS SELECT * FROM person WHERE sex='1';
或
CREATE VIEW w2 AS SELECT id,NAME,sex,husband FROM person WHERE sex='0';
CREATE VIEW m2 AS SELECT id,NAME,sex,wife FROM person WHERE sex='1';
SELECT w.name AS wn, m.name AS mn FROM w INNER JOIN m ON w.husband=m.id AND m.wife=w.id; (通过表与表之间的内连接进行查询)
SELECT * FROM w INNER JOIN m ON w.husband=m.id AND m.wife=w.id;
mysql无关子查询_mysql中相关,无关子查询,表与表之间的关系以及编码和乱码的解决...相关推荐
- mysql查看执行计划_MySql中如何使用 explain 查询 SQL 的执行计划
explain命令是查看查询优化器如何决定执行查询的主要方法. 这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间去了解,因为可以学习到查询是如何执行的. 1.什么是MyS ...
- mysql时间模糊查询_mysql中那些根据时间查询的sql语句
在我们使用mysql是免不了要根据时间去查询一些数据,这个时候一般有几种方式可以去查询. 第一种数据库,如果有数据新建时间可以以这个时间为节点,通过当前时间条件去比较时间来查询到此段时间内的数据 例如 ...
- mysql获取当月最后一天_mysql中获取本月第一天、本月最后一天、上月第一天、上月最后一天
mysql获取当月最后一天_mysql中获取本月第一天.本月最后一天.上月第一天.上月最后一天等等 转自: https://blog.csdn.net/min996358312/article/det ...
- 关于oracle查询语句中like '%中文的%' 查询不到数据的问题
关于oracle查询语句中like '%中文的%' 查询不到数据的问题 问题描述: 关于oracle查询语句中like '%中文的%' 查询不到数据的问题解决 起因: 在Windows10 系统环境下 ...
- mysql去重复查询 性能_MySQL中distinct语句去查询重复记录及相关的性能讨论_MySQL...
在 MySQL 查询中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值,就是去重啦.用法也很简单: SELE ...
- mysql去重复查询 性能_MySQL中distinct语句去查询重复记录及相关的性能讨论
在 MySQL 查询中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值,就是去重啦.用法也很简单: SELE ...
- php mysql 时间戳查询_mysql中时间查询函数(包括时间戳)
mysql中时间查询函数(包括时间戳) 这些函数都是MySQL自带的,可以直接使用在PHP写的MySQL查询语句中哦 1-CURDATE()或CURRENT_DATE()和CURTIME()或CURR ...
- mysql的英文字母_MySQL中查询的有关英文字母大小写问题的分析
mysql数据库在做查询时候,有时候是英文字母大小写敏感的,有时候又不是的,主要是由mysql的字符校验规则的设置决定的,通常默认是不支持的大小写字母敏感的. 1. 什么是字符集和校验规则? 字符集是 ...
- mysql子查询教行子查询_MySQL中列子查询与行子查询操作的学习教程
MysqL 列子查询及 IN.ANY.SOME 和 ALL 操作符的使用MysqL 列子查询 列子查询是指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回. 一个列子查询的例子如 ...
最新文章
- MATLAB判断三角形成立的编程,Triangulation 划分三角形网络时用到的大量算法和测试例程 matlab 259万源代码下载- www.pudn.com...
- 乐观准则和最小后悔值怎么算_婚姻危机:结婚后想离婚,你该怎么办?
- SpringCloud_Zuul
- linux相等路径,关于linux:如何检查Bash中两条路径是否相等?
- 【洛谷 P3975】 [TJOI2015]弦论(后缀自动机)
- The superclass javax.servlet.http.HttpServlet was not found 问题解决
- 合工大五套卷_2021森哥五套卷(五)
- activiti5第五弹 serviceTask中的webserviceTask 以及 shellTask
- 中文linux最小,35M的中文linux硬盘简单安装方法Live-CD:SliTaz.tw-全世界最小的li
- 解封装(一):ffmpeg解封装
- 换SSD,WIN10系统备份镜像迁移GHOST入坑,DISM好用,修复WINRE,绿联集线器导致USB硬盘供电不足
- linux simg2img,simg2img工具
- Vim插件推荐--模糊搜索插件ctrlp使用方法
- 2017年美团校招 拼凑钱币
- 2022开放原子全球开源峰会OpenAnolis分论坛圆满落幕
- 如何解决hangfire使用redis存储时,如果采用了prefix报“Key has MOVED from Endpoint”的错...
- sql server创建数据库代码模板
- 数字图像处理(MATLAB版
- C++实现复杂链表的复制
- python制作qq登录界面_Python制作一个仿QQ办公版的图形登录界面
热门文章
- 数据结构java 图实验代码_20172329 2018-2019 《Java软件结构与数据结构》实验三报告...
- xp系统能支持mysql_windowsxp下的mysql集群技术
- file上传代码 ios_文件上传_iOS上传SDK_客户端上传_上传SDK_视频点播 - 阿里云
- table表格边框样式_如何在CAD创建、导入表格?原来CAD的表格功能这么强大
- java之struts2的action的创建方式
- 微信小程序|个人简历
- HDU1542--Atlantis(扫描线)
- 大话数据结构第四章栈的基本概念与出栈入栈操作
- roszhong指定rviz的点启动_怎样在1秒内启动 Linux
- CCF201312-1 出现次数最多的数