※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;

转载于:https://www.cnblogs.com/1314wamm/p/6750093.html

第三天,编码设置,主键设置与删除,无关子查询,相关子查询,表与表之间的关系...相关推荐

  1. SQLServer设置主键自增长

    设置主键自增长的两种方式 1.通过图形化的的操作方法进行设置 新建的时候进行设置,右击表----新建 表建好后增加一个字段,选择需要增加的表,右击设计 设置主键 设置自增长, 标识增量标识每次自增加多 ...

  2. mysql linux导入csv主键,MySQL导入csv文件内容到Table及数据库的自增主键设置

    写在前面 目的是测试将csv文件内容导入到表中, 同时记录一下自增主键的设置. 测试采用MySQL8.0. 新建表customer_info如下, 未设置主键. 修改上表, 添加主键id, 并设置为自 ...

  3. MySQL导入csv文件内容到Table及数据库的自增主键设置

    写在前面 目的是测试将csv文件内容导入到表中, 同时记录一下自增主键的设置. 测试采用MySQL8.0. 新建表customer_info如下, 未设置主键. 修改上表, 添加主键id, 并设置为自 ...

  4. mysql的主键有什么作用_mysql设置主键有什么用

    mysql设置主键的作用是:1.唯一地标识表中的每一行,通过它可强制表的实体完整性:2.主要是用于其他表的外键关联,以及本记录的修改与删除. [相关学习推荐:mysql教程] mysql设置主键的作用 ...

  5. mysql设置主键的作用_mysql设置主键有什么用

    mysql设置主键的作用是:1.唯一地标识表中的每一行,通过它可强制表的实体完整性:2.主要是用于其他表的外键关联,以及本记录的修改与删除. [相关学习推荐:mysql教程] mysql设置主键的作用 ...

  6. PostGreSQL设置主键自增

    在Navicat 工具中设置postGreSql表字段自增 前言 提示:我们在设计表结构的过程中,有的时候不太愿意用sql的语法来创建表结构,而是在navicat中直接用新建的方式来创建表结构,但是发 ...

  7. Mysql 自增主键设置以及重置自增值

    一.自增主键设置 CREATE TABLE `table_name` (`IncreaseId` INT(16) NOT NULL AUTO_INCREMENT COMMENT '自增主键',`Ins ...

  8. MySQL必知必会05:正确设置主键

    阅读整理自<MySQL 必知必会>- 朱晓峰,详细内容请登录 极客时间 官网购买专栏. 文章目录 业务字段做主键 使用自增字段做主键 手动赋值字段做主键 小结 在一个项目中,客户要进行会员 ...

  9. powerdesigner设置主键为自增字段,设置非主键为唯一键并作为表的外键

    转自:https://www.cnblogs.com/CoffeeHome/archive/2014/06/04/3767501.html 这里powerdesigner连接的数据库是以mysql为例 ...

  10. SQLServer:GUI方式、SQL语句两种方式建立视图和GUI方式设置主键、约束等

    SQLServer:GUI方式.SQL语句两种方式建立视图和GUI方式设置主键.约束等 目录 题目要求 解题流程 (1).建立视图 (2)GUI方式设置主键.约束等 ​ 题目要求 基于表DEPT01和 ...

最新文章

  1. 一图胜千言!数据可视化多维讲解
  2. 压缩版styleGAN,合成高保真图像,参数更少、计算复杂度更低
  3. 检查是否已使用jQuery选中复选框
  4. 更新CentOS Mysql到官方较新版本[以6.5为例]
  5. 项目经理如何参与任务管理
  6. CMMI for Development读书笔记-目录
  7. java同步读写,关于java:Collections中的synchronizedMap方法是否同步读写操作
  8. 怎么查看linux日志里请求量最高的url访问最多的_实用的Linux高级命令,开发运维都要懂!...
  9. windows中架设基于Apache的svn服务器
  10. 汇编使用跳转实现1累加到100的和
  11. maven学习5 构建MyBatis项目
  12. javascript HTMLAudioElement
  13. “支付功能”怎么测试?
  14. 多核技术对计算机技术的影响,计算机新技术——多核技术.doc
  15. 公安如何通过大数据破案?知识图谱实现公安情报分析(人工智能大数据公司)
  16. 《嵌入式 – GD32开发实战指南》第1章 开发环境搭建
  17. 雷达技术在汽车安全方面的应用
  18. log4cpp乱码_log4cxx安装和使用
  19. unity----lua调用c#之lua调用c#中的数组,list,字典
  20. 求与下面谓词公式等值的前束范式_离散数学课后答案

热门文章

  1. 【Windows系统】-- 远程桌面时,WIN键被锁定
  2. 20145226夏艺华 《Java程序设计》实验报告一
  3. 【计算机网络】简单网络管理协议 SNMP
  4. Qt入门(8)——事件和事件过滤器
  5. c# 数据结构 ---双链表
  6. redis简述及安装
  7. html5做一个相册_HTML5最新版本介绍
  8. C语言数据结构编程实列,数据结构C语言实现----栈的实例
  9. java按字节截取字符串牛客网_字符串计数
  10. python怎么打开笔记本无线网络开关_如何轻松搞定 笔记本搜不到WIFI信号问题