【JAVAWEB学习笔记】09

今天晨读单词:

order:订单
constraint:(强制)约束
foreign key:外键
references:指向
orderitem:订单项
join:加入
resourceBundle:资源捆绑
classLoader:类加载器
properties:属性
inputstream:输入流

今日学习目标:

1、能够描述表与表的关系

2、能独立编写一对多的表关系SQL语句

3、能独立编写多对多的表关系SQL语句

4、能使用SQL进行多表查询

5、能使用JDBC完成单表增删改查操作

值得注意的是:除了dirver在mysql.jdbc,其他都在sql的包下,不要导错包了。

通过MySQL思维导图进行回顾,再进入今天的笔记内容

01_一对多建表原则

02_多对多建表原则

03_一对一建表原则

04_商城的实体抽取和表关系分析

05_内连接和外连接区别

使用properties配置文件:

方法一:

方法二:

MySQL多表操作说明:

问题说明:

一、主从表数据更新问题

当两张表没有建立任何关系的时候,那么可以随意删除其中任何一张表中的任何记录,但是一旦把两张表建立了关系(主外键约束)之后,那么不能删除主表中的数据(这些数据内容在从表中有关联关系的数据),只想执行删除(更新操作),那么就会出现下图中的错误。

要想删除主表中与从表有关联关系的数据,可以这么做:

  1. 解除主从表的约束关系
  2. 先删除从表中与主表有关系的数据[ThinkPad1] ,再删除主表中的数据。

另外,从表也不能添加主表中不存在的数据!


[ThinkPad1]先把p003和P004的数据删除了,再删除分类表中c002的数据。

二、关于子查询问题

一般子查询会存在于两张关联的表中,那么我们可以先把带有条件的那张表与另外一张表的关联关系字段查出来,并作为另外一张表查询的条件值,然后再次进行查询。

例子:查询“化妆品”分类上架商品详情。

先查主表的主键(根据指定的条件<化妆品,cname[ThinkPad1] >)

select cid  from category where panme=’化妆品’

查询所有商品的详细信息(根据分类id查询):

select * from product where category_id=cid[ThinkPad2]

select * from product where category_id=( select cid  from category where cname=’化妆品’);

三、分页查询问题

分页查询使用的是limit关键字进行查询。它后面有两个参数。第一个参数[ThinkPad3] 是起始的位置,第二个参数是每页需要显示的条目数。

举例:商品表中有10条记录,现在需要进行分页显示,每页显示3条数据。现在需要查看第二页的数据。那么应该使用的sql语句是:

select * from product limit 3[ThinkPad4] ,3;


[ThinkPad1]属于主表category表中的内容,那么先查出主表的主键cid.然后将查出的内容作为条件。

[ThinkPad2]需要先从主表category中查询出来。

[ThinkPad3]取值为:(需要查看第几页-1)乘以第二个参数

[ThinkPad4](2-1)*3

执行分页查询语句后,显示的结果如下:

四、关于mysql编码问题

1 查看MySQL编码

SHOW VARIABLES LIKE ‘char%‘;

因为当初安装时指定了字符集为UTF8,所以所有的编码都是UTF8。

l  character_set_client:你发送的数据必须与client指定的编码一致!!!服务器会使用该编码来解读客户端发送过来的数据;

l  character_set_connection:通过该编码与client一致!该编码不会导致乱码!当执行的是查询语句时,客户端发送过来的数据会先转换成connection指定的编码。但只要客户端发送过来的数据与client指定的编码一致,那么转换就不会出现问题;

l  character_set_database:数据库默认编码,在创建数据库时,如果没有指定编码,那么默认使用database编码;

l  character_set_server:MySQL服务器默认编码;

l  character_set_results:响应的编码,即查询结果返回给客户端的编码。这说明客户端必须使用result指定的编码来解码;

2 控制台编码

修改character_set_client、character_set_results、character_set_connection为GBK,就不会出现乱码了。但其实只需要修改character_set_client和character_set_results。

控制台的编码只能是GBK,而不能修改为UTF8,这就出现一个问题。客户端发送的数据是GBK,而character_set_client为UTF8,这就说明客户端数据到了服务器端后一定会出现乱码。既然不能修改控制台的编码,那么只能修改character_set_client为GBK了。

服务器发送给客户端的数据编码为character_set_result,它如果是UTF8,那么控制台使用GBK解码也一定会出现乱码。因为无法修改控制台编码,所以只能把character_set_result修改为GBK。

l  修改character_set_client变量:set character_set_client=gbk;

l  修改character_set_results变量:set character_set_results=gbk;

设置编码只对当前连接有效,这说明每次登录MySQL提示符后都要去修改这两个编码,但可以通过修改配置文件来处理这一问题:配置文件路径:D:\Program Files\MySQL\MySQL Server 5.1\ my.ini

3 MySQL工具

使用MySQL工具是不会出现乱码的,因为它们会每次连接时都修改character_set_client、character_set_results、character_set_connection的编码。这样对my.ini上的配置覆盖了,也就不会出现乱码了。

时间: 2024-12-16 02:06:39

【JAVAWEB学习笔记】09的相关文章

《机电传动控制》学习笔记09

<机电传动控制>学习笔记09 胡恒谦 机卓1301 1. 电力电子器件 电力电子器件根据其导通和关断可控性的不同可以分为以下三类. (1)不可控型器件,即导通与关断都不能控制的器件.仅整流二极管是不可控器件. (2)半控型器件,即只能控制其导通,不能控制其关断的器件.普通晶闸管SCR及其派生器件属于半控型器件. (3)全控型器件,即导通与关断都可以控制的器件.GTR.GTO.IGBT等都属于全控型器件. 2. 晶闸管 晶闸管导通条件为:加正向电压且门极有触发电流:其派生器件有:快速晶闸管,双向

C++ GUI Qt4学习笔记09

C++ GUI Qt4学习笔记09 qtc++ 本章介绍Qt中的拖放 拖放是一个应用程序内或者多个应用程序之间传递信息的一种直观的现代操作方式.除了剪贴板提供支持外,通常它还提供数据移动和复制的功能. QMimeData是一个可以提供不同格式数据的类. 9.1使拖放生效 拖放操作有两个动作:拖动和放下.Qt窗口部件可以作为拖动点.放下点或者同时作为拖动点和放下点. 9.2支持自定义拖动类型 9.3剪贴板处理技术 多数应用程序都通过某一种或者几种方式来使用Qt的内置剪贴板处理技术. C++ GUI

CSS学习笔记09 简单理解BFC

1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>BFC</title> 6 <style type="text/css"> 7 .div1 {background-color: #FCE38A; width: 200px; height: 100px;}

Javaweb学习笔记4—Reuest&amp;Response

 前几天博客被黑了,导致博客登陆不上,把前几天应该发的东西的东西重新发一遍 今天来讲javaweb的第四段学习. Request和Response还是比较重要的 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多. 响应对象 1,Response响应: 常用响应对象:ServletResponse HttpServletResp

Javaweb学习笔记5—Cookie&amp;Session

 前几天博客被黑了,导致博客登陆不上,把前几天应该发的东西的东西重新发一遍  今天来讲javaweb的第五阶段学习. Cookie和Session同样是web开发常用到的地方. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多. 一.会话管理技术概述 1 什么是会话? 这里的会话指的是web开发中的一次通话过程,当打开浏览

Javaweb学习笔记6—EL表达式与JSTL及自定义标签

 前几天博客被黑了,导致博客登陆不上,把前几天应该发的东西的东西重新发一遍 今天来讲javaweb的第六阶段学习. EL表达式与JSTL及自定义标签是对上篇文章介绍的JSP的扩展,不能说是很重要的东西,但是也要了解. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多. 一.EL表达式 1,EL简介 Expression Lan

JavaWeb学习笔记之Servlet(一)

1. 引子: 当我们开始进入JavaWeb开发的学习时,我们就必须要和Servlet和HTTP这两个词进行打交道了,尤其是Servlet.即使到了后面使用JSP (我们知道JSP其本身就是一个Servlet)来进行开发我们的应用. 下图就是 Servlet API中相应的UML图,在学习JavaWeb 开发时,我们最好对下面的各个Servlet中的方法做一定的了解及其相应的图中的关系,尤其是HttpServletRequest和HttpServletResponse 中的方法. 2. 部署服务器

Javaweb学习笔记10—文件上传与下载

 今天来讲javaweb的第10阶段学习.文件的上传与下载,今天主要说的是这个功能的实现,不用说了,听名字就是外行人也知道肯定很重要啦. 老规矩,首先先用一张思维导图来展现今天的博客内容. ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下载 另外:如果图看不清的话请右击---在新窗口中打开会清楚很多 一*, 文件的上传:      1 *分析实现步骤: 1.1* 客户端浏览器通过文件域选择本地要上传的文件. * 点击"上传"按钮

【JAVAWEB学习笔记】13_servlet

JavaWeb核心之Servlet 教学导航 学习目标: 案例一.完成用户登录功能 案例二.记录成功登录系统的人次 一.Servlet简介 1.什么是Servlet Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求.响应给浏览器的动态资源.但servlet的实质就是java代码,通过java的API  动态的向客户端输出内容 servlet规范:包含三个技术点 1)servlet技术 2)filter技术---过滤器 3)listener技术--