※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中相关,无关子查询,表与表之间的关系以及编码和乱码的解决...相关推荐

  1. mysql查看执行计划_MySql中如何使用 explain 查询 SQL 的执行计划

    explain命令是查看查询优化器如何决定执行查询的主要方法. 这个功能有局限性,并不总会说出真相,但它的输出是可以获取的最好信息,值得花时间去了解,因为可以学习到查询是如何执行的. 1.什么是MyS ...

  2. mysql时间模糊查询_mysql中那些根据时间查询的sql语句

    在我们使用mysql是免不了要根据时间去查询一些数据,这个时候一般有几种方式可以去查询. 第一种数据库,如果有数据新建时间可以以这个时间为节点,通过当前时间条件去比较时间来查询到此段时间内的数据 例如 ...

  3. mysql获取当月最后一天_mysql中获取本月第一天、本月最后一天、上月第一天、上月最后一天

    mysql获取当月最后一天_mysql中获取本月第一天.本月最后一天.上月第一天.上月最后一天等等 转自: https://blog.csdn.net/min996358312/article/det ...

  4. 关于oracle查询语句中like '%中文的%' 查询不到数据的问题

    关于oracle查询语句中like '%中文的%' 查询不到数据的问题 问题描述: 关于oracle查询语句中like '%中文的%' 查询不到数据的问题解决 起因: 在Windows10 系统环境下 ...

  5. mysql去重复查询 性能_MySQL中distinct语句去查询重复记录及相关的性能讨论_MySQL...

    在 MySQL 查询中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值,就是去重啦.用法也很简单: SELE ...

  6. mysql去重复查询 性能_MySQL中distinct语句去查询重复记录及相关的性能讨论

    在 MySQL 查询中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值,就是去重啦.用法也很简单: SELE ...

  7. php mysql 时间戳查询_mysql中时间查询函数(包括时间戳)

    mysql中时间查询函数(包括时间戳) 这些函数都是MySQL自带的,可以直接使用在PHP写的MySQL查询语句中哦 1-CURDATE()或CURRENT_DATE()和CURTIME()或CURR ...

  8. mysql的英文字母_MySQL中查询的有关英文字母大小写问题的分析

    mysql数据库在做查询时候,有时候是英文字母大小写敏感的,有时候又不是的,主要是由mysql的字符校验规则的设置决定的,通常默认是不支持的大小写字母敏感的. 1. 什么是字符集和校验规则? 字符集是 ...

  9. mysql子查询教行子查询_MySQL中列子查询与行子查询操作的学习教程

    MysqL 列子查询及 IN.ANY.SOME 和 ALL 操作符的使用MysqL 列子查询 列子查询是指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回. 一个列子查询的例子如 ...

最新文章

  1. MATLAB判断三角形成立的编程,Triangulation 划分三角形网络时用到的大量算法和测试例程 matlab 259万源代码下载- www.pudn.com...
  2. 乐观准则和最小后悔值怎么算_婚姻危机:结婚后想离婚,你该怎么办?
  3. SpringCloud_Zuul
  4. linux相等路径,关于linux:如何检查Bash中两条路径是否相等?
  5. 【洛谷 P3975】 [TJOI2015]弦论(后缀自动机)
  6. The superclass javax.servlet.http.HttpServlet was not found 问题解决
  7. 合工大五套卷_2021森哥五套卷(五)
  8. activiti5第五弹 serviceTask中的webserviceTask 以及 shellTask
  9. 中文linux最小,35M的中文linux硬盘简单安装方法Live-CD:SliTaz.tw-全世界最小的li
  10. 解封装(一):ffmpeg解封装
  11. 换SSD,WIN10系统备份镜像迁移GHOST入坑,DISM好用,修复WINRE,绿联集线器导致USB硬盘供电不足
  12. linux simg2img,simg2img工具
  13. Vim插件推荐--模糊搜索插件ctrlp使用方法
  14. 2017年美团校招 拼凑钱币
  15. 2022开放原子全球开源峰会OpenAnolis分论坛圆满落幕
  16. 如何解决hangfire使用redis存储时,如果采用了prefix报“Key has MOVED from Endpoint”的错...
  17. sql server创建数据库代码模板
  18. 数字图像处理(MATLAB版
  19. C++实现复杂链表的复制
  20. python制作qq登录界面_Python制作一个仿QQ办公版的图形登录界面

热门文章

  1. 数据结构java 图实验代码_20172329 2018-2019 《Java软件结构与数据结构》实验三报告...
  2. xp系统能支持mysql_windowsxp下的mysql集群技术
  3. file上传代码 ios_文件上传_iOS上传SDK_客户端上传_上传SDK_视频点播 - 阿里云
  4. table表格边框样式_如何在CAD创建、导入表格?原来CAD的表格功能这么强大
  5. java之struts2的action的创建方式
  6. 微信小程序|个人简历
  7. HDU1542--Atlantis(扫描线)
  8. 大话数据结构第四章栈的基本概念与出栈入栈操作
  9. roszhong指定rviz的点启动_怎样在1秒内启动 Linux
  10. CCF201312-1 出现次数最多的数