java自学之路-day18

数据库

数据库

概念

l  对于一串数据修改其中的一条数据

l  如果用io流就需要全盘读写 然后找到其中的一行 进行修改

l  或者使用数组进行修改

l  这样太复杂 效率慢 所以需要引用数据库

l  数据库本质是一个文件系统 可以看做是一个具有很好的处理数据能力的容器 和集合 数组 都一样

l  里面有严格的数据存储格式

l  数据库管理系统是用一个软件管理数据库

l  常见的数据库管理系统

  1. MYSQL  开源免费 瑞典的公司开发 sun公司收购  Oracle收购了sun MYSQL6.x之后收费 中小企业使用
  2. Oracle 收费的数据库 Oracle的公司的产品  大型公司使用
  3. DB2   IBM  收费 常用在银行系统中
  4. SQLServer  Microsoft公司 收费 c# .net语言使用
  5. Sybase  已经淡出历史舞台 提供了一个专业数据建模工具PowerDesigner
  6. SQLite 嵌入式数据库 用在手机端
  7. Java常用  MYSQL 和Oracle,其他也可以用

数据库和管理系统

l  MYSQL中可以有多个数据库  数据库是真正存储数据的地方

l  两者的关系

  1. 客户端面对数据库管理系统
  2. 数据库管理系统 操作数据库
  3. 数据库操作表

l  MySQL数据库是一个服务器 存储数据库的仓库

l  MySQL数据库中有很多数据库 MySql数据库是一个总称

l  要使用数据库就需要创建自己的数据库

l  而存储数据需要在数据库中建立各种数据表 数据是存储在表中的

数据库表

l  数据库中以表为单位存储数据

l  表似于java类

l  表中字段类似于类中属性

l  表中每一条数据类似于对象

l  图

表数据

l  用户表

l  每一个表表示每一个事物也就是一个类

l  每一列表示类中每一个属性

l  每一行也就是一条数据表示类中每一个对象

MySql数据库

安装MySql

  1. MYSQL6.x之后收费
  2. 双击5.5安装包 next
  3. 选择自定义安装
  4. 手动选择安装位置
  5. 两个安装路径

a)         MySql Server

b)         Server data files

  1. 点击next就可以安装了
  2. 安装完后 再次点击next
  3. 然后打上勾 Lanch。。。 运行配置向导
  4. 点击finish就可以了
  5. 开始配置向导
  6. 选择第一个 精细配置
  7. 选择第一个 开发者电脑
  8. 选择第一个 多功能功能数据库
  9. MySql引擎存储位置不要更改
  10. 选择第三个 自定义连接数上限
  11. 启用 tcp/ip网络协议 默认端口号
  12. 选择第三个默认字符集  更改为utf-8
  13. 安装windows服务叫MySql

导入环境变量

  1. 设置密码
  2. 点击Execute
  3. 安装完成
  4. 在windows服务中有 MySql服务 可以停止或开启服务 以及自动开启或手动开启
  5. 360网络连接中或出现MySql服务程序
  6. 命令行开启服务

MySql在系统服务中

MySql登录

l  命令行 敲入mysql –uroot –p123

l  账号和密码

l   也可以分开写账户和密码

l  登录成功

l  密码错误

l  账户错误

SQLYog

l  图形化开发工具

l  免安装

Sql语言

概述

l  数据库不能用java语言

l  与数据库交互 需要使用数据库的SQL语句

l  是数据库中的代码

l  是一种数据库查询和程序设计语言

l  用于存取数据查询,更新和管理关系数据库系统

l  创建数据库 创建数据表 向数据库添加数据信息都需要使用SQL语句

l  适用于所有数据库

SQL语句

l  数据定义语言 DDL

定义数据库对象 数据库 表,列

关键字 creat alter drop 创建 修改 删除

l  数据操作语言 DML

对数据库数据更新操作

关键字 insert delete update

l  数据控制语言DCL

用于分配访问权限和安全级别 还能创建用户

l  数据查询语言DQL

用来查询数据库中标的记录

关键字 select  from  where

SQL通用语法

l  SQL语句可以单行或多行书写 以分号结尾

l  可使用空格或缩进来增强语句的可读性

l  不区分大小写

l  可以使用/**/来注释

l  数据类型

  1. int
  2. double
  3. varchar 可变字符
  4. date 日期类型 只有年月日没有时分秒
  5. 其他还有很多

数据库操作

l  创建数据库

create dataabase 数据库名;

create database 数据库名 character set字符集;

由于安装时以改为默认字符集 所以不用指定字符集了

l  显示数据库

show databases;

l  删除数据库

drop database 数据库名;

l  操作没有确认项

创建表操作

l  格式

l  约束

限制列名写什么数据

  1. 主键约束
  2. 非空约束
  3. 唯一约束
  4. 外键约束

SQL代码的保存

l  可以正常保存 Ctrl+s

l  文件后缀 .sql

l  文本文件

l  导入

Ctrl+o

创建表示例

l  图

主键约束

l  唯一 非空

l  不具备任何含义 只用来标识 生活中没有的 只有系统中有

l  private key 列的后面加入这个关键字

l  在表的最后指定主键 primary key(id)

l  AUTO_INCREMENT可以让主键自动增长 来确保唯一性和非空性

l  查看表

Show table 表名 查看所有表

Desc 表名 查看表结构

l  删除表

Drop表名

修改表结构

l  添加列

  1. Alter table 表名 add 列名 数据类型 约束

l  修改列

  1. 类型修改要注意
  2. Alter table 表名 modify 列名 数据类型 约束

l  修改列名

  1. Alter table 表名 change 旧列名 新列名 数据类型 约束

l  删除列

  1. Alter table 表名 drop 列名

l  修改表名

  1. Rename table 表名 to 新名

l  修改表字符集

Alter table 表名 character set 字符集

数据表添加数据

l  Insert into 表名(列名1,列名2,列名3) values(值1,值2,值3)

  1. 注意列名表名问题 不要写错
  2. 对应问题 列和值个数要对应
  3. 没有字符串概念 字符都用单引号‘’
  4. 数字可以不加单引号

l  Insert into 表名 (列名)values(值)

  1. 没有主键
  2. 列名不写主键 值也不用写主键

l  Insert into 表名 values(值)

  1. 所有值都给出
  2. 不用写列名
  3. 但是值必须写够

l  批量写入

l  Insert into 表名(列名1,列名2,列名3) values(值1,值2,值3),(值1,值2,值3),(值1,值2,值3),

  1. 批量写入数据
  2. 值写多个

l  如果在软件中把自动递增的id删除一个,再添加一个,id还是在删除的那个id基础上自动递增

更新数据

l  Update 表名 set 列1=值1,列2=值2  where 条件

  1. 条件 id
  2. 条件的写法

等于=  小于 <  大于 >    小于等于<=

与或非 and or not

Id In(1,3,4,5) 包含

Id not in(1)   不包含

删除数据

l  Delete from 表名 where 条件

  1. 不清空一条一条的删除 不清空AUTO_INCREMENT记录数 下一次增加还会在原来基础上继续递增

l  Truncate table 表名 摧毁表

  1. 直接将表删除
  2. 重新建表
  3. AUTO_INCREMENT将置为0 从新开始

l  查询表中内容

l  MySql编码方式是UTF-8 windows是GBk 所以会出现中文乱码

l  改变指定列的编码方式

l  其他

数据查询

数据表和测试数据准备

基本查询

l  查询定列的数据

Select 列名1,列名2  from 表名

l  查询所有列

Select * from表名

l  去掉重复记录

Select Disctinct 列名 from 表名

l  查询并临时重新命名列的名字

Select 列名 as ‘要修改的名字’ from 表名

后面加 as 修改后的名字

或者直接加修改后的名字

l  查询中直接运算

  1. Select 列名 运算符 数字 as‘’ from表名
  2. 加as 是因为运算后列名就改变了

条件查询

l  满足条件查询 不满足不操作

l  比较运算符

l  逻辑运算符

l  查询某一个名字的数据

l  大于

l  And

l  Between and

l  Or

l  In

l  Like 模糊查询

  1. 开头有小米
  1. 开头结尾都有小米
  1. 查询几个字符 几个下划线就表示几个字符

l  查询不为空

排序查询

l  升序

Select * from 表名Order by 列名 asc

Asc可以不写

l  降序

Select * from 表名Order by 列名 desc

l  查询指定列 在进行降序排列

不能对中文进行排序 结果不可预知

聚合函数查询(纵向查询)

概念

l  之前都是横向查询

l  有时需要计算 需要纵向查询

l  这时需要使用聚合函数 将每一列进行计算然后返回一个单一的值

示例

l  Count

l  Sum

l  Avg

l  Max min

l  混合计算

l  分组查询

  1. 把重复内容进行分组 单独进行聚合计算
  1. 过滤pname
  1. 过滤pname
  1. 过滤sum

Having用于分组后过滤

分组后不能用Where

命令行乱码问题

时间: 2024-12-29 11:55:33

java自学之路-day18的相关文章

【转】JAVA自学之路

JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧. 每个培训机构都会宣传自己的好处,并不能说明大的趋势. 一些新闻文章很有可能是枪手写的,不必太过相信.国外背景的

[转载] JAVA自学之路

原文链接http://blog.csdn.net/mengxin846/article/details/2219844 虽然文章有点旧但还是有些启发的,譬如要事第一,好读书不求甚解. JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当 成学生

马士兵:JAVA自学之路

JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训.决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢?我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧. 每个培训机构都会宣传自己的好处,并不能说明大的趋势.一些新闻文章很有可能是枪手写的,不必太过相信.国外背景的教师和课

Java 自学之路

Java 自学之路 前言 从运行第一个程序开始算起,我接触编程也有三年的时间了.最初是从51单片机入门学习的C语言,班里面的大佬带着我一起做小项目,但是因为没人教,基本靠自学,学得慢,写的代码也烂,很没有章法.后来大三下半学期开始准备考研(从电子跨考计算机),从零开始学习数据结构,这才算是真正地入了编程的门.至于考研,后来就放弃了(别问我为什么放弃,当时脑子抽了),去了一家小公司实习.这家公司主要做机器视觉的项目,当时去面试的时候觉得挺高大上,技术 leader 也挺和蔼,感觉是很务实的一个团队

java自学之路-day17

JAVA17 多线程 进程和线程的概念 进程 l  正在运行中的程序 l  程序存储在硬盘中 当进入内存运行时 l  内存中的每一个程序就叫进程 l  并且每一个进程都有一个独立的功能 线程 l  迅雷中的多线程下载 l  main方法中有很多方法一次排列 如果其中一个方法执行了很多次循环 那么下一个方法就不会执行 从入口main到结束,一条路走到底 必须一个一个的执行 这种程序是单线程程序 效率慢 l  例如 多台电脑网吧上网 多条路通行 线程 概念 l  CPU 中央处理器 inter AW

Java自学之路---DotCom

引言 我从接触编程以来,一直是一个C/C++程序猿,因为我喜欢编程时,那种接地气的感觉,认为只有自己管理内存的使用,心理才踏实.但随着工作中不断增加的见闻,不断的从博客和源码中获得新的见解,我发现这个时代已经发生了变化,我们有强劲的硬件资源.我们有久经考验的框架和源码,我们最宝贵的是花在编码上的时间.所以我决定带着之前C/C++的经验,来认识JAVA是门怎样的语言,以及它的编程理念可以给我带来怎样的好处. 如何学习 和我学习其他语言一样,我主要还是依靠书本,电子书或者是纸质书,这样学习起来才是最

java自学之路-day16

JAVA16 IO流 转换流 引入 l  中文系统默认编码表GBK l  FileWriter的构造方法假定默认编码GBK l  但是一些文本文件有可能是其他编码方式 l  所以引入转换流 可以对编码表进行设定 l  对之后开发互联网程序很重要 概述 l  字符流的一种 l  字符与字节的桥梁 l  继承Writer类 OutputStreamWriter l  Java.io. OutputStreamWriter l  继承Writer类 l  字符输出流 向文本文件写入数据 l  字符流转

java自学之路-day10

JAVA10 Eclipse快捷键补充 l  选中类Ctrl T 继承树 l  Ctrl 或者f3 查看源码 多态会跳转到调用父类中 l  Java中lang包中的所有类 不需要导包 直接用  例如 System String l  Ecplise 中的Jre System Library是默认的eclipse依赖jre的类库 在该位置可以查找到平常使用的String 类 Random类 Math类 l  Jdk 包括 jre和开发工具,jre包括jvm 和运行时所需要的核心类库 l  运行 h

java自学之路-day14

JAVA14 异常 引入 l  Java代码在运行时期发生的问题就是异常 l  Java中把异常信息封装成了一个类 l  当出现了问题时,就会创建异常类对象并抛出异常相关的信息 l  如异常出现的位置 原因等 继承体系 l  java.lang 类 Throwable   可以被扔出去的类 l  java中所有的错误和异常 l  直接已知子类: Error, Exception 异常和错误的区别 l  数组访问越界是异常 Exception RuntimeException 编译,运行期间出现的