第二阶段javaweb-day01-mqsql基础

  • javaweb简介
  • 数据库学习

一.javaWeb课程介绍

  1. 什么是javaWeb :java开发互联网项目 即 网站 broswer server
  • 补充:

    画图理解什么是互联网项目(先简单了解即可,后面实战再去体会)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5VQO2uEV-1609735776970)(imgs/web项目的组成.png)]

二.数据库学习

  1. 数据库概念介绍
  2. MySQL数据库软件
    1. 安装
    2. 卸载
    3. 配置
  3. SQL–结构化查询语言

1.数据库基本概念

  1. 数据库的英文名:DataBase —简称 DB
  2. 什么是数据库?
    • 用于存储管理数据的仓库
  3. 数据库的特点:
    1. 持久化存储数据,其实就是一个文件系统
    2. 方便存储和管理
    3. 使用统一的方式操作数据
  • 补充
思考:
 1.数据有哪些?  数字 文字 图片 视频 音频  
 2.数据在电脑中以什么形式存在?数据附着在哪里?数据的载体是什么?  
 3. 数据在电脑上以文件的形式存在
   	数据的载体是文件
    文件由数据构成
 4.常用文件格式有哪些?-后缀名  txt    docx  xlsx  pptx  mp3  mp4  avi     java  
 5.不常见的文件格式有哪些?   exe   dll  ini    md     html     xml  frm
 6.我们数据库存的是什么数据呢?在电脑上又以什么格式的文件存储呢?
    带着这个疑问,我们继续下面课程的学习

2.数据库软件

  • 数据库软件的概念:

    • 数据库是一个概念,数据库软件是这个概念的具体实现
    • 汽车是一个概念,生产汽车的公司有:宝马,大众 。其中 宝马X6是宝马公司的一款汽车
    • 生产数据库的公司有:Oracle IBM 微软 ,其中Oracle,Mysql数据库软件都是Oracle公司的产品
  • 常用的数据库软件:

    • MYSQL
    • Oracle
搞清楚三个概念名称:数据,数据库,数据库软件
数据:数字,文字,图片,音乐,视频...
数据库:数据仓库
数据库软件:数据库概念的实现,真实的数据仓库,可以存储和管理数据
2.1 MySQL的安装
  • 两个步骤:安装和配置

  • 如果不成功,需要卸载,再装

2.2 MySQL的卸载
  • 找到mysql的安装目录
  • 找到my.ini文件中的数据目录datadir=""
  • 控制面板程序卸载中卸载mysql
  • 删除 datadir中的mysql文件夹
2.3 MySQL服务的启动和关闭
  • 找到服务
    • 直接搜索服务
    • win+R–>services.msc
  • 找到MySQL服务,右键启动和停止
  • 管理员权限打开cmd
    • net stop mysql(服务名)
    • net start mysql(服务名)
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
2.4 MySQL登录和退出
  • 登录

    1. mysql -uroot -proot
    2. mysql -uroot -p 回车 密码隐藏输入
    3. mysql --host=127.0.0.1 --user=root --password=root
  • 退出

    • exit 或 quit
      在这里插入图片描述
2.5 MySQL目录结构
  1. MySQL安装目录
    1. my.ini
  2. MySQL数据目录 data文件夹 涉及到三个概念:
    1. 数据库:文件夹
    2. 表: frm文件
    3. 数据: frm文件中的数据
      在这里插入图片描述
      在这里插入图片描述

3. SQL学习

在这里插入图片描述
在这里插入图片描述

3.1 sql基本概念
  • 什么是SQL?
    • Structured Query Language:结构化查询语言
    • 其实就是定义了操作所有关系型数据库的规则
    • 方言:不同数据库软件产品对sql的支持不完全一样,有细微差异,我们称这些语法的差异为方言
      • 例如 普通话和家乡话 普通话相当于sql,所有的关系型数据库通用。家乡话相当于方言,适用于不同的数据库软件
3.2 .SQL通用语法
  1. SQL语句以单行或多行书写,以分号结尾
  2. 空格和缩进增强可读性
  3. sql语句不区分大小写,关键字建议使用大写。
  4. 注释
    1. 单行注释:# 或 --空格
    2. 多行注释 /**/
随堂测试:
1.以下正确的是写法是:
A: mysql -uroot -proot
B: mysql -uroot -proot;
C: net Start Mysql;
D: net Start Mysql
A D
3.3 SQL分类
  • 画图 分类
  • ddl 数据定义语言:操作数据库和表结构 data define language
  • dml 数据操作语言:操作数据记录–增删改
  • dql数据查询语言:查询数据记录
  • dcl数据控制语言:用户权限的控制–授权和撤销权限
随堂测试:
1.请说出下面选项对应的是sql的哪一类?
A: 向学员表中添加一条记录       dml  
B: 修改数据库db1的字符集为utf8  ddl
C: 查询学员表中年龄大于20岁的学员信息  dql
D: 创建一个数据库连接新用户root1,登录密码root1,允许该用户创建库和表。 dcl
E: 向学员表中添加‘联系电话’这一列信息 dml

--熟练理解表结构:
1.表名,表的字符集
2.表的列名,列类型,列个数
3.3.1 .ddl学习
1. 操作数据库

在这里插入图片描述

  1. C (Create):创建

    • 创建数据库

      create database 数据库名;
      
    • 创建数据库前先判断是否存在

      create database if not exists 数据库名;
      
    • 创建数据库,判断是否存在,并指定字符集

      create database if not exists 数据库名  character set 字符集
      
    • 练习:创建数据库db1 ,判断是否存在,并指定字符集为utf8

      create database if not exists db1 character set utf8;
      
    随堂测试:
    1.创建一个数据库db1,判断是否存在,并指定字符集为utf8
    
  2. R (Retrieve):查询

    • 查询所有数据库的名称

      show databases;
      
    • 查询某个数据库的字符集–其实是查询数据库的创建sql语句

      show  create database db1(数据库名);
      
    随堂测试:
    1.查询数据库db1的名称
    2.查询数据库db1的字符集
    
  3. U(Update):修改

    • 修改数据库的字符集

      alter database db1(数据库名) character set utf8(字符集);
      
    随堂测试:
    1.修改数据库db1的字符集为gbK,并查看修改后的字符集
    1.修改数据库db1的字符集为utf8,并查看修改后的字符集
    
ALTER DATABASE db1 CHARACTER SET gbk;
SHOW  CREATE DATABASE db1 ; 
ALTER DATABASE db1 CHARACTER SET utf8;
SHOW CREATE DATABASE db1;
  1. D(Delete):删除

    • 删除数据库

      drop database db1(数据库名);
      
    • 删除数据库前先判断是否存在

      drop database if exists db1(数据库名);
      
    随堂测试:
    1.删除数据库db1,并判断是否存在。
    2.新建数据库db1,并判断是否存在,指定默认字符集为utf8.
    
ALTER DATABASE IF EXISTS db1;
CREATE DATABASE  IF NOT EXISTS db1 CHARACTER SET utf8;
  
  1. 使用数据库

    • 查询当前正在使用的数据库名称

      select database();
      
    • 注意 和 show databases;的细微区别

      1. 语义不同,分别是:查看所有数据库名称,查看当前正在使用的数据库名称
      2. 写法不同,database() 和 databases 
      
    • 使用数据库

      use db1(数据库名);   
      
2. ddl操作表
  1. 查询

    1. 查询某个数据库中所有的表名称

      show tables;
      
    2. 查询表结构

      desc 表名;
      
    3. 查询表的创建语句

      show create table 表名;
      
  2. 创建

    创建表

        create table 表名(
            列名1  数据类型1,
            列名2  数据类型2,
            ......
            列名n 数据类型n
        );
    
        注意:最后一列,不需要加逗号
    

    画图,理解什么是表

    数据类型
    1. int 整数类型
    age int
    2. double 小数类型
    score double(5,2) 总长度5,小数点后的位数2,最大值999.99
    3. date 日期,只包含年月日,yyyy-MM-dd
    4. datetime 日期,包含年月日和时分秒 yyyy-MM-dd HH:mm:ss
    5. timestamp 时间戳,包含年月日和时分秒 yyyy-MM-dd HH:mm:ss
    如果该类型字段没有赋值,或赋值为null,则默认使用当前系统时间填充
    6. varchar 字符串(没有超过长度,则多余的部分会回收,节约内存)
    7. char字符串(长度固定)
    name varchar(20) 表示姓名最长20个字符的限制 
    
    注意:
    1.字符串varchar要指定长度
    2.varchar和日期类型的数据要加上引号(推荐使用单引号)
    
    
    随堂测试:
    请指出以下字段应该使用什么数据类型:
    A:学员的工资    int
    B:最后一次修改时间  datetime  
    C:结婚日期  date
    D:性别   男 女    char(1)
    E:爱好  varchar(50)
    F:身高  double
    G:工龄  int
    

    练习:创建一个学员表

    	create table student(
    	id int,
        name varchar(10),
        age int,
        score double(4,1),
        birth date,
        insert_time timestamp
    );
    
    随堂测试:
    1.创建一个员工表employee,需要如下字段:
    员工编号,姓名,性别,年龄,工龄,生日,工资
    
    create table employee(
        id int, -- 员工编号
        name varchar(20),-- 姓名
        gender char(1),-- 性别
        age int,-- 年龄
        work_years int,-- 工龄
        birth date,-- 生日
        salary double(8,2) -- 工资
    );
    

    复制表

    create table 表名 like 被复制的表名;
    
  3. 删除表

    1. drop table 表名
    2. drop table if exists 表名   删除这个表,并判断是否存在:
    
  4. 修改

    1.修改表

    • 修改表名

       alter table 表名 rename to 新表名
      
    • 修改表的字符集

      -- 查看表的字符集,其实是查看表的创建语句
      show create table 表名;
       -- 修改表的字符集
      alter table 表名 character set 字符集;
      

2.修改列

  • 添加一列

    alter table 表名 add 列名 数据类型;
    
  • 修改列类型

     alter table 表名 modify 列名 数据类型;
    
  • 修改列名和类型

    alter table 表名 change 旧列名 新列名 数据类型;
    
  • 删除列

    alter table 表名 drop 列名;
    
    随堂测试
    1.修改员工表employee名为emp
    2.修改表的字符集为gbk,查看表的字符集
    3.修改表的字符集为utf8,并查看表的字符集
    4.添加'部门'列
    5.修改'性别'列类型为varchar(6) 
    6.修改gender为sex,类型为varchar(6)
    7.删除'部门'
-- 1.修改员工表employee名为emp
ALTER TABLE employee RENAME TO emp;
-- 2.修改表的字符集为gbk,查看表的字符集
ALTER TABLE student CHARACTER SET gbk;
SHOW CREATE TABLE student;
-- 3.修改表的字符集为utf8,并查看表的字符集
ALTER TABLE student CHARACTER SET utf8;
SHOW CREATE TABLE student;
-- 4.添加'部门'列
ALTER TABLE student ADD 部门 VARCHAR(20);
-- 5.修改'性别'列类型为varchar(6) 
ALTER TABLE student ADD 性别 CHAR(1);
ALTER TABLE student MODIFY 性别 VARCHAR(6);
-- 6.修改gender为sex,类型为varchar(6)
ALTER TABLE student ADD gender CHAR(1);
ALTER TABLE student CHANGE gender sex VARCHAR(6);
-- 7.删除'部门'列
ALTER TABLE student DROP 部门;

综合练习:

1.查看当前的服务器一共有多少个数据库 show databases;
2.查看当前正在使用的数据库         select database();
3.选定其中的一个数据库,进行使用     use db3;
4.查看当前库中有多少个表           show tables;
5.创建一个表
    create table employee(
        id int, -- 员工编号
        name varchar(20),-- 姓名
        gender char(1),-- 性别
        age int,-- 年龄
        work_years int,-- 工龄
        birth date,-- 生日
        salary double(8,2) -- 工资
    );
6.修改表:
	1.修改员工表employee名为emp
    2.修改表的字符集为gbk,查看表的字符集
    3.修改表的字符集为utf8,并查看表的字符集
    4.添加'部门'列
    5.修改'性别'列类型为varchar(6) 
    6.修改gender为sex,类型为varchar(6)
    7.删除'部门'
  • 图形化界面工具 SQLyog
    • 演示安装和连接,写sql语句并执行
    • 调节字体大小
3.3.2 dml学习
  1. 添加数据
  • 添加全部字段

    insert into 表名 (列名1,列名2,...列名n) values (值1,值2,...值n);
    
    注意:
    1.值要和列名要一一一对应,有几个列就要有几个值
    2.添加全部字段数据时,列名部分可以省略,即:
         insert into 表名 values (值1,值2,...值n);
    
  • 添加部分字段

    insert into 表名 (列名1,列名2,列名3,...) values (值1,值2,值3,...);
    
    注意:
    1.值必须和列名对应
    2.列名可以不是连续的
    3.列名可以不按照表结构中的顺序,但通常建议按照先后顺序
    4.添加部分字段时,列名不能省略
    5.没有添加数据的字段默认使用null填充
    
  • 批量添加数据

    随堂测试:
    1.向员工表中新增3名员工信息:
    	2 张三  25岁,男
    	3 李四  26岁,男
    	4 王五  27岁,女
    
    -- 分析:属于添加部分字段 
    insert into emp (id,name,age,sex) values
    (2,'张三',3,'男'),(3,'李四',26,'男'),(4,'王五',27,'女')
    
    -- 批量新增语法
    insert into 表名 (字段1,字段2,...) values (值1,值2,...),(值1,值2,...),(值1,值2,...)
    
  • 注意:

    添加数据值时,除了数字类型,其它类型需要使用引号(单双引号都可以),建议使用单引号。
    
  1. 删除数据
  • 删除满足条件的数据

    delete from 表名 [where 条件];
    
    注意:
    1.如果不加条件,则删除表中所有的数据
    
    eg:
    delete from emp1;
    delete from emp1 where true; 
    delete from emp1 where 1=1;
    
  • 删除表中的所有数据

    truncate table 表名;
    
    两种删除所有数据的方法:
    1.truncate方式,先删除整个表,再创建一张同样结构的表,执行效率高,推荐使用。
    2.delete from 表名 ,不带条件,有多少条记录就会执行多少次删除操作,效率不高,不推荐。
    
    随堂测试:
    1.删除员工表中年龄大于25岁的员工
    2.删除所有员工数据(两种方式)
    
  1. 修改数据
  • 语法

    update 表名 set 列名1=值1, 列名2=值2, ... [where 条件];
    
    注意:
    1.如果不带条件,则会修改所有的数据
    
    随堂测试:
    1.曹操的年龄加1岁,工资涨500
    UPDATE emp SET age=age+1,salary =salary+500 WHERE name='曹操';
    
    2.修改所有员工的部门三国
    update emp set dept='三国';
    
2.3.3 dql学习
  • 完整的查询语法

    select
    	字段列表
    from
    	表名列表
    where
    	条件列表
    group by
    	分组字段
    having
    	分组之后的条件
    order by
    	排序
    limit
    	分页限定
    
1. 基础查询
  1. 多个字段查询

    select 字段名1,字段名2... from 表名;
    
    注意: 如果查询所有字段,则可以使用*来替代字段列表。
    
  2. 去除重复

    关键字 distinct 
    直接放在select后面
    
  3. 四则运算

    一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
     ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
    	 表达式1:哪个字段需要判断是否为null
    	 如果该字段为null后的替换值。
    

    案例:计算学员的英语和数学成绩和

    select math,english,ifnull(math,0)+ifnull(english,0) from stu;
    
  4. 起别名

    字段名 后写关键字 as  或省略as 直接用空格
    
随堂测试:
1.查询员工表中所有员工的姓名和工资
2.查询所有员工的部门,并去重
3.员工表添加'津贴'这一列
4.给每个员工加上600的津贴
5.查询员工的姓名,总工资(工资和津贴之和)

-- 随堂测试答案:
-- 3.员工表添加'津贴'这一列
ALTER TABLE emp ADD bonus DOUBLE(6,2);
-- 4.给每个员工加上600的津贴
UPDATE emp SET bonus =600;
-- 5.查询员工的姓名,总工资(工资和津贴之和)
SELECT NAME 姓名,(IFNULL(salary,0)+bonus) 总工资 FROM emp;
2. 条件查询
  • where和 运算符 构成查询条件
> 、< 、<= 、>= 、= 、<>
 BETWEEN...AND  
 IN( 集合) 
 LIKE:模糊查询
 占位符:
     _:单个任意字符
     %:多个任意字符
 IS NULL  
 and  或 &&
 or  或 || 
 not  或 !
  • 案例
-- 创建表
CREATE TABLE student (
id INT, -- 编号
NAME VARCHAR(20), -- 姓名
age INT, -- 年龄
sex VARCHAR(5), -- 性别
address VARCHAR(100), -- 地址
math INT, -- 数学
english INT -- 英语
);
-- 填充数据
INSERT INTO student(id,NAME,age,sex,address,math,english) VALUES 
(1,'马云',55,'男','杭州',66,78),
(2,'马化腾',45,'女','深圳',98,87),
(3,'马景涛',55,'男','香港',56,77),
(4,'柳岩',20,'女','湖南',76,65),
(5,'柳青',20,'男','湖南',86,NULL),
(6,'刘德华',57,'男','香港',99,99),
(7,'马德',22,'女','香港',99,99),
(8,'德玛西亚',18,'男','南京',56,65);



-- 查询年龄大于20岁
	SELECT * FROM student WHERE age > 20;		
	SELECT * FROM student WHERE age >= 20;
			
-- 查询年龄等于20岁
	SELECT * FROM student WHERE age = 20;
			
-- 查询年龄不等于20岁
	SELECT * FROM student WHERE age != 20;
	SELECT * FROM student WHERE age <> 20;
			
-- 查询年龄大于等于20 小于等于30			
	SELECT * FROM student WHERE age >= 20 &&  age <=30;
	SELECT * FROM student WHERE age >= 20 AND  age <=30;
	SELECT * FROM student WHERE age BETWEEN 20 AND 30;
			
-- 查询年龄22岁,18岁,25岁的信息
	SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
	SELECT * FROM student WHERE age IN (22,18,25);
			
-- 查询英语成绩为null
	SELECT * FROM student WHERE english = NULL; -- 不对的。null值不能使用 = (!=) 	
	SELECT * FROM student WHERE english IS NULL;
			
-- 查询英语成绩不为null
	SELECT * FROM student WHERE english  IS NOT NULL;
	SELECT * FROM student WHERE NOT english  IS  NULL;
随堂测试:
1.查询工资在1000-3000之间的员工 (3种方式)
2.查询没有工资的员工 
3. 模糊查询
  • 使用关键字 like

    通配符:
    _ 匹配一个字符
    % 匹配0-n个字符
    
  • 案例

    -- 查询姓马的有哪些? like
    	SELECT * FROM student WHERE NAME LIKE '马%';
    
    -- 查询姓名第二个字是化的人
    	SELECT * FROM student WHERE NAME LIKE "_化%";
    			
    -- 查询姓名是3个字的人
    	SELECT * FROM student WHERE NAME LIKE '___';
    	
    -- 查询姓名中包含德的人
    	SELECT * FROM student WHERE NAME LIKE '%德%';
    
    随堂测试:
    1.员工表中新增多名员工:
      小马 ,野马,汗血宝马,马云,马化腾,马如风,马到成功
    2.查询员工表中姓名为两个字的员工     like '__';
    3.查询员工表中以'马'开头的,姓名为两个字的员工   like '马_';
    4.查询员工表中以'马'结尾的员工      like '%马';
    5.查询员工表中姓名包含'马'的员工     like '%马%';
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值