javaweb-mysql数据库

这边文章主要介绍数据库以及数据库的指令使用(本文资源来自网络,仅供个人学习使用,吧啦吧啦,差不多就这个意思,不过我提到的这些软件大部分是开源免费的,所以嘛,如果有破解版的,请不要肆意使用,个人学习即可,不传播,不推广)

写在前面,如果数据库表中不能插入中文,或者插入中文乱码的时候

解决方法:①set char set ‘utf8‘(仅一次有效,重新开启服务器需要重新设置);

②修改安装目录下的my.ini配置文件,将里面的utf8改为gbk即可

再试 insert 语句

其它:如果忘记了具体的语句,可以直接通过数据库管理工具:SQLyog - 64 bit(有32位的,网上也有学习开发版(破解的))来进行对应操作,然后可以查看命令提示获取对应的sql语句(这个虽然取巧,但是确实很方便,忘了就这样做,很方便的,特别是需要使用一些比较冷门的指令,比如选定多少条到多少条的时候就可以在工具中先达到效果,主要的作用是:复制指令在java中操作,批量操作之类的都可以,又节约了一点脑内存)

day04

mysql数据库

1、数据库的简介

(1)数据库:简单来说就是一个文件系统,能够使用标准sql(通用型的,limit属性是mysql中对特有的)对数据库进行操作(crud)

(2)常见的数据库

* oracle:是oracle公司产品,是大型的收费的数据库

* db2:是ibm公司的产品,是大型的收费的数据库

* SQLServer:是微软公司产品,是中型的数据库

* MySQL : 在oracle收购之后6.x版本开始收费,之前的版本是免费的(可惜)。

* SQLite:是小型的嵌入式数据库,应用在客户端开发中,比如安卓

(3)关系数据库:存储的是实体之间的关系

* 比如有购物网站,有用户,订单,商品,称为实体(事实存在的,而不是虚拟的)

* 用户、订单和商品之间的关系称为实体之间的关系

* 使用er图(这个用得比较多,要注意)表示实体之间的关系

** 实体使用矩形、在实体上面属性使用椭圆,之间的关系使用菱形

2、mysq(这里还是用免费的5.X版本吧)l的安装和卸载

(1)安装mysql 5.x版本

(2)mysql的安装步骤

* 在文档里面有安装步骤

(已经放在了网盘里,需要的可以自己去看一下)

(3)mysql的卸载

第一步,找到mysql的安装路径,找到一个文件my.ini文件找到两个路径,复制出来

basedir="C:/Program Files (x86)/MySQL/MySQL Server 5.5/"

datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

第二步,打开控制面板,找到安装的mysql数据库,进行卸载

第三步,找到第一步复制出来的两个路径,把这两个路径的里面的所有的文件都删除

第四步,打开注册表 regedit,搜索mysql,找到了都删除

第五步,重新启动系统

3、mysql服务器的存储结构

(1)mysql服务器

* 服务器:从硬件上,服务器就是一台电脑(可高可低的计算机,有可能不存在图形界面?);从软件上,在电脑上安装了服务器软件。

* mysql服务器:在一台电脑上,安装了mysql数据库,这台电脑称为mysql服务器。

(2)mysql服务器的存储结构

* 有多个数据库,在每个数据库里面有多个数据库表,在每个表里面有多条记录

* 学习重点:对数据库、数据库表、表中的记录的操作(crud操作)

4、sql语言简介

主要目的:使用sql语言对数据库、数据库表、表中的记录进行增删改查(crud)操作

(1)数据库是文件系统,使用标准sql对数据库进行操作

* 标准sql,在mysql里面使用语句,在oracle、db2都可以使用这个语句

(2)什么是sql

* Structured Query Language, 结构化查询语言,对数据库进行操作

* sql非过程性语言,不需要依赖于其他的条件就可以运行

** 比如 在java里面

*** if(a > 5) {

System.out.....

}

(3)sql的分类

第一类:DDL (数据定义语言)(create)

* 创建数据库,创建数据库表

* 常用的语句 create

第二类:DML  (数据操纵语言)(增删改)

* 对表中的记录进行增加 修改 删除操作

* 常用的语句 insert  update  delete

第三类:DCL (数据控制语言)

* 数据库的编程的语言

第四类:DQL (数据查询语言)(查询)

* 对表中的进行查询的操作

* 常用的语句 select

5、使用sql对数据库操作

(1)连接数据库

* 打开cmd窗口,使用命令,连接mysql数据库

* 命令: mysql -u root -p 密码

(2)创建数据库

* 语句: create database 数据库的名称;

** 示例:create database testdb1;

(3)查看所有的数据库

* 语句:show databases;

(4)删除数据库

* 语句:drop database 要删除的数据库的名称;

** 示例: drop database testdb1;

(5)切换数据库(use)

* 如果想要创建一个数据库表,这个表要在一个数据库里面,所以需要切换到数据库

* 语句:use 要切换的数据库的名称;

** 示例:use testdb2;

6、使用sql对数据库表操作

(1)创建数据库表 (这一块错误率比较高,可以考虑通过先写在记事本上,然后复制到CMD控制台中)

* 语句 create table 表名称 (

字段 类型,

字段 类型

)

* 创建表 user,字段  id  username  password  sex

create table user (

id int,

username varchar(40),

password varchar(40),

sex varchar(30)

)

(2)mysql的数据类型

字符串型

VARCHAR、CHAR的区别(他们都不会自动增长,特别是在储存UUID的时候,要注意长度问题)

* 当创建表时候,使用字符串类型,name varchar(40),指定数据的长度

* varchar和char的区别

** varchar的长度是可变的,比如 name varchar(5),存值 a ,直接把a存进去

** char的长度是固定的,比如 name char(5),存值 b,把b存进去,后面加很多空格

大数据类型

BLOB、TEXT

* 使用这个类型可以存储文件,一般开发,不会直接把文件存到数据库里面,存文件的路径

数值型(恶俗)

TINYINT (很小的数字)、SMALLINT(小数字)、INT、BIGINT、FLOAT、DOUBLE

* 对应java里面

byte       short    int  long    float  double

逻辑性

BIT

* 类似java里面的boolean

日期型

DATE:用于表示日期 1945-08-15

TIME:用于表示时间 19:10:40

下面的两个类型可以表示日期和时间

DATETIME:手动添加时间到数据表里面

TIMESTAMP:自动把时间添加到表里面

(3)查看表结构

* 语句 desc 表名称;

+----------+-------------+------+-----+---------+-------+

| Field    | Type        | Null | Key | Default | Extra |

+----------+-------------+------+-----+---------+-------+

| id       | int(11)     | YES  |     | NULL    |       |

| username | varchar(40) | YES  |     | NULL    |       |

| password | varchar(40) | YES  |     | NULL    |       |

| sex      | varchar(30) | YES  |     | NULL    |       |

+----------+-------------+------+-----+---------+-------+

(4)mysql的约束有三种

第一种,非空约束 not null

* 表示数据不能为空

第二种,唯一性约束 unique

* 表中的记录不能重复的

第三种,主键约束 primary key

* 表示非空,唯一性

* 自动增长 auto_increment

(5)创建带约束的表

create table person (

id int primary key ,

username varchar(40) not null,

sex varchar(20)

)

+----------+-------------+------+-----+---------+-------+

| Field    | Type        | Null | Key | Default | Extra |

+----------+-------------+------+-----+---------+-------+

| id       | int(11)     | NO   | PRI | NULL    |       |

| username | varchar(40) | NO   |     | NULL    |       |

| sex      | varchar(20) | YES  |     | NULL    |       |

+----------+-------------+------+-----+---------+-------+

(6)删除表

* 语句 drop table 要删除表的名称;

(7)查看当前的数据库里面有哪些表

* 语句 show tables;

7、使用sql对表中的记录进行操作(增删改查操作)

(1)向表里面添加记录 insert

* 语句 insert into 要添加的表名称 values(要添加的值);

* 注意:当添加的字段的数据类型是int类型,直接写值

如果添加的字段的类型是varchar类型和日期类型,使用单引号把值包起来

* 练习:向user表里面添加记录

insert into user values(1,‘aaa‘,‘123456‘,‘nan‘);

* 自动增长的效果

** 创建一个表

create table stu (

id int primary key atuo_increment,

sname varchar(40)

)

insert into stu values(null,‘aaa‘);

(2)修改表里面的记录 update

* 语句 update 表名称 set 要修改的字段的名称1=修改的值1,要修改的字段的名称2=修改的值2 where 条件

* 练习:修改user表里面id=1的username修改为QQQ,修改password为999

update user set username=‘QQQ‘,password=‘999‘ where id=1;

(3)删除表里面的记录 delete

* 语句 delete from 表名称 where 条件

* 练习:删除user表里面id=1的记录

delete from user where id=1;

** 不添加where条件,把表里面的所有的记录都删除

(4)查询表中的记录 select

* 语句 select 要查询的字段的名称 (*) from 表名称 where 条件

* create table user (

id int,

username varchar(40),

chinese int,

english int

)

* insert into user values(1,‘lucy‘,100,30);

insert into user values(2,‘mary‘,60,80);

insert into user values(3,‘jack‘,90,20);

* 练习一:查询user表里面的所有的数据

select * from user;

* 练习二:查询user表里面用户名和语文成绩

select username,chinese from user;

* 练习三:查询user表里面id=2的数据

select * from user where id=2;

(4)别名

* as 别名

select username as u1,chinese as c1 from user;

(5)distinct,去除表里面重复记录

* 语句 select distinct * from 表名;

(6)where子句

第一,运算符 < > >= <=

* 练习:查询user表里面语文成绩大于60的所有的人员

select * from user where chinese > 60;

第二,in:在范围内

* 练习:查询user表里面英语成绩是80、90的人员的信息

select * from user where english in (80,90);

第三,and:在where里面如果有多个条件,表示多个条件同时满足

* 练习:查询user表里面语文成绩是100,并且英语成绩是30的人员的信息

select * from user where chinese=100 and english=30;

第四,得到区间范围的值

* 练习:查询user表里面语文成绩在70-100之间的值

写法一,select * from user where chinese >=70 and chinese <=100;

写法二,select * from user where chinese between 70 and 100;

第五,like:模糊查询

* 练习:查询user表里面username包含a的人员信息

select * from user where username like ‘%a%‘;

(7)查看当前的运行的数据库

select database();

(8)对表中查询的记录排序 order by

* order by写在select语句的最后

第一,升序 order by 要排序字段 asc(asc可以省略,默认的情况下就是升序)

* 练习:对user表里面查询的数据,根据语文成绩进行升序排列

select * from user order by chinese asc;

第二,降序 order by 要排序字段 desc

* 练习:对user表里面的英语成绩进行降序排列

select * from user order by english desc;

8、聚集函数

(1)使用提供一些函数,直接实现某些功能

(2)常用的聚集函数

第一,count()函数

* 根据查询的结果,统计记录数

* 写法 select count(*) from ...where....

* 练习一;查询user表里面有多少条记录

select count(*) from user;

* 练习二:查询user表里面语文成绩大于60的人员有多少

select count(*) from user where chinese>60;

第二,sum()函数

* 求和的函数

* 写法 select sum(要进行求和字段) from ...where....

* 练习一:得到user表里面的语文的总成绩

select sum(chinese) from user;

* 练习二:得到user表里面语文总成绩,英语的总成绩

select sum(chinese),sum(english) from user;

* 练习三:得到user表里面语文成绩的平均分(总的成绩/总的人数)

select sum(chinese)/count(*) from user;

第三,avg()函数

* 计算的平均数的函数

* 写法 select avg(要计算平均数的字段名称) from ...

* 练习:得到user表里面语文成绩的平均分

select avg(chinese) from user;

第四,max()函数:计算最大值

* 写法 select max(字段) from...

第五,min()函数:计算最小值

* 写法 select min(字段) from...

* 练习:得到user表里面语文成绩的最高分数,英语的成绩最低分数

select max(chinese),min(english) from user;

9、分组操作

分组使用 group by 根据分组的字段

在分组的基础之上再进行条件的判断 having,后面可以写聚集函数

(1)举例说明

* 创建表 orders

create table orders (

id int,

name varchar(40),

price int

)

insert into orders values(1,‘电视‘,2000);

insert into orders values(2,‘电视‘,2000);

insert into orders values(3,‘苹果‘,10);

insert into orders values(4,‘手机‘,500);

insert into orders values(5,‘手机‘,500);

insert into orders values(6,‘鼠标‘,33);

insert into orders values(7,‘鼠标‘,33);

(2)练习一:统计orders表里面每类商品的总的价格

select name,sum(price) from orders group by name;

(3)练习二:对商品进行分类,得到每类商品的总价格大于66的商品

select name,sum(price) from orders where sum(price)>66 group by name;

= 上面的语句在逻辑上没有问题,在语法上,where里面不能写聚集函数,报错

正确的写法:

select name,sum(price) from orders group by price having sum(price)>66;

10、mysql的可视化工具使用

(1)使用工具创建数据库,创建表,向表添加记录,删除表中的记录

11、mysql的关键字limit

(1)limit关键字查询表中的某几条记录

(2)limit关键字不是标准sql的关键字,只能在mysql数据库里面使用,实现分页的功能

* 在oracle里面特有关键字 rownum

* 在sqlserver里面特有关键字 top

(3)使用limit查询前几条记录

* 写法: limit 前几条记录  limit 3

* 练习:查询user表里面前三条记录

select * from user limit 3;

select * from user limit 0,3;

(4)使用limit查询第几条到第几条记录

* 写法: limit 第一个参数,第二个参数

** 第一个参数开始的记录数的位置,从0开始的

** 第二个参数从开始的位置向后获取几条记录

* 练习:查询user表里面第二条到第四条记录

select * from user limit 1,3;

12、重置mysql的root密码(可以通过远程链接数据库修改)

(1)知道密码,修改密码

第一,连接mysql数据库

第二,切换数据库 mysql  use mysql

第三,进行密码的修改 update user set password=password(‘要修改成的密码的值‘) where user=‘root‘;

第四,重新启动mysql服务

(2)忘记密码,重置密码(必须在服务端才能这样做,远程控制台是控制不到的,或者说不能直接对系统服务进行修改,如果可以的话,远程也可以做到不知道密码的情况下修改,但是一般不推荐这样做,如果留了一个这样的通道,可能会被恶意利用)

第一,把mysql的服务关闭

第二,打开cmd窗口,输入命令 mysqld --skip-grant-tables(不要加分号)

第三,再打开cmd窗口,连接数据库,不需要输入密码  mysql -u root

第四,切换数据库 mysql  use mysql

第五,进行密码的修改 update user set password=password(‘要修改成的密码的值‘) where user=‘root‘;

第六,把两个cmd窗口都关闭,打开任务管理器,找到mysqld进程,结束

第七,启动mysql服务

时间: 2024-10-23 18:10:51

javaweb-mysql数据库的相关文章

JavaWeb Mysql数据库基础知识

1.常用命令 1.1安装数据库  以mysql56为例,存放在d盘,打开cmd,依次输入如下命令:(1)d:(2)cd mysql56(3)cd bin(4)mysqld -install即可安装.1.2启动数据库  在mysql存储的bin目录下输入以下命令:1.3登录数据库  在bin目录下输入以下命令及设置的密码:1.4修改数据库密码  在bin目录下输入以下命令及修改后的密码,如图中的4214963,即为设置的新密码:1.5关闭数据库  在bin目录下输入如下命令:1.6查看系统中的所有

[JavaWeb基础] 003.JAVA访问Mysql数据库

上面两篇讲解了简单的JSP + Servlet的搭建和请求,那么后面我们肯定要用到数据交互,也就是操纵数据库的数据,包括对数字的增加,删除,修改,查询.我们就用简单的MySql来做例子 我们需要引入驱动包mysql-connector-java.jar,自行去网上下载,有很多. 下面我跟着代码看看怎么进行增删改查 1.打开数据库 // 驱动程序名 private String driver = "com.mysql.jdbc.Driver"; // URL指向要访问的数据库名scutc

jsp-2 简单的servlet连接mysql数据库 增删改查

连接mysql数据库的操作 有增删改查 用的包有 commons-lang3-3.5 mysql-connector-java-5.1.40-bin 但是实际上也就是 数据查询和数据处理两种 所以对数据库的操作DAO只有两种方法 package com.javaweb.dao; import java.lang.reflect.Field;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.Re

DAO设计模式 -- 使用数据库连接类连接MySql数据库并实现添加用户

1. DAO简介    DAO设计模式是属于J2EE数据库层的操作,使用DAO设计模式可以简化大量代码,增强程序的可移植性. 2. DAO各部分详解    DAO设计模式包括5个重要的部分,分别为数据库连接类,VO类,DAO接口,DAO实现类以及DAO工厂类.   2-1 数据库连接类:    数据库连接类的主要功能就是连接数据库并获得连接对象,以及关闭数据库.通过数据库连接类可以大大地简化开发,在需要进行数据库连接时,只需要创建该类的实例,并调用其中的方法就可以获得数据库连接对象和关闭数据库而

解决Linux系统下Mysql数据库中文显示成问号的问题

当我们将开发好的javaWEB项目部署到linux系统上,操作数据库的时候,会出现中文乱码问题,比如做插入操作,发现添加到数据库的数据中文出现论码,下面就将解决linux下mysql中文乱码问题! 打开Linux窗口,启动mysql. 连接mysql输入show variables like '%char%'; 出现如下图,这样的话在linux下操作mysql会出现中文乱码,所以我们要解决这个问题. 关闭mysql,找到 /etc/my.cnf 文件 3.1 如果没有找到my.cnf文件,就从

web 项目:解决插入 MySQL 数据库时中文乱码问题

背景:在做 javaweb 项目的时,前台传递的中文最后插入数据库的时候总是出现乱码现象. 解决方案 ? A.不管是使用 Idea.eclipse,确定自己的项目所使用的字符集是 UTF-8. ? B.查看 MySQL的字符集是否是 UTF-8.打开 Dos 窗口,输入:mysql -u root -p, 在输入密码即可进入数据库.进入数据库输入命令 :show variables like 'character%';查看数据库的字符集,如下图: ? MySQL 的默认编码是 Latin1,不支

Linux环境下MySQL数据库用SQL语句插入中文显示 “问号或者乱码 ” 问题解决!

问题: 在普通用户权限下执行 mysql -u root -p进入mysql数据库,中间步骤省略,插入数据:insert into 库名(属性)values('汉字'); 会出现如下提示:  Query OK, 1 row affected, 1 warning (0.00 sec)    表明出现错误,没有插入成功,然后执行select * from 表名   就会出现如下的问题:显示的表中出现乱码或者问号. 如图: 解决方案: 首先重新打开一个终端窗口(方便操作),进入root用户模式 执行

MySQL数据库基础知识

day02 MySQL数据库基础知识 一.基础知识概述: 基础决定你这门课程的学习成败!只有学习好这些基础知识以后,你才能真正的运用自如.才能够对数据库有更深入的了解,道路才会越走越远. 二.基础知识: 1.数据库(database):数据库就好比是一个物理的文档柜,一个容器,把我们整理好的数据表等等归纳起来. 创建数据库命令:        create database 数据库名; 2.查看数据库         show databases; 3.打开指定的数据库         use 

Linux环境下启动MySQL数据库出现找不到mysqld.sock的解决办法!

问题: 在普通用户权限下运行:mysql -u root -p,回车之后如果会出现如下错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 此错误的意思就是没有找到mysqld.sock文件. 解决办法: 首先进入超级用户root权限  sudo -i 或者su - root 切换到默认目录 cd /var/lib/mysql  下查看

MySQL数据库

day01 MySQL数据库及数据类型 一.MySQL概述: MySQL数据库是一个关系型数据库,是目前流行的开源代码数据库,是完全网络化的跨平台的关系型数据库系统,MySQL数据库同时也是目前市场上得到广泛运用的和安装使用的,可以称的上是目前运行速度最快的sql语言数据库,主要的优势和特点有一下几点: 1.成本---MySQL数据库是开源代码的,一般是免费使用. 2.性能---MySQL数据库执行速度快 3.可信赖---某些大型的公司和企业单位以及网站都是使用MySQL数据库. 4.简单---