首页 > 代码库 > java自学之路-day18

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. 把重复内容进行分组 单独进行聚合计算
  2.  

 

  1. 过滤pname

 

  1. 过滤pname

 

  1. 过滤sum

 

Having用于分组后过滤

分组后不能用Where

 

 

命令行乱码问题

 

java自学之路-day18