javaweb(mysql)基础

javaweb_day05(mysql基础)

  1. 今日内容
  2. 数据库的概念以及mysql数据看库的安装;
  3. 对数据库进行CRUD操作; 
    1. 创建数据库:create database 数据库名称;
    2. 删除数据库:drop database 数据库名称;
    3. 其他操作:

1.查看所有数据:show databases;

2.切换数据库:use 数据库名称;

  1. 对数据库中的进行CRUD操作;
    1. 创建表:

create table 表名(

字段名1 类型 约束,

字段名1 类型 约束,

...

字段名1 类型 约束

);

单表约束:

主键约束:primary key   一般主键约束和自动增长连用:auto_increment

非空约束:not null

唯一约束:unique

    1. 删除表:drop table 表名;
  1. 对数据库表中的数据进行CRUD操作(重点);

4.1、添加数据:

向某几列中添加值:insert into 表名 (1,2....) values (1,2,...)

向每一列都添加值:insert into 表名 values (1,2,..);     //添加了一行数据

一次性添加多行数据:insert into 表名 values (1,2,..),(1,2,...),(1,2,...),...;

注意事项:(一一对应)

  1. 1.值的顺序 必须要和 列的顺序一致
  2. 2.值的类型要符合列规定的类型
  3. 3.值的长度要符合列规定的长度
  4. 4.如果是日期类型,那么就是用单引号或者双引号

4.2、修改数据

update 表名 set 1=1,2=2,... [where 条件];  如果省略了where条件,那么就修改这一列的所有值

update user set password=”123”,age=20 where username=”aaa”;

4.3、删除数据

delete from 表名 [where 条件]

delete from user;     //删除表中的所有数据 :将表中的数据一行一行的删 DML

delete from user where age > 20;   //删除年龄大于20的用户信息

删除表中的所有数据:truncate table 表名   :将表删除,然后创建一张和之前表结构相同的新表  DDL

4.4、基本查询

最经典的查询语句:select * from 表名;

-- 1 查询所有学生的考试信息

SELECT * FROM exam;

-- 2 查询所有学生的姓名和英语成绩

SELECT NAME,english FROM exam;

-- 3 查询英语成绩,要求不重复

SELECT DISTINCT english FROM exam;

-- 4 查询所有成绩的总和

SELECT chinese+math+english FROM exam;

-- 5 别名查询

SELECT chinese+math+english AS SUM FROM exam;

SELECT chinese+math+english SUM FROM exam;

4.5、条件查询

SELECT * FROM exam WHERE english >80;-- 带运算符 > < >= =< <> = 


SELECT * FROM exam WHERE NAME LIKE "_";-- 模糊查询之_

SELECT * FROM exam WHERE NAME LIKE "%";-- 模糊查询之%


SELECT * FROM exam WHERE math IN (83,91,98);-- 把数学成绩是83,91,98的同学查到了。

SELECT * FROM exam WHERE math=83 OR math = 91 OR math=98;


SELECT * FROM exam WHERE english >86 AND english <100;

SELECT * FROM exam WHERE english BETWEEN 86 AND 100;-- between..and..:取介于两个值之间的数据;


-- and连接多个并列条件,查询数学大于80且姓李的同学成绩

SELECT * FROM exam WHERE NAME LIKE "%" AND math >80;

-- 数学成绩不是83或者91或者98同学的信息

SELECT * FROM exam WHERE math NOT IN (83,91,98);

4.6、排序查询

order by 字段名1 [asc/desc],字段名2 [asc/desc], .....

select * from exam where name like “%” order by english asc,chinese desc;

4.7、聚合函数

sum() :求和

avg() :求平均数

count(*) :统计个数  注意:得到的结果是一个bigint----long

min() :求最小值

max() :求最大值

补充:ifnull(字段名,0)  :如果该字段是null,那么就用0来代替null做运算;  

length() : 计算字段值的长度   不属于聚合函数

4.8、分组查询

group by 字段名 [having 条件]

-- 案例4:按商品名称统计,统计每类商品花费的总金额在5000元以上的商品,并且按照总金额升序排序

SELECT SUM(price) FROM orderitem GROUP BY product HAVING SUM(price)>5000 ORDER BY SUM(price) ASC;

having关键字:当条件有聚合函数或者分组之后还需要筛选,那么就使用having来过滤     having是对结果进行筛选。

总结:

select * from 表名 [where 条件] [group by 字段名] [having 条件] [order by 字段名 asc/desc] ;

01MySQL数据库的概述

  • 什么是mysql数据库?
  • 什么是关系型数据库?
  1. mysql是关系型数据库管理系统,属于oracle旗下产品。
  2. 关系型数据库存放的是实体之间的关系:

02MySQL的安装

在资料里面有安装图解,按照那个来就行了。

  • 知道安装mysql数据库的几个注意点就行了:
  1. 字符集一定要设置成utf8

  1. 一定要打钩添加到环境变量path

03MySQL的数据库服务器的存储方式

  • 理解数据库的存储方式:

一个数据库服务器中会存在很多数据库,一般一个应用就对应一个数据库;一个数据库中会有很多表,一般一个实体类就对应一张表,比如:商品、订单、用户信息等;一张表里面会有很多条数据,一般一个实体对象就对应一条数据

总结一句话:数据在数据库里面是用表来存的。

04SQL的概述

  • 什么是sql
  • sql有哪些分类?
  1. sql称为结构化查询语言(Structured Query Language),是一种编程语言,用于存储数据、查询、更新和管理关系型数据库。
  2. 分为4类:
    1. DDL:数据定义语言,用于操作数据库和表;【创建(create)、删除(drop)、修改:(alter)、查(select)数据库或者表
    2. DCL:数据控制语言,一般用来管理数据库权限;grant  if…
    3. DML:数据操纵语言,一般用来操作表中的数据;【增(insert)、删(delete)、改(update)】
    4. DQL:数据查询语言,一般用来查询表中的数据;select

05SQL操作数据库:对数据库进行CRUD的操作

    • 学会使用SQLyog工具;
    • 对数据库进行CRUD的操作分别使用什么关键字?

1、推荐大家使用工具类操作:

第一次打开可能需要注册激活,那么大家key里面的内容对应复制就行了:

激活完成之后打开界面需要建立一个连接,让工具连接到mysql数据库:

2、对数据库进行CRUD的操作使用

-- 创建数据库

-- 语法:create database 数据库名 [character set 字符集 collate 字符集校验规则];

CREATE DATABASE db1;-- 创建一个数据库叫db1

CREATE DATABASE db2 CHARACTER SET gbk;-- 创建一个字符集为gbk的数据库叫db2

CREATE DATABASE db3 CHARACTER SET utf8 COLLATE utf8_bin;-- 创建一个字符集为utf-8,字符集校验为utf8_bin的数据库叫db3


-- 查看数据库(查看所有数据库、查看数据库的创建信息)

-- 语法:

-- 1show databases;

-- 2show create database 数据库名;

SHOW DATABASES;-- 查看所有数据库

SHOW CREATE DATABASE db2;-- 查看数据库db2的信息

SHOW CREATE DATABASE db3;-- 查看数据库db3的信息


-- 删除数据库

-- 语法:drop database 数据库名;

DROP DATABASE db1;-- 删除db1数据库

SHOW DATABASES;


-- 修改数据库的字符集

-- 语法:alter database 数据库名 character set 字符集 [collate 字符集校验规则];

ALTER DATABASE db2 CHARACTER SET utf8;-- db2数据库的字符集修改成utf8

SHOW CREATE DATABASE db2; -- 查看数据库结构


-- 其他数据库操作(切换正在使用的数据库、查看当前选择的数据库)

-- 语法:

-- 1use 数据库名;

-- 2select database();括号必须要

USE db2;-- 切换(使用)db2数据库

SELECT DATABASE();-- 查看当前选择的数据库(也就是正在使用的数据库)

06SQL操作数据库中表:创建表之数据类型

    • 掌握创建表的语法格式和关键字是什么?
    • 掌握java中数据类型对应到mysql中的数据类型。
  1. 语法格式:


  1. mysql中的数据类型:

Java中的类型 MySQL中的类型

byte/short/int/long tinyint/smallint/int/bigint

float float

double double

boolean bit

char/String charvarchar类型

charvarchar的区别:

* char代表是固定长度的字符或字符串。

* 定义类型char(8),向这个字段存入字符串hello,那么数据库使用三个空格将其补全。

* varchar代表的是可变长度的字符串。

* 定义类型varchar(8), 向这个字段存入字符串hello,那么存入到数据库的就是hello

Date date/time/datetime/timestamp

datetimetimestamp区别

* datetime就是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用null存入到数据库中

* timestamp也是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用当前的系统时间存入到数据库中。

File BLOB/TEXT

07SQL操作数据库中表:创建表之约束及建表

  • 约束有什么作用以及约束有哪些分类?
  • 创建表需要注意什么?使用工具就不会出现这种情况

约束的作用:用来规范数据的完整性。

单表的约束分类:

主键约束:primary key

唯一性约束:unique

非空约束:not null

注意一个表中的主键只有一个。

创建表需要注意:创建表之前要有数据库,并且通过use 数据库名来使用一个数据库,再在这个数据库里面创建表:

08SQL操作数据库中表:查看所有表和查看某个表结构

  • 掌握语法结构,重点是关键字:show tablesdesc 表名。

对应结果:

09SQL操作数据库中表:删除表

  • 删除表和删除数据库和相似:drop table 表名;

10SQL操作数据库中表:修改表

  • 总结一下修改表的sql语句有哪些特征?
      1. 、修改表都是以 alter table表名 开头的。
      2. 、添加列使用add,删除列使用drop,修改列的长度使用modify,改变列名使用change

  修改表名使用rename to,修改表的字符集 character set

  1. 添加列:alter table 表名 add 列名 字段类型(长度) [约束];
  2. 删除列:alter table 表名 drop 列名;

  1. 修改列名称:alter table 表名 change 旧列名 新列名 新列名的字段类型 [约束];

4、改列的字段、字段长度、约束:alter table 表名 modify 列名 字段类型(长度) [约束];

5、表名:rename table 旧表名 to 新表名   或者  alter table 旧表名 rename to 新表名

6、表的字符集:alter table 表名 chatacter set 新字符集 [collate字符集校验规则]

11SQL操作数据库中表的记录:添加记录

  • 增加一条记录的语法是什么,关键字是什么?
  • 有哪些注意事项?
  1. 语法:关键字是:insert into
  1. 、给某几列插入数据:insert into 表名(1,2,3…) values(1,2,3…);
  2. 、给所有列插入数据:insert into 表名values(1,2,3…);   有多少列就写多少个值
  3. 、一次性插入多行数据: insert into 表名values(1,2,3…), (1,2,3…), (1,2,3…)…;
  1. 注意事项:
  1. 、值的类型要与数据库中列的类型一致。
  2. 、值的顺序要与列的顺序保持一致。
  3. 、插入值的长度不能超过列规定的长度。
  4. 、对于字符串和时间的值,要使用引号括起来。
  1. 案例:

结果如下:

12SQL操作数据库中表的记录:添加中文记录

    • 产生乱码的原因是什么?
    • 如何解决乱码问题,有什么弊端?
  1. 因为window操作系统是中文环境,cmd窗口的字符集是gbk编码,而我们的数据库系统中的client端编码是utf8,两个码表不统一,所以会产生乱码。

查看数据库的字符集show variables like ‘%character%’;

  1. 找到mysql的按照目录(C:\Program Files (x86)\MySQL\MySQL Server 5.5----》打开my.ini文件----》找到client字符集,修改成gbk

这样的弊端就是:我们以后通过程序向数据库中插入值,程序的工作空间必须是gbk,不方便,所以,配置文件中还是保持是utf8,使用SQLyog等工具向数据库中插入数据,不使用cmd窗口操作就行了。

案例:

结果如下:

13SQL操作数据库中表的记录:修改记录

  • 修改一条记录的语法是什么,关键字是什么?
  • 有哪些注意事项?
  1. 语法:关键字update

update 表名 set 列名1=1,列名2=2…[where条件];

如果没有带条件,那么就是把这一列的值都修改了

  1. 注意事项跟添加数据时一样的。

案例1

案例2

案例3

14SQL操作数据库中表的记录:删除记录

  • 删除记录的语法是什么,关键字是什么?
  • 有哪些注意事项?
  • 两种删除表数据的方式有什么区别?
  1. delete from 表名 [where 条件]
  2. 注意事项:
  1. 、删除数据是删除一行数据
  2. 、当不带条件时,表示删除表里面所有数据。
  1. delete from 表名 truncate table 表名 两种方式的区别:

delete from 表名:是DML语句,一条一条的删除数据,事务可以作用在DML语句上。

truncate table 表名:是DDL语句,先删除表,再创建一个跟之前表一样结构的新表,事务不能作用在DDL语句上。

案例1:根据条件删除一行数据

案例2:删除所有数据

15SQL操作数据库中表的记录:查询操作、基本查询

    • 基本查询的语法结构是什么,关键字是什么?
    • 查询支持算数运算和如何取别名?

select * from 表名----------------------------------------------->查询所有信息

select1,列2…from 表名--------------------------------->查询某几列的信息

  1. 查询所有学生的考试信息

  1. 查询所有学生的姓名和英语成绩

  1. 查询英语成绩,要求不重复

  1. 查询所有成绩的总和

  1. 别名查询

16SQL操作数据库中表的记录:查询操作、条件查询

    • 条件查询使用什么关键字?
    • 模糊查询使用什么关键字,_%有什么区别?
    • inbetween..and有什么区别?

1、使用where关键字表示条件查询,里面可包含如下关键字:

>  ,  <  ,  >=  ,  =<  ,  <>  ,  =  !=

2、模糊查询使用like关键字

like可以进行模糊查询,like子句中可以使用_或者%作为占位符。_只能代表一个字符,而%可以代表任意个字符。

* like ‘_’ :名字中必须是两个字,而且是姓李的。

* like ‘%’ :名字中姓李的学生,李字后可以有1个或任意个字符。

* like ‘% :名字中以四结尾的。

* like ‘%%’ :只要名称中包含这个字就可以。

  1. inbetween.. and..有什么区别

in:是在给定的几个值之间查询。

between.. and:取介于两个值之间的数据,是在一个范围内查询。相当于where xxx>a and xxx<b

条件关联:and , or , not,可以连接多个条件

案例1>  ,  <  ,  >=  ,  =<  ,  <>  ,  =

案例2like模糊查询

只能查到名字是两个字,且姓的同学

只要包含李字,都能查到。

案例3in:在给定的范围内查询

案例4between..and..:取介于两个值之间的数据

案例5:条件关联:and , or , not可以连接多个条件

17SQL操作数据库中表的记录:查询操作、排序查询

  • 排序查询的语法结构以及关键字是什么?

语法结构select * from 表名 [where 条件] order by 列名 asc/desc列名 asc/desc …

案例1:升序查询

案例2

案例3

18SQL操作数据库中表的记录:查询操作、聚合函数查询

    • 常见的聚合函数有有哪些,分别有什么作用?
    • Ifnull函数的作用是什么?

sum(字段名); 查询某一列数据总和

案例1:查询所有学生英语成绩总和

案例2:获取所有学生的英语成绩总和和数学成绩总和

案例3:查询姓李的学生的英语成绩的总和

案例4:查询所有学生各科的总成绩

区别:SUM(english)+SUM(chinese)+SUM(math):是先计算每一列之和再求总和;

  SUM(english+chinese+math):是先计算每个人的englishchinesemath之和再求总和

如何某个人的成绩存在null,这两种方式求总和就不一样了(null和一个数做算数运算等于null),但是我们可以使用ifnull函数

count(字段名),统计数量

案例1:获得学生的总数

  ===

===

注意:如果有null值,这不被计算。

===

案例2:获得姓李的学生的个数

===

max(字段名),计算最大值

案例:获得数学成绩的最高分

===

min(字段名),计算最小值

案例:获得语文成绩的最小值

===

avg(字段名),计算平均值

案例:获取语文成绩的平均值

===

19SQL操作数据库中表的记录:查询操作、分组查询

    • 分组查询的语法结构和关键字是什么?
    • 如果使用带有聚合函数的条件过滤或者分组后过滤,该怎么做?
    • 总结完整的查询语句的语法格式是什么?
  1. 分组查询的语法结构:group by 字段名

准备数据:

create table orderitem(

id int primary key auto_increment,

product varchar(20),

price double

);

insert into orderitem values (null,'电视机',2999);

insert into orderitem values (null,'电视机',2999);写博客

insert into orderitem values (null,'洗衣机',1000);

insert into orderitem values (null,'洗衣机',1000);

insert into orderitem values (null,'洗衣机',1000);

insert into orderitem values (null,'冰箱',3999);

insert into orderitem values (null,'冰箱',3999);

insert into orderitem values (null,'空调',1999);

案例1:按商品名称统计,每类商品所购买的个数:

===

案例2:按商品名称统计,每类商品所花费的总金额:

===

案例3:按商品名称统计,统计每类商品花费的总金额在5000元以上的商品:

2、注意where子句不能使用聚合函数,如果现在使用带有聚合函数的条件过滤或者分组后过滤,使用having关键字

案例4:按商品名称统计,统计每类商品花费的总金额在5000元以上的商品,并且按照总金额升序排序:

  1. select … from 表名 where 条件 group by 字段名 hanving 条件 order by asc/desc
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值