<pre>
day04
昨天内容回顾
(1)js创建函数的两种方式
(2)js函数的重载
(3)js的全局函数(会用)
(4)html绑定事件三种方式
(5)js里面的常用的事件(会用)
**重点 onsubmit
(6)dom是什么
(7)dom解析标记型文档的过程(**)
(8)dom里面的对象document、element、属性、文本、node
(9)DTHML 是很多技术的简称
(10)document对象四个方法
(11)innerHTML属性 做两件事情
(12)表单的提交方式
(13)表单的验证
*按钮是submit,使用onsubmit事件
*button按钮验证
(14)json数据(*********)
*json格式
*js解析json数据
思维导图
1、数据库介绍
*什么是数据库:是一个文件系统,使用标准sql对数据库进行操作
*常见的数据库:
**oracle:是oracle公司的产品,是收费的软件
**DB2: 是ibm公司的产品,收费的软件
**SQLServer:是微软产品,是中型的数据库
**mysql:被oracle公司收购,在mysql6.0版本开始收费了。
**sysbase:保留一个软件,建模的软件。
**SQLite:小型的嵌入式的数据库,一般用在客户端开发中,比如安卓
*共同的名字:关系数据库
**存储的是:实体之间的关系
**比如购物网站:用户、订单、商品
*画图说明实体之间的关系(ER图)
2、mysql数据库的存储的结构
*数据库
*数据库表
*表中的记录
*在数据库服务器上可以还有多个数据库,在数据库里面有多个数据库表,
在每个数据库表里面有多条记录
*学习是 对数据库、数据库表、表中的记录进行crud的操作
3、mysql数据库安装和卸载
*建议安装mysql5.x版本
*在day04的资料里面提供mysql的安装文档
*mysql的卸载:
**首先找到mysql的安装路径,找到一个配置文件 my.ini
找到两个路径
datadir="C:/ProgramData/MySQL/MySQLServer 5.5/Data/"
basedir="C:/ProgramFiles (x86)/MySQL/MySQL Server 5.5/"
**其次,打开电脑的控制面板,找到卸载程序,进行卸载
**第三,删除上面两个路径的所有文件
**第四,打开注册表
regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services
搜索mysql,找到一律删除!
**第五,需要重启电脑
*如果想要操作mysql数据库,首先需要连接数据库
**首先打开cmd窗口
**使用命令连接mysql数据库
***mysql -u root -p 回车(注意不要加分号,会出错) ,会提示输入密码,密码
正确之后就可以连接数据库
4、sql介绍
(1) 标准sql:使用标准sql的语句,不仅可以在mysql数据库里面使用,也可以在oracle、db2里面都可以使用
(2)StructuredQuery Language, 结构化查询语言
*非过程性语言:不需要依赖于任何的条件,就可以直接运行
**比如在java里面
if(i> 3) {
system........
}
(3)sql的分四类
* DDL (数据定义语言)
** 使用的语句 create语句
* DML (数据操纵语言)
** 使用的语句 insert update delete
* DCL (数据控制语言)
** 使用的语句 grant....
* DQL (数据查询语言)
** 使用的语句只有一个 select
(4)sql注释
/**/
5、数据库操作
(1)创建和查看
*创建数据库 create database 数据库的名称;
==create database mydb1;
*查询数据库 show databases;
(2)删除和切换
*删除数据库 drop database 数据库的名称;
*切换数据库(如果创建表,这个表肯定要在一个数据库里面,所以切换到数据库)
**use 要切换的数据库的名称;
动作 database 数据库名;
6、数据库表的操作
(1)创建数据库表
**语句: create table 表名称 (
字段1名称 字段类型[约束],
字段2名称 字段类型[约束]
)
**在mydb2数据库里面创建一个表 user
***首先切换到mydb2数据库 use mydb2
***create table user (
id int,
username varchar(40),
sal int
);
(2)mysql的数据类型
* 字符串型
VARCHAR、CHAR
**name varchar(20)/char(30)
**字符串类型指定长度
**varchar和char区别:
***char长度是固定的,varchar的长度是可变的
比如 name varchar(20)/char(20)
****如果类型char(20),现在name的值aa,存储方式 aa加很多的空格
****如果类型varchar(20),现在name的值aa,存储方式 aa后面没有空格
* 大数据类型
BLOB、TEXT
**一般用于存储文件,在实际开发不会把文件直接存到数据库,一般是将文件的
路径存入到数据库中,否则文件如果过大势必造成数据库运行效率降低。
* 数值型
**不需要指定长度,默认的长度
TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
对应java里面: byte short int long float double
**id int
* 逻辑性
BIT对应java里面的boolan
* 日期型
DATE:用于表示日期
TIME:用于表示时间
DATETIME:用于表示日期和时间
TIMESTAMP:用于表示日期和时间(日期和时间不需要手动添加,系统可以自动添加当前的时间)
(3)查看表结构 desc 表名称;
+----------+-------------+------+-----+---------+-------+
|Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
|id | int(11) | YES | | NULL | |
|username | varchar(40) | YES | | NULL | |
|sal | int(11) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
(4)mysql的约束,写在数据类型的后面。
*在mysql里面有三个约束
第一:非空约束 not null
usernamevarchar(40) not null,
第二:唯一性约束unique
第三:主键约束primary key(表示数据不能为空,不能重复)
usernamevarchar(40) primary key,
*自动增长:auto_increment
*创建带约束的表
createtable person (
idint primary key,
namevarchar(40) not null,
salint
)
+-------+-------------+------+-----+---------+-------+
|Field | Type | Null | Key |Default | Extra |
+-------+-------------+------+-----+---------+-------+
|id | int(11) | NO | PRI | NULL | |
|name | varchar(40) | NO | | NULL | |
|sal | int(11) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
(5)查询数据库里面的表show tables;
(6)删除数据库表 drop table 表名称;
7、表中的记录的操作
(1)向表中添加记录
*使用语句 : insert into 表名称 values(值1,值2);
**使用insert语句插入数据时候注意的地方:
***如果数据的类型是int类型直接写值
***如果数据类型是varchar类型和日期类型,需要使用单引号把值括起来
*向person表里面插入一条数据
**insert into person values(100,‘zhangsan‘,2000);
*自动增长和timestamp类型操作
**创建一个表 user
createtable user (
idint primary key auto_increment,
username varchar(40) not null,
times timestamp
)
insertinto user values(null,‘lisi‘,null);
insertinto user values(null,‘zhaoliu‘,null);
(2)修改表中的记录
*使用语句:update 表名称 set 字段名称1=值1,字段名称2=值2 where 条件
*修改user表里面id值=1,username修改为wangwu
**update user set username=‘wangwu‘ where id=1
*修改person表里面id=100,name修改为lucy,sal修改为555
**update person set name=‘lucy‘,sal=555 where id=100
insertinto person values(101,‘东方不败‘,444);
insertinto person values(102,‘岳不群‘,666);
insertinto person values(103,‘林平之‘,777);
*练习
将所有员工薪水修改为5000元。
=update person set sal=5000;
将姓名为’林平之’的员工薪水修改为3000元。
=update person set sal=3000 where name=‘林平之‘;
将lucy的薪水在原有基础上增加1000元。
=update person set sal=sal+1000 where name=‘lucy‘;
(3)删除表中的记录
*使用语句:delete from 表名称 where .....
*练习
删除表中名称为’lucy’的记录
=delete from person where name=‘lucy‘;
删除表中所有记录
=delete from person;
(4)查询表中的记录(今天最重要的内容)
*使用语句:select 字段名称/*(所有字段) from 要查询的表名称 where.....
##select中的字段,可以不是表中切切实实有的字段,可以是任意表达##
*创建一个表stu
createtable stu (
idint primary key,
sname varchar(40),
math int,
chinese int,
english int
)
insertinto stu values(1,‘紫衫龙王‘,80,100,120);
insertinto stu values(2,‘金毛狮王‘,100,20,10);
insertinto stu values(3,‘白眉鹰王‘,60,50,80);
insertinto stu values(4,‘青翼蝠王‘,40,80,30);
insertinto stu values(5,‘金大牙‘,60,30,80);
*练习
查询表中所有学生的信息。
=select * from stu;
查询表中所有学生的姓名和对应的英语成绩。
=select sname,english from stu;
*查询的别名 使用 as 起的名字
=select sname as s,english as e from stu;
*查询里面的关键字 distinct,去除表中重复的记录
=select distinct * from p1;
**创建一个没有约束表
createtable p1 (
idint,
namevarchar(40)
)
(5)根据条件进行查询
*查询id值是1的记录
=select * from stu where id=1;
*在进行条件查询的时候有关键字
**and:并且
***查询学生英语成绩是10,并且数学成绩是100信息
=select * from stu where english=10 and math=100;
**or: 或者
**in:数据所在的范围(指的是枚举,不是连续的)
***查询数学成绩是80,100学生的信息
**like:进行模糊查询的操作
**%表示匹配任意字符,_表示匹配一个字符。
***查询表中名称里面包含“金”的数据
=select * from stu where sname like ‘%金%‘;
**not :类似java里面 if(!flag){}
**显示当前的数据库: select database();
只有在use 数据库名,即选择了数据库后,这个语句才会显示当前数据库。
=================================================================================
(1)数据库的介绍
(2)sql分四类
(3)创建数据库
(4)查看数据库
(5)切换数据库
(6)删除数据库
(7)创建数据库表
(8)mysql的数据类型
*varchar和char
*timestamp:自动生成当前时间
(9)创建带约束的表
*有三个约束 非空、唯一、主键
(10)删除数据库表
(11)查看数据库里面的表
(12)插入记录 insertinto 表名 values();
*如果类型int,直接写值
*如果是字符串和日期,使用单引号包起来
(13)更新记录 update 表名 set 字段=值 where....
(14)删除记录 deletefrom 表名 where...
(15)查询表中的记录(***)
*select 字段名称/* from 表名 where....
*and
*in
*or
*like
*not
8、使用cmd向表中添加记录
*如果有中文报错
**解决方法:
**首先找到mysql安装路径,在路径下面找到一个配置文件 my.ini
(因为要对这个文件进行修改,建议先备份这个文件)
**打开这个文件,不要使用记事本打开
**找到default-character-set值修改为gbk
9、表记录的排序
*使用语句 order by 要排序字段 asc/desc,要写在select语句的最后
**默认是升序排序
=select * from stu order by id asc;
=select * from stu order by id desc;
10、mysql聚集函数
(1)count():统计表中有多少条记录
=select count(*) from 表名;
*练习
统计一个班级共有多少学生?
=select count(*) from stu;
统计数学成绩大于60的学生有多少个?
=select count(*) from stu where math>60;
(2)sum(): 数据进行相加的操作
*练习
统计一个班级数学总成绩?
=select sum(math) from stu;
统计一个班级语文、英语、数学各科的总成绩
=select sum(chinese),sum(englist),sum(math) from stu;
统计一个班级语文成绩平均分
=select sum(chinese)/count(*) from stu;
(3)max(): 得到最大值
*练习
计算班级中数学的最高分
=select max(math) from stu;
(4)min(): 得到最小值
*练习
计算班级中英语的最低分
=select min(english) from stu;
(5)avg(): 计算平均数
*统计一个班级语文成绩平均分
=select avg(chinese) from stu;
11、分组的操作
*语句:group by 要分组的字段
*create table orders(
id int,
product varchar(20),
price float
);
insertinto orders values(1,‘电视‘,900);
insertinto orders values(2,‘洗衣机‘,100);
insertinto orders values(3,‘手电‘,90);
insertinto orders values(4,‘桔子‘,9);
insertinto orders values(5,‘手电‘,90);
insertinto orders values(6,‘洗衣机‘,100);
练习:显示每一类商品的总价
=select product,sum(price) from orders group by product;
练习:查询购买了几类商品,并且每类总价大于100的商品
=select product,sum(price) from orders group by product having sum(price)>100;
**聚集函数不能写在where里面(应该是分组不能写在where里边?)
**使用到一个语句 having :在分组的基础之上再进行条件筛选
12、select语句的书写规范
select...from ... where.... group by ...having....order by...
13、mysql的可视化工具的使用
可视化工具在网上有很多,下面以SQLyog ULtimate - MySQL GUI V8.2为例。
(1)登录服务器:
(2)执行查询命令
执行当选中查询命令:Execute current query,工具栏上的第3个按钮。
执行所有的查询命令:Execute all queries,工具栏上的第4个按钮。
14、mysql的limit关键字
*可以实现分页的效果
* limit关键字不是标准sql里面的关键字,只能在mysql里面使用
**oracle里面实现分页 rownum
**sqlserver里面实现分页 top
*查询表中的前几条记录
**查询stu表里面前三条记录
=select * from stu limit 0,3;
*查询表中第几条到第几条记录
**查询stu表里面的第三条到第四条记录
=select * from stu limit 2,2;
**在limit后面传递两个参数:
***第一个参数表示从第几条开始(开始位置是0)
***第二个参数表示从第一个参数的记录开始向后取几条记录
15、重置mysql的root密码
*知道密码,修改密码(试了一下,没有成功???)
=/*切换数据库*/
usemysql
/*修改root用户的密码*/
updateuser set password=password(‘123456‘) where user=‘root‘;
*忘记密码,重置密码
**第一步,关闭mysql的服务
**第二步,打开cmd窗口,在窗口里面输入一个命令 mysqld --skip-grant-tables(不能加分号)
**第三步,再打开一个cmd窗口,直接输入命令 mysql -u root 不需要输入密码,直接连接
**第四步,重复
/*切换数据库*/
usemysql
/*修改root用户的密码*/
updateuser set password=password(‘123456‘) where user=‘root‘;
**第五步,关闭两个cmd窗口,打开任务管理器,找到进程mysqld.exe,把这个进程结束
**第六步,启动mysql服务
16、多表的操作
*表与表之间关系
**有三种关系
第一种:一对多的关系
***在一个公司里面,一个部门有很多的员工,一个员工只能属于一个部门
第二种:多对多的关系
***学校选课;一个学生可以选择多门课,一门课可以被多个学生选择
第三种:一对一的关系
***在中国,一个男人只能有一个妻子,一个女人只能有一个丈夫
***一个公司有一个注册地址,一个注册地址有一个公司
17、一对多的建表原则(*)
*创建员工表,部门表
*画图分析建表原则
*首先确定表的关系:谁是一,谁是多
*其次,在多的那一边创建一个字段,指向一的那一边的主键(id)
18、多对多的建表原则(*)
*创建课程表,学生表
*画图分析多对多的建表原则
*创建第三张表,创建两个字段,这两个字段分别指向两个表的主键(id)
使用第三张表存储这两个的表的关系
19、一对一的建表原则(了解)
*创建公司表 ,地址表
*画图分析一对一的建表原则
*一般情况下,把数据直接放到一个表里面
20、使用一对多的作为例子
*创建员工表,部门表
createtable dept (
didint,
dnamevarchar(40)
)
createtable emp (
eidint,
enamevarchar(40),
didint
)
*多表之间的查询
多表查询符合就近原则,哪个表离select近,哪个表的信息就优先显示,即显示在左边。
**内连接查询(两个表关联的数据) inner join 连接的表名称 on 两个表连接的条件
***查询员工表和部门表里面关联的数据
=select * from emp inner join dept on emp.did=dept.did;
***还有一种方式也可以实现和内连接相同的效果(都使用这种方式)
=select * from emp,dept where emp.did=dept.did;
**外连接查询(通过在一和多表中设置没有关系的记录)
***左外连接 left outer join 连接表名称 on 连接的条件
=select * from dept left outer join emp on dept.did=emp.did;
***左边表里面的所有数据都显示出来,右边表只是显示关联的数据
***右外连接 right outer join 连接表名称 on 连接的条件
=SELECT * FROM dept right OUTER JOIN emp ON dept.did=emp.did
***右边表里面的所有数据都显示出来,左边表只是显示关联的数据
通过下面这个实例来理解左外连接和右外连接的区别:
部门表(一):
员工表(多):
部门表和员工表各有一个记录没有互相关联,如部门表中第4条记录“天安门”在员工
表中就找不到对应的关联记录。
员工表中第5条记录did值设置为null,没有与部门表产生关联。
》》左外连接查询结果如下:
左边的表就是dept表的数据全部显示,右边的表emp只显示了关联数据。
》》右外连接查询结果如下:
左边的表就是dept表的只显示关联数据,右边的表emp显示了所有的数据。
===========================================================================================
(1)数据库的介绍
(2)sql分四类
(3)创建数据库
(4)查看数据库
(5)切换数据库
(6)删除数据库
(7)创建数据库表
(8)mysql的数据类型
*varchar和char
*timestamp:自动生成当前时间
(9)创建带约束的表
*有三个约束 非空、唯一、主键
(10)删除数据库表
(11)查看数据库里面的表
(12)插入记录 insertinto 表名 values();
*如果类型int,直接写值
*如果是字符串和日期,使用单引号包起来
(13)更新记录 update 表名 set 字段1=值,字段2=值 where....
(14)删除记录 deletefrom 表名 where...
(15)查询表中的记录(***)
*select 字段名称/* from 表名 where....
* and
*in
*or
*like ‘%a%‘
*not
**select结构
select .. from... where....group by having ...orderby...
(16)表记录的排序
*order by 字段 asc/desc
(17)聚集函数
*count sum max min avg
(18)分组操作 groupby 根据哪个字段进行分组
*在分组里面进行条件的筛选,使用 having
(19)mysql的limit关键字
*这个关键字不是标准sql,只能在mysql里面使用
**limit 2,2
***第一个参数表示从第三条记录
***第二个参数从第三条记录向后取两条记录
(20)多表之间的关系
(21)一对多的建表原则
(22)多对多的建表原则
(23)内连接:两个表的关联的数据(交集)
**可以使用另外一种方式实现相同的结果
***select * from a,b wher a.id=b.id;
(24)外连接:左外连接和右外连接
=============================================================
完成任务:(使用cmd操作)
1、把除了查询的sql语句至少写一遍
2、把查询的sql语句至少写两遍
</pre>