JavaScript的使用方式
方式1:js的内部方式
<script>
书写js语句
</script>
方式2:js的外部方式 实际开发中(前端开发人员开发使用的!)
需要在js文件夹中单独创建一个后缀为.js的文件
书写js代码,在当前html页面中将js文件导入即可!
例如:<script src="js/01.js"></script>
javascript中的变量以及数据类型
定义变量的注意事项:
1)在js中定义变量,使用var来定义,var可以省略不写(刚开始,建议写上)
2)javascript是弱类型语言,它的语法结构不严谨! 可以重复定义变量的,后面的变量的值将前面的变量值覆盖掉
3)查看js的变量的数据类型,使用一个函数 typeof(变量名)
4)var可以任意数据类型!
js的基本数据类型
1)无论是整数还是小数,都是number类型, ---- js引擎会自动提升为 Number 对象类型
2) 无论是字符串还是字符,都是string类型----js引擎会自动提升为 String 对象类型
3)boolean类型----js引擎会自动提升为 Boolean 对象类型
4)object类型(创建一个对象 )---- js引擎会自动提升为Object对象类型
在Js中,Object对象代表所有js对象的模板!
for-in语句的格式
for(var 变量名 in 数组或者对象名称){
使用变量名;
}
Js中的函数定义以及调用
定义函数的 格式1
function 函数名称(参数名称1,参数名称2....){
函数的里面业务逻辑
直接在这输出document.write("xxx") ;
}
格式1调用:(单独调用)
函数名称(实际参数列表) ;
格式2:(推荐)
function 函数名称(参数名称1,参数名称2....) 函数的里面的业务逻辑
return 结果;
}
格式2调用:(赋值调用)
var 最终结果变量 = 函数名称(实际参数列表) ;
innerText和innerHTML属性有什么区别?
任何标签都有这俩个innerText和innerHTML。
这两个属性代表设置标签的文本内容
innerHTML可以加入html标签,可以被解析 (推荐)
innerText只是普通的文本内容,不能够解析html标签,如果加入html标签就会原封不动的解析成普通文本!
Js内置对象String
Js的String 对象
charAt(index):获取指定索引处的字符
concat(str) :字符串拼接功能
substring(beginIndex,endIndex):截取,从指定位置开始截取到指定位置接收(不包含endIndex,而是endIndex-1)
fontcolor 方法:给字符串颜色标记 ("参数英文单词或者#xxxxxx")
split 方法:拆分,分割,获取到的字符串数组
Js的自定义对象
使用js这种方式如何定义Person对象 ,还需要使用Js创建Person对象;(四种方式)
1)类似于Java中有参构造
2)类似于Java中的无参构造
3)使用Object对象(代表所有js对象)
4)字面值的方式: "Json数据格式" (后期的重点)
Js中DOM操作 (重点)
什么是DOM,核心思想 :获取元素对象(标签对象),改变标签对象属性
推荐的方式: (原生Js)
使用document的方法来获取标签对象 (4种方式)
1)document.getElementById("id属性值") ; 推荐
2)document.getElementsByClassName("所有的同名的class属性值") 获取的标签对象列表
3)docuement.getElementsByName("name属性值") ;获取的标签对象列表
通过标签名称获取标签对象
4)docuement.getElementsByTagName("同名的标签名称") ; 返回的标签对象列表
Js的常见的事件
点击相关的
单击事件 (重点) onclick
双击事件 ondbclick
焦点事件 (重点)
获取焦点 onfocus
失去焦点 onblur
选项卡发生变化的事件 (重点)
select标签 下拉菜单 onchange
option 下拉选项
鼠标经过事件 onmouseover
鼠标移出事件 onmouseout
页面载入事件 (重点)
Js正则表达式以及原生 Js的表单校验!(重点)
创建一个正则规则:var 正则对象名 = /书写正则语法/ ; 不完全匹配 (会出现安全漏洞!)
正则对象名.test(字符串),true,匹配成功,false,失败!
在Java语言中和在javascript中,如果要完全匹配,必须加入边界匹配器
^:以....开头
$:以...结尾
var 正则表达式对象 = /^ 正则语法 $/ ;
表单校验
举例:
//校验用户名
function checkUserName(){
//1)获取 用户名的内容 (id="username"的input标签对象同时获取内容)
var username = document.getElementById("username").value ;
//2)定义用户名的正则规则:用户名:4-14位的数字或者字母(不区分大小写)组成
var reg = /^[A-Za-z0-9]{4,14}$/ ;
//3)获取 id="userTip"的span标签对象
Var span = document.getElementById("userTip") ;
//4)正则表达式校验用户名的内容 username
if(reg.test(username)){
//成立
span.innerHTML = "√".fontcolor("green") ;
}else{
//不成立
span.innerHTML = "×".fontcolor("red") ;
}
}
数据库的
DDL
语句
(
数据库的定义语句
)
之库的操作
创建库
create database
库名
;
create database if not exists
库名
;
查询创建库的字符集
show create database
库名
;
修改库的字符集
alter database
库名
default character set
字符集名称
;
删除库
drop database
库名
;
drop database if exists
库名
;
如果存在这个库删除
数据库
DDL
语句
(
数据库定义语句
)
之建表
,
修改表
,
查询表
,
删
除表
...
建表之前
,
必须使用哪个库
use
库名
;
create table
表名
(
字段名称
1
字段类型
1,
字段名称
2
字段类型
2,
...
...
字段名称
n
字段类型
n
) ;
查看表的结构
desc
表名
;
修改表的字段名称
alter table
表名
change
旧字段名称 新的字段名称 以前的字段数据类型
;
修改表的字段类型
modify
alter table
表名
modify
字段名称 新的字段类型
;
修改表
:
给表中添加一个新的字段
alter table
表名
add
字段名称 字段类型
;
复制一张表
create table 新表名 like 旧表名;
删除表
drop table
表名
;
drop table if exists
表名
;
DML
语句
:
数据库操作语句
给表中插入数据
插入数据的语法
1:
insert into
表名
values
(
值
1,
值
2,
值
3,
值
4...
值
n
)
;
插入数据的语法
2:
插入部分字段
,
没有插入的字段
,
默认值就是
null,
也支持一次性插入多条数据
insert into
表名
(
字段名称
1,
字段名称
2....
)
values
(
值
1,
值
2...
)
;
DML
语句之修改表记录
语法
1:
update
表名
set
字段名称
=
值
where
条件
;
语法
2:
一次性修改多个字段
update
表名
set
字段名称
1
=
值
,
字段名称
2
=
值
2....
where
条件
;
语法
3:
不带条件 属于批量修改
(
部分场景可以用的
)
update
表名
set
字段名称
=
值
,
字段名称
2
=
值
2....
DML
语句之删除表的记录
delete from
表名
where
条件
;
注意
:
带条件删除记录
(
使用的非业务字段
id
删除
)
delete from
表名
:
删除全表数据
truncate table
表名
;
删除全表数据
面试题
:
DML
语句中的
delete
和
truncate
的区别
?
共同点
:
都是可以删除全表的记录的
;
不同点
:
delete from
表名
;
仅仅只是将表的全部记录删除了
,
表还在
!
它针对
id(
非业务字段
:
设置主键并且自增长
),
它不影响自增长主键的这个值
; (
数据库约束后面
讲
)
truncat table
表名
;
将表所有数据删除
,
而且还会把删除之后
,
自动创建一个张一模一样的表
,
影响自增主键的值
!
DQL
语句
:
数据库的查询语句
1
)
查询全表数据
:
select
*
from
表名
;
*
代表所有字段
,
仅仅是自己玩的时候可以用
,
实际开发中不能用
*
,
需要写上全部的字段名称
实际开发中查询全部字段
,
把字段名称全部写上
2
)
查询全部字段的时候
,
给字段起一个别名
as
'
别名名称
'
,
as
省略
3
)
当表的名称比较长的时候
,
可以给表名起一个别名
4
)
字段冗余
(
重复度大
)
字段去重
DISTINCT
后面跟上字段名称
DQL
语句之条件查询
where
关键字
1)
使用赋值运算符
=,
比较运算符
<,<=,>=,>,!=, mysql
中的不等于
<>
2)Java
中逻辑运算符
:&&,|| mysql
推荐使用
and , or
也可以优化为
in(
值
1,
值
2,
值
3..
值
n);in
集合语句
3)
针对两个范围查询
:
可以使用
&&,
可以使用
and,
也可以
"
字段名称
between
值
1 and
值
2"
4) mysql
中判断某个字段为
null,
使用的语法是
is null
判断某个字段不为
null,
使用的语法是
is not null
5)
关于
int
类型字段求和的时候
,
注意
: int
类型的值
+ null
值
= null;
mysql
提供函数
ifnull(
字段名称
,
值
);
如果字段名称是
null,
给一个默认值
DQL
语句之
where
条件后面加入模糊查询
---
关键字
like
select
字段列表
from
表名
where
字段名称
like '%xxx%' ;
%:
代表任何多个字符或者某个字符
(
使用居多
):
网站门户系统
---"
搜索商品
" ,
模糊搜索
_:
代表某个单个字符
聚合函数查询
:
针对
int
类型
:
单行单列数据
select
聚合函数
from
表名
where
还可以指定条件
;
count(
字段名称
):
查询表中记录
,
字段名称使用都是
id,
非业务字段
avg(
字段名称
):
查询这个字段中平均值
sum(
字段列表
):
求和函数
max(
字段名称
):
最大值
min(
字段名称
):
最小值
DQL
语句之分组查询
:group by
select
字段列表
from
表名
group by
分组字段名称
;
注意事项
: 1)
查询的字段列表中可以使用 分组字段
2)group by
之后不能使用聚合函数
带条件分组查询的语法
: where
条件 必须放在
group by
之前
,
否则语法错误
!
select
字段列表包含分组字段
,
聚合函数
.. from
表名
where
条件
group by
分组字段
;
筛选查询
having
where
条件
,group by,having
必须先有条件
,
分组
,
然后才筛选
!
注意
:
筛选的后面可以使用聚合函数
,group by
的后面是不能使用聚合函数的
分页查询
limit
select
字段列表
from
表名
limit
起始行数
,
每页显示的条数
;
起始行数
:
从
0
开始算的
,
起始行数
= (
当前页码
-1)*
每页显示的条数
数据库的备份和还原
方式
1:
图形界面化工具
方式
2:
命令行
数据库的约束
概念
:
限制用户操作数据库的一种行为
(
非法行为
)
1)
默认约束
default :
如果某个字段没有插入数据
,
那么默认约束起作用了
2)
非空约束
not null,
当前这个字段值不能为
null
3)
唯一约束
unique (
属于一种
index :
索引
)
4)
主键约束
primary key(
非空且唯一的
)
一般和
auto_increment(
自增长约束
)
使用多一些
--
设置在
id
非业务字段上
5)
外键约束 foreign key,加入外键约束
:
修改和删除是很麻烦
,
需要先修改或者删除从表数据
,
然后修改
/
删除主表数据