文章目录
0.知识回顾
-
已学习技术
a) HTML标签之术 --> 展示内容(数据)的
b) CSS样式之术 --> 内容美化
c) JavaScript脚本之术 --> 内容交互
WEB 技术 -
需要掌握的
a) 能够熟练使用HTML标签构建网页 h5
b) 能够基本掌握CSS相关技术来美化网页 css3
c) 能够熟练掌握以jQuery为主的JavaScript技术 -
小测试
a) 请说出几个常用的HTML标签 h1-h6 p div img
b) 请谈谈你对jquery的理解 什么是jquery JS库 用于简化JavaScript操作的框架技术 , 对比js的优势 使用简单 代码量小 效果非常明显
c) 请谈谈你对bootstrap的理解 什么是bootstrap CSS美化产品 框架 提供一套成型的CSS样式方便开发者调用
谈谈你对XXX的理解? 1) 什么是? 2) 有什么用? 3) 总结一下使用经验(可选) 言简意赅
网页 --> 展示数据 但是不能存储数据(永久)
1.数据库介绍
1.1 数据库概述
前言 : 前一阶段,我们学习了HTML的相关知识,可以对数据进行简单的添加 修改 删除,但是很遗憾的是我们对数据的处理只是暂时的,一刷新什么都没有了,究其原因是因为我们不能
对我们的操作的数据进行永久性的存储,那么这时候我们就想有没有永久存储数据的技术呢?
1.1.1 什么是数据库
数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。
数据库软件
其实数据库就是由一堆文件组成的
1.1.2 什么是数据库管理系统
数据库管理系统(DataBase Management System,DBMS):
指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。
用户通过数据库管理系统访问数据库中表内的数据。
一大坨数据(文件) --> 数据库管理系统(系统) MYSQL --> 操作数据库管理系统的人(管理员) DBA 自己 (分钟算工资) 6W/月
最终 : 永久的保存数据
管理数据库操作系统的程序员叫做数据库管理员 英文简称 DBA(database administrator),以后看见这样的人一定要多跟他玩耍,这都是一个企业里大佬级人物
1.1.3 数据库与数据库管理系统的关系
如果你想往数据库里存储一条数据
- 安装一个数据库软件 mysql 5.5
- 创建一个数据库 MYSQL
- 统一大数据库 MYSQL 大数据库下创建自己的小数据库 来存储我们自己的数据
学生信息管理系统 student_db
考试信息管理系统 exam_db
天气信息管理系统 weather_db
交通信息管理系统 jiaotong_db
最起码 需要管理孙建国 和 赵文明的数据 person_db - 有了自己的小数据库之后 我们还需要按类型存储数据 按类型 --> 数据库创建数据库表的过程
- 真正存储数据
1.2 数据库表
java是以类来进行数据的封装,数据库中以表为组织单位存储数据。
表类似我们的Java类,表里面有字段就相当于是类中的属性。
举个例子 :
我们操作过的人员信息对应的类叫人员类
person
属性如下
id 数字 编号
name 字符串 名字
…
数据库中也有类似的结构,叫做表
类名 person --> 数据库 perosn 表
属性 --> 字段
id Integer --> id number
name String --> name varchar
总结,就会发现以下对应关系。
类----------表
类中属性----------表中字段
对象----------记录
1.3 表数据
根据表字段所规定的数据类型,我们可以向其中填入一条条的数据,而表中的每条数据类似类的实例对象。表中的一行一行的信息我们称之为记录。
表记录与java类对象的对应关系
1.4 常见数据库
常见的数据库管理系统
MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。
Oracle :收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
DB2 :IBM公司的数据库产品,收费的。常应用在银行系统中.
SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。
SyBase :已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。
SQLite : 嵌入式的小型数据库,应用在手机端。
常用数据库:MYSQL,Oracle(DBA人证 OCA COP OCM).
这里使用MySQL数据库。MySQL中可以有多个数据库,数据库是真正存储数据的地方。
2.MySql数据库
2.1 MySql安装
百度
安装后,MySQL会以windows服务的方式为我们提供数据存储功能。开启和关闭服务的操作:右键点击我的电脑→管理→服务→可以找到MySQL服务开启或停止。
2.2 登录MySQL数据库
MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录。
格式1:cmd>mysql –u用户名 –p
代码
mysql -uroot –p
接下来输入密码即可登录
登录成功效果
格式2:cmd>mysql -hip地址 --user=用户名 --password=密码
例如:mysql -h127.0.0.1 --user=root --password=root
代码:
mysql -h127.0.0.1 --user=root --password=root
Java --> java语言
网页 --> HTML语言
数据库 --> SQL语言
3.SQL语句
3.1 SQL概述
3.1.1 SQL语句介绍
数据库是不认识JAVA语言的,但是我们同样要与数据库交互,这时需要使用到数据库认识的语言SQL语句,它是数据库的代码。
SQL语言 是有规范的 是我们操作数据库的特定语言 和 java一样
java语言 是用来编写应用程序(网站类应用程序)
SQL 专门操作数据库的结构化查询语言(Structured Query Language)简称SQL,
是关系型数据库管理系统都需要遵循的规范。不同的数据库生产厂商都支持SQL语句,但都有特有内容。
SQL 语言 标准 所有数据库都会遵循的标准 各种不同的数据库都会在标准之上建立一些自己的规范
SQL 方言
MYSQL limit 分页 Oracle rownum 分页
结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ “S-Q-L”),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
1986年10月,美国国家标准协会对SQL进行规范后,以此作为关系式数据库管理系统的标准语言(ANSI X3. 135-1986),1987年得到国际标准组织的支持下成为国际标准。不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。
3.1.2 SQL语句分类
3.1.2.1 数据存储的结构进行定义 DDL
- 数据定义语言: 主要对数据存储的结构进行定义 存储一个数据 --> 表 --> 数据库 创建 销毁 修改 DDL
简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等 DDL 数据定义语言 主要定义结构的
(创建(create)一个结构,修改(alter)一个结构,删除(drop 摧毁)一个结构)
教室 DDL构建或者修改或者删除这个教室(结构)
表 结构 DDL create table alter table drop table
3.1.2.2 对数据本身的操作 DML
- 数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。
关键字:insert,delete,update等
对内容上进行操作(数据) 数据操作语言 DML 你对一条数据的操作 添加(INSERT) 修改(UPDATE) 删除(DELETE)
3.1.2.3 对数据本身的查询 DQL
- 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。关键字:select,from,where等 查询(SELECT)
mysql select
hbase/hive select
3.1.2.4 数据控制 DCL
数据控制语言:简称DCL(Data Control Language),用来定义数据库的访问权限和安全级别,及创建用户。
设置权限 如: DBA–>Java/BD 开发 Java运维 Java测试 老板
权限操作(DBA)
root用户 mysql中最高级的数据库管理员账户
3.1.2.5 事务控制语言 TCL
不常用
3.1.3 SQL通用语法
- SQL语句可以单行或多行书写,以分号结尾
- 可使用空格和缩进来增强语句的可读性
- MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
例如:SELECT * FROM user。 - 同样可以使用/**/的方式完成注释,也可以用 – 的形式完成注释
– 注释
3.1.4 MySql的数据类型
2种 数值 和 非数值
4种 基本数据类型
MySQL中的我们常使用的数据类型如下:
char 字符类型 固定长度 char(10) 一
varchar 可变长度的字符串 varchar(10) 一
date 日期
datetime 日期 时间
详细的数据类型如下
操作数据库的 --> SQL --> 分 3 类
- DDL 数据定义语言 定义数据存储结果 表 数据库 create alter drop show
- DML 数据操作语言 对数据进行 添加(insert) 修改(update) 删除(delete)
- DQL 重要 数据查询语句 select
最终目的 存储数据 并 操作数据
数据存储在哪里? --> 表 --> 数据库
3.2 DDL之数据库操作:database
3.2.1 创建数据库
格式:
* create database 数据库名;
* create database 数据库名 character set 字符集;
例如:
#创建数据库 数据库中数据的编码采用的是安装数据库时指定的默认编码 utf8
create database webdb_1;
#创建数据库 并指定数据库中数据的编码
create database webdb_2 character set utf8;
效果 :
3.2.2 查看数据库
3.2.2.1 查看数据库MySQL服务器中的所有的数据库:
show databases;
效果:
3.2.2.2 查看某个数据库的定义的信息:
show create database 数据库名;
例如:
show create database webdb_1;
3.2.3 删除数据库
drop database 数据库名称;
例如:
drop database webdb_2;
3.2.4 使用数据库
3.2.4.1 查看正在使用的数据库:
select database();
此处因为我们没有使用数据库,所以显示当前使用的数据库为 NULL
其他的数据库操作命令
3.2.4.2 使用某个数据库:
use 数据库名;
例如:
use webdb_1;
3.3 DDL之表操作:table
3.3.1创建表
格式:
create table 表名(
字段名 类型(长度) [约束],
字段名 类型(长度) [约束],
...
);
类型:
varchar(n) 字符串
int 整形
double 浮点
date 时间
timestamp 时间戳
约束:
primary key 主键,被主键修饰字段中的数据,不能重复、不能为null。
举例 : 比如对京东商城进行数据库表分析
从上图我们可以知道京东的商品是先分成大类,然后大类中再分成小类小类中再保存具体商品
那么接下来我们也按照这种思路来进行表的学习
例如:
创建一张商品类别表
此处需要注意的是表都是在不同的数据库中,所以需要先指定要使用的数据库
use webdb_1;
指定完数据库就可以创建自己的表了
代码:
CREATE TABLE category (cid VARCHAR(32) PRIMARY KEY,cname VARCHAR(50));
效果
3.3.2 查看表
3.3.2.1 查看数据库中的所有表:
格式:
show tables;
3.3.2.2 查看表结构:
格式:desc 表名;
desc category;
3.3.3 删除表
格式:drop table 表名;
drop table category;
3.3.4 修改表结构格式:
1) alter table 表名 add 列名 类型(长度) [约束];
作用:修改表添加列.
例如:
为商品类别表添加一个新的字段为 分类描述 varchar(20)
alter table category add `desc` varchar(20);
注意 : desc 是SQL关键字,所以你要想用这个关键字作为列名必须转移,也就是在列名上加 `` 进行转移,注意这不是单引号 而是 ` 请详见下图
机械键盘这个键的位置可能有所不同,大家要细心查找
2) alter table 表名 modify 列名 类型(长度) 约束;
作用:修改表修改列的类型长度及约束.
例如:
为商品类别表的描述字段进行修改,类型varchar(50) 添加约束 not null(该字段的值不能为null)
alter table category modify `desc` varchar(50) not null;
3) alter table 表名 change 旧列名 新列名 类型(长度) 约束;
作用:修改表修改列名.
例如:
为商品类别表的分类名称字段进行更换 更换为 cdesc varchar(30)
ALTER TABLE category CHANGE `desc` `cdesc` VARCHAR(30);
4) alter table 表名 drop 列名;
作用:修改表删除列.
例如:
删除商品分类表中cdesc这列
alter table category drop cdesc;
5) rename table 表名 to 新表名;
作用:修改表名
例如:
为分类表category 改名成 producttype
rename table category to producttype;
问题 : 这么操作实在是适应不了,mysql有没有什么好操作一点的客户端呢?
答案 : 有的
请参考5.
3.4 DML数据操作语言
3.4.1插入表记录:insert
语法:
– 向表中插入某些字段
insert into 表 (字段1,字段2,字段3…) values (值1,值2,值3…);
–向表中插入所有字段,字段的顺序为创建表时的顺序
insert into 表 values (值1,值2,值3…);
注意:
值与字段必须对应,个数相同,类型相同
值的数据大小必须在字段的长度范围内
除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
如果要插入空值,可以不写字段,或者插入 null。
首先我们先把表名改回来,代码
修改商品分类表的表名
RENAME table producttype to category;
然后添加数据,代码:
-- 添加数据
-- 最标准写法(列与值是一一对应的)
INSERT INTO category (cid,cname) VALUES (1,'家用电器');
-- 简易写法(值得顺序必须和列循序一致)
INSERT INTO category values (2,'手机/运营商/数码');
-- 便捷写法(一次性插入多条语句可以共享前置语法)
INSERT INTO category values (3,'电脑/办公'),(4,'家居/家具/家装/厨具'),(5,'男装/女装/童装/内衣');
3.4.2 更新表记录:update
用来修改指定条件的数据,将满足条件的记录指定列修改为指定值
语法:
–更新所有记录的指定字段
update 表名 set 字段名=值,字段名=值,…;
–更新符合条件记录的指定字段
update 表名 set 字段名=值,字段名=值,… where 条件;
注意:
列名的类型与修改的值要一致.
修改值得时候不能超过最大长度.
除了数值类型外,其它的字段类型的值必须使用引号引起
代码 :
-- 将家用电器更新为 美妆/个护清洁/宠物
update category set cname = '美妆/个护清洁/宠物' where cname = '家用电器';
-- 将ID为5的数据更新为 男鞋/运动/户外
update category set cname = '男鞋/运动/户外' where cid = 5;
注意 :
更新的时候一定要按照某种条件再更新,一定要注意,因为更新全表数据这种需求根本就没有,如果是因为你忘记写条件而导致的全表数据更新那么更新坏的数据你是需要按条赔钱的!
3.4.3 删除记录:delete
删除有两种情况
1) 如果删除表中的部分数据
语法:
delete from 表名 where 条件;
2) 如果删除表中所有数据
语法:
delete from 表名;
或者
truncate table 表名;
此处有一道面试题:
传说中的面试题 : 假设表里有一亿条记录,当删除表中所有数据的时候,你会使用以下哪种方案,并说明原因
A. DELETE FROM 表
B. TRUNCATE TABLE 表;
答案 : B
解释 : 当删除表中所有数据的时候
delete from 表 数据DML语句 数据操纵语言 是从表中把数据一条一条的删除,所以这样删除大表数据的时候一条一条删会很慢
truncate table 数据DDL语句 数据定义语言 它不管表中有多少记录,它会先摧毁这个表结构,然后重建表结构,所以这样在删除大表数据的时候就会很快;
但是需要注意个问题,如果你要是误操作的话 delete from 是有可能恢复的 但是 truncate table是恢复不了的
代码 :
-- 删除ID为1的数据
delete from category where cid = 1;
-- 删除商品类别表的所有数据
delete from category;
-- 摧毁商品类别表的表结构然后重新创建 截断
truncate table category;
4.SQL 约束
4.1主键约束
PRIMARY KEY 约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。
主键的意义与作用
主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。
一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。
作用:
1)保证实体的完整性;
2)加快数据库的操作速度
3) 在表中添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
4) DBMS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
4.1.1 添加主键约束
创建表时,在字段描述处,声明指定字段为主键:
create table persons(
pid int PRIMARY key,
pname varchar(30),
sex VARCHAR(1),
age int,
pfrom varchar(50)
)
4.2 自动增长列
我们通常希望在每次插入新记录时,数据库自动生成字段的值。
我们可以在表中使用 auto_increment(自动增长列)关键字,自动增长列类型必须是整形,自动增长列必须为键(一般是主键)。
下列 SQL 语句把 “persons” 表中的 “pid” 列定义为 auto_increment 主键
create table persons(
pid int PRIMARY key AUTO_INCREMENT,
pname varchar(30),
sex VARCHAR(1),
age int,
pfrom varchar(50)
)
扩展:默认AUTO_INCREMENT 的开始值是 1,如果希望修改起始值,请使用下列 SQL 语法:
ALTER TABLE `person`
MODIFY COLUMN `pid` int(8) NOT NULL AUTO_INCREMENT FIRST ;
4.3 非空约束
NOT NULL 约束强制列不接受 NULL 值。
NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。
下面的 SQL 语句强制所有列不接受 NULL 值:
create table persons(
pid int not null PRIMARY key AUTO_INCREMENT,
pname varchar(30) not null,
sex VARCHAR(1) not null,
age int not null,
pfrom varchar(50) not null
)
4.4 设置默认值
语法: default 值
如果在插入数据时,给设置默认值的字段设置值,插入该值,如果没有设置值,按照默认值插入数据
create table category(
cid int primary key auto_increment,
cname varchar(20) not null ,
price double default 3000
);
select * from category;
insert into category(cid,cname,price) values(null,'手机',1000);
insert into category (cname) values('电脑');
5.Navicat
5.1 安装mysql的第三方客户端Navicat:
百度
5.1.1 选择utf8_general_ci不区分大小写
5.1.2 bin只能查一个
5.2 Navicat下的DDL演示
创建数据库
-- 创建数据库
create DATABASE db2;
-- ddl之表的操作
java,类--》属性--》属性值
mysql使用表存储数据
定义表结构,存储哪些数据,与java的类功能类似
就是定义表中有哪些字段,并指定字段的类型
表 -- 类
字段 -- 属性
记录 -- 对象
字段:列名
记录:一行数据
创建表的语法结构:
create table 表名(
字段 类型 约束,
字段 类型 约束,
……
);
primary key:主键,用于区分表中每一条记录,不重复,不能为null
-- 创建商品类别表,cid,cname
create table category(
cid int primary key,
cname varchar(20)
);
-- 查看当前数据库中的表
show tables;
select * from category;
-- 查看表结构
desc category;
-- 删除表
drop table category;
-- 修改表结构
-- 新增字段:alter table 表名 add 列名 类型(长度) [约束];
-- 案例:新增商品描述的字段,desc 20个长度的字符串
-- 如果字段是mysql关键字,使用"`"引用起来
alter table category add `desc` varchar(20);
-- 修改字段类型:alter table 表名 modify 列名 类型(长度) 约束;
-- 案例:将desc字段的长度修改为50
alter table category modify `desc` varchar(50);
-- 修改字段名称 alter table 表名 change 旧列名 新列名 类型(长度) 约束;
-- 案例:将desc修改为cdesc
alter table category change `desc` cdesc varchar(50);
-- 删除字段: alter table 表名 drop 列名;
-- 案例:删除cdesc字段
alter table category drop cdesc;
-- 修改表名:rename table 表名 to 新表名;
-- 案例:将category表改成productCategory
rename table category to productcategory;
show tables;
rename table productcategory to category;
dml数据操作语言
-- dml,数据操作语言
-- INSERT:向表中插入数据
-- 语法结构: 字段与值的类型相匹配
-- 向表中插入某些字段
insert into 表 (字段1,字段2,字段3..) values (值1,值2,值3..);
-- 向表中插入所有字段,字段的顺序为创建表时的顺序
insert into 表 values (值1,值2,值3..);
-- 给表中所有的字段设置值,要求:值的顺序与字段的顺序一致
-- 除了数值类型,其他类型使用单引号引用,比如:字符串,日期
-- 如果插入空值,可以不写字段,或插入null
select * from category;
insert into category (cid,cname) values(1,'手机');
insert into category(cname,cid) values('电脑',2);
insert into category values(3,'女装');
-- 通过一条语句插入多条记录
insert into category values(4,'男装'),(5,'美妆'),(6,'美食');
-- cname设置为null
insert into category (cid) values(7);
insert into category values(8,null);
-- update:修改表中的记录
语法结构:
-- 更新所有记录的指定字段
update 表名 set 字段名=值,字段名=值,...;
-- 更新符合条件记录的指定字段
update 表名 set 字段名=值,字段名=值,... where 条件;
select * from category;
-- 修改cid为8的记录,将类别名称修改为干果
update category set cname = '干果' where cid=8;
-- 将类别名称修改为 笔记本
update category set cname='笔记本',price=1000;
alter table category add price double;
-- 将价格增加100块
update category set price=price+100 where cid=1
delete:删除表中数据
-- 语法
-- delete from 表名 where 条件
select * from category;
-- 删除cid为5的记录
delete from category where cid=5;
-- 删除表中所有的记录
delete from category;
如果要删除表中所有的记录,可以使用
区别:
-- delete:逐条删除,执行速度慢,删除的数据可以被还原
-- truncate:将表删除,再重新创建表,执行速度快,删除的数据不能被还原
delete from 表名
或者
truncate table 表名;
truncate table category;
sql约束
-- sql约束
-- 在创建表时,给字段添加约束,再给表中字段插入数据时应该满足约束
1、primary key:主键约束
-- 主键值不能重复,不能为null
-- 每个表都需要指定主键,主键可以是一个字段 或 多个字段
-- 使用主键区分表中的每一条记录
2、自动增长列,一般给主键设置为自动增长,主键的值由数据库来维护
-- auto_increment
-- 自动增长的值默认从1开始
drop table category;
create table category(
cid int primary key auto_increment,
cname varchar(20)
);
select * from category;
insert into category(cname) values('手机');
insert into category values(null,'电脑');
insert into category values(null,'女装');
insert into category values(null,'男装');
delete from category where cid=3;
insert into category values(null,'电脑');
delete from category where cid=5;
insert into category values(null,'电脑');
-- 设置自动增长的起始值
-- 语法
ALTER TABLE 表名 AUTO_INCREMENT=100
alter table category auto_increment =100;
3、非空约束,not NULL
-- 如果将字段设置为not null,在插入数据时,比如指定值
drop table category;
create table category(
cid int primary key auto_increment,
cname varchar(20) not null,
price double
);
select * from category;
insert into category(cname,price) values('手机',4000);
insert into category(cname) values('电脑');
insert into category(price) values(1000);
4、设置默认值
-- 语法: default 值
-- 如果在插入数据时,给设置默认值的字段设置值,插入该值,如果没有设置值,按照默认值插入数据
drop table category;
create table category(
cid int primary key auto_increment,
cname varchar(20) not null ,
price double default 3000
);
select * from category;
insert into category(cid,cname,price) values(null,'手机',1000);
insert into category (cname) values('电脑');