JavaScript, mysql 总结
javaScript
1.JavaScript的使用方式
方式一:js的内部方式
向浏览器打印内容: document.write("hello!") ;浏览器中控制台中打印内容:console.log("hello);
浏览中弹出一个提示框:alert("helloworld") ;
方式二:外部方式
需要在js文件夹中单独创建一个后缀为.js的文件,书写js代码,在当前html页面中将js文件导入即可导入:<script src="js文件名"></script>
2.javascript中的变量以及数据类型
定义变量的注意事项
1,在js中定义变量,使用var来定义,var可以省略不写
2, javascript是弱类型语言,它的语法结构不严谨! 可以重复定义变量的,后面的变量的值将前 面的变量值覆盖掉
3,查看js的变量的数据类型,使用一个函数 typeof(变量名)
var可以任意数据类型
js的基本数据类型
1,无论是整数还是小数,都是number类型, ---- js引擎会自动提升为 Number 对象类型
2,无论是字符串还是字符,都是string类型----js引擎会自动提升为 String 对象类型
3,boolean类型 ----js引擎会自动提升为 Boolean 对象类型
4,object类型 (创建一个对象 ) ---- js引擎会自动提升为Object对象类型
5,在Js中,Object对象代表所有js对象的模板
6,undefined类型 :未定义类型 (这种没有意义),因为没有赋值!3.运算符
逻辑运算符与 && 要求表达式左右两边的表达式同为true,整体结果才为true
或 || 要求表达式左右两边的表达式只要有一个为true,整体结果就为true
非 ! 将布尔值取反操作
算术运算符+ - * / % ++ --
赋值运算符
=:基本赋值 +=,-=,*=,/=,%=
关系运算符
<,<=,>,>=,==,!=
逻辑运算符
实际开发中:逻辑双与&&,逻辑双或||
三元(三目)运算符
(表达式)?执行true的结果:false的结果
4.流程控制语句
顺序结构:js代码从上而下依次加载
选择结构
if
if else
switch
3. 循环结构while循环
do-while循环
for循环
5.Js事件编程三要素
事件源 ----就是html标签 的单击,双击....
编写事件监听器-- 就是编写一个函数 function 函数名称(){}
)绑定事件监听器-- 就在事件源上加上onxxx属性="函数名称()"
<input type="text" id="month" placeholder="请输入月份的值" /><input type="button" value="查询" οnclick="testSerach()" /><!-- 1)事件源 --> <!-- 3)绑定事件监听器-->
6.for-in语句
创建数组方式1: var 数组对象 = new Array() ; //不指定长度
方式2: var 数组对象 = new Array(长度) ;//指定长度
静态初始化
arrayObj = new Array([element0[, element1[, ...[, elementN]]]])
for-in语句的格式
for(var 变量名 in 数组或者对象名称){
使用变量名;
}
7.Js中的函数定义以及调用
定义函数的 格式1function 函数名称(形参列表){
函数的里面的业务逻辑
return 结果;
}
格式2:
function 函数名称(形参列表){
函数的里面的业务逻辑return 结果;
}
调用:
赋值调用
var 最终结果变量 = 函数名称(实际参数列表) ;
定义函数的注意事项
1, js是弱类型语言,定义函数的时候,参数名称不能携带var
2,js定义时候,没有返回值类型,但是函数中可以携带return语句,代表方法结束!
3,Js中没有函数重载的概念,如果方法名相同,后面定义的函数将前面定义的函数覆盖了
4,实际参数列表 < 形式参数列表,函数依然会被调用,不过值是"NaN",有一个形式参数没有赋值
5,实际参数列表 > 形式参数列表,将实际参数的值赋值给形式参数,多余的实际参数,直接省略不计!6,隐藏一个数组名称:arguments,作用:将实际参数绑定给形式参数
8.date对象的使用:网页时钟的操作流程
Js内置对象:
Date日期,String字符串,Array数组,正则表达式对象..
日期对象的基本使用:dateObj = new Date()
获取当前系统时间
1,创建日期对象
2,拼接出来时间字符串
3,dom(文档对象模型编程)操作:
4,获取id="spanTip" 所在的span标签对象
5,设置span标签的文本内容6,开启网页定时器
setInterval("定时任务()",时间毫秒值):每经过时间毫秒值重复执行这个定时任务..
setTimeout("定时任务()",时间毫秒值):经过这个毫秒值之后,执行一次定时任务..
9,Js内置对象String
在js中如何创建对象
var 对象名 = new String("字符串") ;简写格式:直接将字符串常量赋值给变量
注:
1, == 是比较两个地址值是否相同
2, valueof 是js中比较两个js对象的原始值是否相同
js中常用的方法
1, charAt(index) 获取指定索引处的字符2, concat 方法(String) 字符串拼接功能
3. fontcolor 方法 给字符串颜色标记 ("参数英文单词或者#xxxxxx")
4,substring(start, end) 截取功能 跟Java中的String一样
5,split 方法 拆分,分割,获取到的字符串数组
6,for-in语句 遍历
9.Js自定义对象
方式一:类似于Java中有参构造
格式: function 对象 (属性名称1,属性名称2,属性名称3...){
//追加它的成员属性this.成员属性1 = 属性名称1 ;
this.成员属性2 = 属性名称2 ;
this.成员属性3 = 属性名称3 ;
//追加功能
this.方法名 = function(空参或形参){
执行的代码;}
}
方式二:类似于Java中无参构造
格式: //定义对象
function 对象 ( ) { }
//创建对象
var 对象名 = new 对象() ;
//追加属性和追加功能
对象名.方法名 = "值";
对象名.方法名 = function( ) { };
方式三:使用Object对象创建(代表所有js对象)
格式: //直接new对象
var 对象名 = new Object();
//追加属性和功能
对象名.属性名 = 值;
对象名.功能名 = function(形参){
执行的代码;}
方式四:字面值的方式: "Json数据格式"
格式: {"key" : "value"}这种键值对
var 对象名 = {
"键" :"值","键" :"值",
"方法名" : function(形参){
代码块 };};
方式五:复杂格式
格式: var 对象名 = [{},{},{}...]
//使用json对象,key获取value
10,Json_复杂类型
例:
<script>//复杂格式 //var 对象名 = [{},{},{}...] 描述类似数组或者集合var students = [{"name":"张三","age":42,"gender":"女","address":"西安市"},{"name":"李四","age":35,"gender":"男","address":"北京市"},{"name":"小白","age":32,"gender":"男","address":"渭南市"},{"name":"小明","age":25,"gender":"女","address":"西安市"}] ;//json对象[索引值].key 获取对应value值document.write(students[1].address) ;//第三方解析方式:jsonlib,gson,fastJson,Springmvc的jackson这些jar包//后端将List---->json//后端Map----Json//后端实体----Json {"username":"xx","password":"xxx"}</script>
11.dom入门
通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素。
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
12.通过docuement方法获取标签对象
方式1: 在标签中给定id属性值,必须唯一 (推荐)
document.getElementById("id属性值") 获取标签对象
方式2: 获取的标签对象列表
docuement.getElementsByClassName("class属性值") ;
方式3: 获取的标签对象列表
docuement.getElementsByName("name属性值") ;
方式4: 通过标签名称获取标签对象
/docuement.getElementsByTagName("同名的标签名称") ; //返回的标签对象列表
注: 标签对象获取value属性:内容可以获取到
13.Js中常见事件分类
点击相关类:
单击事件 (重点) onclick
双击事件 ondbclick
焦点事件 (重点)
获取焦点 onfocus
失去焦点 onblur
选项卡发生变化的事件 (重点)
select标签 下拉菜单 onchange
下拉选项 option
鼠标经过事件 : onmouseover
鼠标移出事件: onmouseout
页面载入事件 (重点)
14.常见弹窗函数
alert弹框:这是一个只能点击确定按钮的弹窗
alert方法没有返回值,也就是说如果用一个变量去接受返回值,将会得到undefined。无论 你点击“确定”还是右上角的那个“X“关闭。
confirm弹框:这是一个你可以点击确定或者取消的弹窗
confirm方法与alert不同,他的返回值是boolean,当你点击“确定”时,返回true,无论你点 击“取消”还是右上角的那个“X“关闭,都返回false。
15.js正则表达式
正则表达式是描述字符模式的对象。
正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。
语法:
var patt=new RegExp(pattern,modifiers);
例:var re = new RegExp("\\w+");
var patt=/pattern/modifiers;
例:var re = /\w+/;
注意:
在Java语言中和在javascript中,如果要完全匹配,必须加入边界匹配器
^:以....开头
$:以...结尾
var 正则表达式对象 = /^ 正则语法 $/ ;
修饰符:用于执行区分大小写和全局匹配:
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。
方括号:用于查找某个范围内的字符
[abc] 查找方括号之间的任何字符。
[^abc] 查找任何不在方括号之间的字符。
[0-9] 查找任何从 0 至 9 的数字。
[a-z] 查找任何从小写 a 到小写 z 的字符。
[A-Z] 查找任何从大写 A 到大写 Z 的字符。
[A-z] 查找任何从大写 A 到小写 z 的字符。
[adgk] 查找给定集合内的任何字符。
[^adgk] 查找给定集合外的任何字符。
(red|blue|green) 查找任何指定的选项。
1)数量词相关的语法
x:代表任意字符
x+: 表示X字符串出现一次或者多次
x*:表示X字符出现0次或者多次
x?:表示X字符出现0次或者1次
2)范围相关的语法
X{n}: 表示X字符恰好出现n次
X{n,}:表示X字符至少出现n次
X{n,m}:表示X字符至少出现n次,但是不超过m次
3)匹配字符相关的
X[a-z] :X字符可以是a-z中任何的一个小写字母字符
X[0-9] :x字符是一个数字字符
X[A-Za-z0-9_]:X字符可以是任意的大小字母均可或者数字或者_
mysql
mysql的基本语法
安装mysql之后
1)方式登录 dos窗口登录
2)方式登录 mysql自带的客户端登录
dos窗口
mysql -uroot -p
数据库的DDL语句(数据库的定义语句)之库的操作
注释:
-- :普通注释 当行注释
/* mysql的多行注释*/
#特殊注释
--查询当前mysql中自带的所有库有哪些
mysql> show databases;
-- 创建库
-- create database 库名;
mysql> create database myEE_2203 ;-- create database if not exists 库名; (如果存在即创建)
mysql> create database if not exists ee2203;
-- 查询创建库的字符集
-- show create database 库名;
mysql> show create database myee_2203-- 修改库的字符集
-- alter database 库名 default character set 字符集名称;
mysql> alter database myee_2203 default character set gbk;-- 删除库
-- drop database 库名 ;
mysql> drop database ee2203;-- drop database if exists 库名 ; 如果存在这个库删除
mysql> drop database if exists myee_2203;
数据库DDL语句(数据库定义语句)之建表,修改表,查询表,删除表...
mysql常见的数据类型
int :整数类型 默认最大长度11位字符,给int类型的数据的时候,当前存储的是值的真实长度
举例
年龄字段age int类型
int(字符数): 整数类型, 给int(3)这个值的时候,实际存储3位,但是赋值的时候不够3位 (使用很少)
id字段 1-----int(3) -------------------001
varchar(最大支持255个长度): 字符串类型
指定varchar(指定长度)
date:仅仅是日期类型
datetime:日期+时间类型
timestap:时间戳 (举例:管理员添加一个商品,商品上架的时间:当前系统瞬时时间 :2021-5-11 16:50分)
double:小数类型
double(几位数,小数点后保留的位数)
举例:
double(4,2): 4位,小数点后保留2位
clob:大字符类型
支持 "大文本"
blob:大字节类型
最大支持4G
建表
-- 建表之前,必须使用哪个库
-- use 库名;mysql> use ee_2203;
Database changed
mysql>
/*
create table 表名(
字段名称1 字段类型1,
字段名称2 字段类型2,
...
...
字段名称n 字段类型n
) ;*/
mysql> create table student(
-> id int,
-> name varchar(10),
-> age int,
-> gender varchar(2),
-> address varchar(50),
-> socre double(3,1)
-> );-- 查询当前库中有哪些表
-- show tables ;
mysql> show tables ;-- 查看表的结构
-- desc 表名;
mysql> desc student;-- 修改表的字段名称
-- alter table 表名 change 旧字段名称 新的字段名称 以前的字段数据类型;mysql> alter table student change gender sex varchar(2) ;
-- 修改表的字段类型 modify
-- alter table 表名 modify 字段名称 新的字段类型 ;
mysql> alter table student modify address varchar(100) ;-- 修改表:给表中添加一个新的字段
-- alter table 表名 add 字段名称 字段类型;
mysql> alter table student add description varchar(200) ;-- 复制一张表
-- create table 新表名 like 旧表名;
mysql> create table teachear like student ;-- 删除表
-- drop table 表名;
-- drop table if exists 表名;
mysql> drop table if exists teachear;
DQL 查询表中的数据
1.DML语句:数据库操作语句
插入数据的语法1:insert into 表名 values(值1,值2,值3,值4...值n); 插入全部数据
插入表的数据支持 :一次插入多条数据
insert into 表名 values(值1,值2,值3,值4...值n),(值1,值2,值3,值4...值n),(值1,值2,值3,值4...值n);
语法2:插入部分字段,没有插入的字段,默认值就是null, 也支持一次性插入多条数据
insert into 表名(字段名称1,字段名称2....) values(值1,值2...) ;
注意事项:
1)插入的这些值必须要和表中的字段对应上; 先后顺序保证一致!
2)目前没有加入"数据库约束",可以插入非法数据,举例:id重复 ,
后期需要使用数据库约束来限定用户的操作表的行为!
2.DML语句之修改表记录
一般实际开发中修改:都是带条件修改 (推荐)
update 表名 set 字段名称 = 值 where 条件 ;-- 语法2:一次性修改多个字段
-- update 表名 set 字段名称1 = 值 ,字段名称2 =值2.... where 条件;-- 语法3:不带条件 属于批量修改 (部分场景可以用的)
-- update 表名 set 字段名称= 值,字段名称2 =值2....
3. DML语句之删除表的记录
-- delete from 表名 where 条件 ; 带条件删除记录 (使用的非业务字段id删除)
-- 需求:删除id为7的学生信息
面试题:
delete from 表名 和 truncate table 表名 :两个区别?
共同点:都是可以删除全表的记录的;
不同点:
delete from 表名 ; 仅仅只是将表的全部记录删除了,表还在!
它针对id(非业务字段:设置主键并且自增长),它不影响自增长主键的这个值; (数据库约束后面讲)
truncat table 表名; 将表所有数据删除,而且还会把删除之后,
自动创建一个张一模一样的表,影响自增主键的值!
4.DQL语句最通用的语法:查询表的全部数据
-- * 代表所有字段,仅仅是自己玩的时候可以用,实际开发中不能用*,需要写上全部的字段名称
DQL语句 :数据库的查询语句 里面语法是最多的
-- 1)最基本的查询语句 select
-- 查询全表数据:select * from 表名;-- 查询全部字段的时候,给字段起一个别名 as '别名名称' ,as省略
-- 发现:字段冗余(重复度大) 字段去重 DISTINCT 后面跟上字段名称
-- 2)DQL语句之条件查询 where 关键字
-- 2.1)使用 赋值运算符=,比较运算符 <,<=,>=,>,!=, mysql中的不等于 <>
-- 2.2)Java中逻辑运算符:&&,|| mysql推荐使用 and , or
-- 2.2)针对两个范围查询: 可以使用&&,可以使用and, 也可以 "字段名称 between 值1 and 值2"in(值1,值2,值3..值n) ;in集合语句 --表示或(并集)
关于空值
- Java语言中:去判断某个条件的内容为null ,mysql语言不支持这个格式 ==null
-- mysql中判断某个字段为null,使用的语法是 is null
-- 判断某个字段不为null,使用的语法是 is not null注意:-- 关于int类型字段求和的时候,注意: int类型的值 + null 值 = null;
-- 3)DQL语句之 where条件后面加入模糊查询 ---关键字 like
-- select 字段列表 from 表名 where 字段名称 like '%xxx%' ;
-- %:代表任何多个字符或者某个字符 (使用居多):网站门户系统---"搜索商品" ,模糊搜索
-- _:代表某个单个字符
5.聚合函数查询
-- 聚合函数查询 :针对int类型 :单行单列数据
-- select 聚合函数 from 表名 where 还可以指定条件;
-- count(字段名称):查询表中记录 ,字段名称使用都是id,非业务字段
-- avg(字段名称): 查询这个字段中平均值
-- sum(字段列表):求和函数
-- max(字段名称):最大值
-- min(字段名称):最小值-- select语句嵌套select语句 --- 子查询
-- 需求:查询出学生数学成绩大于 数学平均分的学生所有信息;
-- 使用where 条件 后面带上 比较运算符...SELECT NAME '姓名',age '年龄',address '地址',math '数学成绩' FROM student3 WHERE math = (SELECT MAX(math) FROM student3) ;
6.DQL之排序查询 order by
-- select 字段列表 from 表名 order by 字段名称 排序规则(asc(默认值就是升序)或者desc 降序)
注意:-- 查询的字段列表中可以使用 分组字段
-- group by之后不能使用聚合函数
-- 默认不写排序规则,就是asc 升序-- 多个字段要同时排序,首先第一个字段排序规则,然后才是第二个字段
-- 带条件分组查询的语法: where 条件 必须放在group by 之前,否则语法错误!
-- select 字段列表包含分组字段,聚合函数.. from 表名 where 条件 group by 分组字段;
7.筛选查询 having
-- where条件,group by,having 必须先有条件,分组,然后才筛选!
-- 注意:筛选的后面可以使用聚合函数,group by的后面是不能使用聚合函数的
8.分页查询 limit
-- select 字段列表 from 表名 limit 起始行数,每页显示的条数;
-- 起始行数:从0开始算的,
-- 起始行数 = (当前页码-1)*每页显示的条数
-- 前提条件:每页显示2条,
数据库的备份和还原
方式1:图形界面化工具
备份:选中库名,右键----->BACKUP/Export 备份导出---->
选中Sql脚本,存储到本地某个磁盘上----->StructureAndData:表的结构和数据都需要备份还原:先在SqlYog将myee_2203删除了,新建库右键---->Import 导入---->选中执行execute sql 脚本
方式2:dos命令框
备份:
以管理员身份进入dos,不需要登录mysql
保存到指定路径上
mysqldump -uroot -p你的密码 库名 > 磁盘上的路径xx\xx\xx.sql
还原: 进入dos控制台,登录mysql
先将库删除,新建一个库
使用这个库 use库名;
加载指定路径的sql脚本
source 备份的sql脚本路径(D:\EE_2203\day9\code\mysql_01.sql)
数据库的约束
概念:限制用户操作数据库的一种行为(非法行为)
直接插入null值或者某个非业务字段id一直在重复
1)默认约束 default :如果某个字段没有插入数据,那么默认约束起作用了
2)非空约束 not null,当前这个字段值不能为nullCREATE TABLE stu(id INT, -- 编号NAME VARCHAR(20), -- 姓名age INT, -- 年龄address VARCHAR(50) NOT NULL-- 地址 ,加入非空约束 ) ; INSERT INTO stu VALUES(1,'高圆圆',42,'西安市'),(2,'赵又廷',45,'北京市') ;-- 地址插入一个null值 INSERT INTO stu VALUES(3,'张佳宁',32,NULL) ; -- 这种直接插入null也属于非法行为 -- 当address字段设置not null约束,直接限定用户不能插入null值 -- Column 'address' cannot be null
3)唯一约束unique (属于一种index :索引)
CREATE TABLE stu(id INT , -- 编号NAME VARCHAR(20), -- 姓名phone_number VARCHAR(11) UNIQUE -- 电话号码 必须设置唯一的 ) ; INSERT INTO stu VALUES(1,'高圆圆','13388886666'),(2,'张三','13255559999') ; INSERT INTO stu VALUES(3,'张佳宁','13388886666') ;-- 重复值 Duplicate entry '13388886666' for key 'phone_number'-- 通过sql语句将唯一约束删除-- alter table stu modify phone_number varchar(11) ; -- 修改表的字段类型 -- 删除唯一约束的语法:atler table 表名 drop index 索引的字段名称(就当前类的字段名称一致的) ; ALTER TABLE stu DROP INDEX phone_number ;-- 删除id为3的数据 DELETE FROM stu WHERE id = 3 ;-- 通过sql语句添加唯一约束,此时语法就和修改表的字段类型的语法一致了 ALTER TABLE stu MODIFY phone_number VARCHAR(11) UNIQUE ;DROP TABLE stu ;
4)主键约束 primary key(非空且唯一的) 一般和auto_increment(自增长约束)使用多一些
设置在id非业务字段上
注意: 加入自增长约束之后,不需要给id赋值了,自己自增
自增长约束可以自己插入新的id,然后在之前id上继续自增
5)外键约束 foreign key
创建约束的语法
新建表时增加外键:
[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
已有表增加外键:
ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主 键字段名);
注意: 外键名称 命名规则:主表名称_从表名称_fk
删除外键
ALTER TABLE 从表 drop foreign key 外键名称;
-- 删除 employee 表的 emp_depid_fk 外键 alter table employee drop foreign key emp_depid_fk; -- 在 employee 表情存在的情况下添加外键 alter table employee add constraint emp_depid_fk foreign key (dep_id) references department(id);
加入外键约束:修改和删除是很麻烦,需要先修改或者删除从表数据,然后修改/删除主表数据
JavaScript, mysql 总结
javaScript
1.JavaScript的使用方式
方式一:js的内部方式
向浏览器打印内容: document.write("hello!") ;浏览器中控制台中打印内容:console.log("hello);
浏览中弹出一个提示框:alert("helloworld") ;
方式二:外部方式
需要在js文件夹中单独创建一个后缀为.js的文件,书写js代码,在当前html页面中将js文件导入即可导入:<script src="js文件名"></script>
2.javascript中的变量以及数据类型
定义变量的注意事项
1,在js中定义变量,使用var来定义,var可以省略不写
2, javascript是弱类型语言,它的语法结构不严谨! 可以重复定义变量的,后面的变量的值将前 面的变量值覆盖掉
3,查看js的变量的数据类型,使用一个函数 typeof(变量名)
var可以任意数据类型
js的基本数据类型
1,无论是整数还是小数,都是number类型, ---- js引擎会自动提升为 Number 对象类型
2,无论是字符串还是字符,都是string类型----js引擎会自动提升为 String 对象类型
3,boolean类型 ----js引擎会自动提升为 Boolean 对象类型
4,object类型 (创建一个对象 ) ---- js引擎会自动提升为Object对象类型
5,在Js中,Object对象代表所有js对象的模板
6,undefined类型 :未定义类型 (这种没有意义),因为没有赋值!3.运算符
逻辑运算符与 && 要求表达式左右两边的表达式同为true,整体结果才为true
或 || 要求表达式左右两边的表达式只要有一个为true,整体结果就为true
非 ! 将布尔值取反操作
算术运算符+ - * / % ++ --
赋值运算符
=:基本赋值 +=,-=,*=,/=,%=
关系运算符
<,<=,>,>=,==,!=
逻辑运算符
实际开发中:逻辑双与&&,逻辑双或||
三元(三目)运算符
(表达式)?执行true的结果:false的结果
4.流程控制语句
顺序结构:js代码从上而下依次加载
选择结构
if
if else
switch
3. 循环结构while循环
do-while循环
for循环
5.Js事件编程三要素
事件源 ----就是html标签 的单击,双击....
编写事件监听器-- 就是编写一个函数 function 函数名称(){}
)绑定事件监听器-- 就在事件源上加上onxxx属性="函数名称()"
<input type="text" id="month" placeholder="请输入月份的值" /><input type="button" value="查询" οnclick="testSerach()" /><!-- 1)事件源 --> <!-- 3)绑定事件监听器-->
6.for-in语句
创建数组方式1: var 数组对象 = new Array() ; //不指定长度
方式2: var 数组对象 = new Array(长度) ;//指定长度
静态初始化
arrayObj = new Array([element0[, element1[, ...[, elementN]]]])
for-in语句的格式
for(var 变量名 in 数组或者对象名称){
使用变量名;
}
7.Js中的函数定义以及调用
定义函数的 格式1function 函数名称(形参列表){
函数的里面的业务逻辑
return 结果;
}
格式2:
function 函数名称(形参列表){
函数的里面的业务逻辑return 结果;
}
调用:
赋值调用
var 最终结果变量 = 函数名称(实际参数列表) ;
定义函数的注意事项
1, js是弱类型语言,定义函数的时候,参数名称不能携带var
2,js定义时候,没有返回值类型,但是函数中可以携带return语句,代表方法结束!
3,Js中没有函数重载的概念,如果方法名相同,后面定义的函数将前面定义的函数覆盖了
4,实际参数列表 < 形式参数列表,函数依然会被调用,不过值是"NaN",有一个形式参数没有赋值
5,实际参数列表 > 形式参数列表,将实际参数的值赋值给形式参数,多余的实际参数,直接省略不计!6,隐藏一个数组名称:arguments,作用:将实际参数绑定给形式参数
8.date对象的使用:网页时钟的操作流程
Js内置对象:
Date日期,String字符串,Array数组,正则表达式对象..
日期对象的基本使用:dateObj = new Date()
获取当前系统时间
1,创建日期对象
2,拼接出来时间字符串
3,dom(文档对象模型编程)操作:
4,获取id="spanTip" 所在的span标签对象
5,设置span标签的文本内容6,开启网页定时器
setInterval("定时任务()",时间毫秒值):每经过时间毫秒值重复执行这个定时任务..
setTimeout("定时任务()",时间毫秒值):经过这个毫秒值之后,执行一次定时任务..
9,Js内置对象String
在js中如何创建对象
var 对象名 = new String("字符串") ;简写格式:直接将字符串常量赋值给变量
注:
1, == 是比较两个地址值是否相同
2, valueof 是js中比较两个js对象的原始值是否相同
js中常用的方法
1, charAt(index) 获取指定索引处的字符2, concat 方法(String) 字符串拼接功能
3. fontcolor 方法 给字符串颜色标记 ("参数英文单词或者#xxxxxx")
4,substring(start, end) 截取功能 跟Java中的String一样
5,split 方法 拆分,分割,获取到的字符串数组
6,for-in语句 遍历
9.Js自定义对象
方式一:类似于Java中有参构造
格式: function 对象 (属性名称1,属性名称2,属性名称3...){
//追加它的成员属性this.成员属性1 = 属性名称1 ;
this.成员属性2 = 属性名称2 ;
this.成员属性3 = 属性名称3 ;
//追加功能
this.方法名 = function(空参或形参){
执行的代码;}
}
方式二:类似于Java中无参构造
格式: //定义对象
function 对象 ( ) { }
//创建对象
var 对象名 = new 对象() ;
//追加属性和追加功能
对象名.方法名 = "值";
对象名.方法名 = function( ) { };
方式三:使用Object对象创建(代表所有js对象)
格式: //直接new对象
var 对象名 = new Object();
//追加属性和功能
对象名.属性名 = 值;
对象名.功能名 = function(形参){
执行的代码;}
方式四:字面值的方式: "Json数据格式"
格式: {"key" : "value"}这种键值对
var 对象名 = {
"键" :"值","键" :"值",
"方法名" : function(形参){
代码块 };};
方式五:复杂格式
格式: var 对象名 = [{},{},{}...]
//使用json对象,key获取value
10,Json_复杂类型
例:
<script>//复杂格式 //var 对象名 = [{},{},{}...] 描述类似数组或者集合var students = [{"name":"张三","age":42,"gender":"女","address":"西安市"},{"name":"李四","age":35,"gender":"男","address":"北京市"},{"name":"小白","age":32,"gender":"男","address":"渭南市"},{"name":"小明","age":25,"gender":"女","address":"西安市"}] ;//json对象[索引值].key 获取对应value值document.write(students[1].address) ;//第三方解析方式:jsonlib,gson,fastJson,Springmvc的jackson这些jar包//后端将List---->json//后端Map----Json//后端实体----Json {"username":"xx","password":"xxx"}</script>
11.dom入门
通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素。
当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。
12.通过docuement方法获取标签对象
方式1: 在标签中给定id属性值,必须唯一 (推荐)
document.getElementById("id属性值") 获取标签对象
方式2: 获取的标签对象列表
docuement.getElementsByClassName("class属性值") ;
方式3: 获取的标签对象列表
docuement.getElementsByName("name属性值") ;
方式4: 通过标签名称获取标签对象
/docuement.getElementsByTagName("同名的标签名称") ; //返回的标签对象列表
注: 标签对象获取value属性:内容可以获取到
13.Js中常见事件分类
点击相关类:
单击事件 (重点) onclick
双击事件 ondbclick
焦点事件 (重点)
获取焦点 onfocus
失去焦点 onblur
选项卡发生变化的事件 (重点)
select标签 下拉菜单 onchange
下拉选项 option
鼠标经过事件 : onmouseover
鼠标移出事件: onmouseout
页面载入事件 (重点)
14.常见弹窗函数
alert弹框:这是一个只能点击确定按钮的弹窗
alert方法没有返回值,也就是说如果用一个变量去接受返回值,将会得到undefined。无论 你点击“确定”还是右上角的那个“X“关闭。
confirm弹框:这是一个你可以点击确定或者取消的弹窗
confirm方法与alert不同,他的返回值是boolean,当你点击“确定”时,返回true,无论你点 击“取消”还是右上角的那个“X“关闭,都返回false。
15.js正则表达式
正则表达式是描述字符模式的对象。
正则表达式用于对字符串模式匹配及检索替换,是对字符串执行模式匹配的强大工具。
语法:
var patt=new RegExp(pattern,modifiers);
例:var re = new RegExp("\\w+");
var patt=/pattern/modifiers;
例:var re = /\w+/;
注意:
在Java语言中和在javascript中,如果要完全匹配,必须加入边界匹配器
^:以....开头
$:以...结尾
var 正则表达式对象 = /^ 正则语法 $/ ;
修饰符:用于执行区分大小写和全局匹配:
i 执行对大小写不敏感的匹配。
g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m 执行多行匹配。
方括号:用于查找某个范围内的字符
[abc] 查找方括号之间的任何字符。
[^abc] 查找任何不在方括号之间的字符。
[0-9] 查找任何从 0 至 9 的数字。
[a-z] 查找任何从小写 a 到小写 z 的字符。
[A-Z] 查找任何从大写 A 到大写 Z 的字符。
[A-z] 查找任何从大写 A 到小写 z 的字符。
[adgk] 查找给定集合内的任何字符。
[^adgk] 查找给定集合外的任何字符。
(red|blue|green) 查找任何指定的选项。
1)数量词相关的语法
x:代表任意字符
x+: 表示X字符串出现一次或者多次
x*:表示X字符出现0次或者多次
x?:表示X字符出现0次或者1次
2)范围相关的语法
X{n}: 表示X字符恰好出现n次
X{n,}:表示X字符至少出现n次
X{n,m}:表示X字符至少出现n次,但是不超过m次
3)匹配字符相关的
X[a-z] :X字符可以是a-z中任何的一个小写字母字符
X[0-9] :x字符是一个数字字符
X[A-Za-z0-9_]:X字符可以是任意的大小字母均可或者数字或者_
mysql
mysql的基本语法
安装mysql之后
1)方式登录 dos窗口登录
2)方式登录 mysql自带的客户端登录
dos窗口
mysql -uroot -p
数据库的DDL语句(数据库的定义语句)之库的操作
注释:
-- :普通注释 当行注释
/* mysql的多行注释*/
#特殊注释
--查询当前mysql中自带的所有库有哪些
mysql> show databases;
-- 创建库
-- create database 库名;
mysql> create database myEE_2203 ;-- create database if not exists 库名; (如果存在即创建)
mysql> create database if not exists ee2203;
-- 查询创建库的字符集
-- show create database 库名;
mysql> show create database myee_2203-- 修改库的字符集
-- alter database 库名 default character set 字符集名称;
mysql> alter database myee_2203 default character set gbk;-- 删除库
-- drop database 库名 ;
mysql> drop database ee2203;-- drop database if exists 库名 ; 如果存在这个库删除
mysql> drop database if exists myee_2203;
数据库DDL语句(数据库定义语句)之建表,修改表,查询表,删除表...
mysql常见的数据类型
int :整数类型 默认最大长度11位字符,给int类型的数据的时候,当前存储的是值的真实长度
举例
年龄字段age int类型
int(字符数): 整数类型, 给int(3)这个值的时候,实际存储3位,但是赋值的时候不够3位 (使用很少)
id字段 1-----int(3) -------------------001
varchar(最大支持255个长度): 字符串类型
指定varchar(指定长度)
date:仅仅是日期类型
datetime:日期+时间类型
timestap:时间戳 (举例:管理员添加一个商品,商品上架的时间:当前系统瞬时时间 :2021-5-11 16:50分)
double:小数类型
double(几位数,小数点后保留的位数)
举例:
double(4,2): 4位,小数点后保留2位
clob:大字符类型
支持 "大文本"
blob:大字节类型
最大支持4G
建表
-- 建表之前,必须使用哪个库
-- use 库名;mysql> use ee_2203;
Database changed
mysql>
/*
create table 表名(
字段名称1 字段类型1,
字段名称2 字段类型2,
...
...
字段名称n 字段类型n
) ;*/
mysql> create table student(
-> id int,
-> name varchar(10),
-> age int,
-> gender varchar(2),
-> address varchar(50),
-> socre double(3,1)
-> );-- 查询当前库中有哪些表
-- show tables ;
mysql> show tables ;-- 查看表的结构
-- desc 表名;
mysql> desc student;-- 修改表的字段名称
-- alter table 表名 change 旧字段名称 新的字段名称 以前的字段数据类型;mysql> alter table student change gender sex varchar(2) ;
-- 修改表的字段类型 modify
-- alter table 表名 modify 字段名称 新的字段类型 ;
mysql> alter table student modify address varchar(100) ;-- 修改表:给表中添加一个新的字段
-- alter table 表名 add 字段名称 字段类型;
mysql> alter table student add description varchar(200) ;-- 复制一张表
-- create table 新表名 like 旧表名;
mysql> create table teachear like student ;-- 删除表
-- drop table 表名;
-- drop table if exists 表名;
mysql> drop table if exists teachear;
DQL 查询表中的数据
1.DML语句:数据库操作语句
插入数据的语法1:insert into 表名 values(值1,值2,值3,值4...值n); 插入全部数据
插入表的数据支持 :一次插入多条数据
insert into 表名 values(值1,值2,值3,值4...值n),(值1,值2,值3,值4...值n),(值1,值2,值3,值4...值n);
语法2:插入部分字段,没有插入的字段,默认值就是null, 也支持一次性插入多条数据
insert into 表名(字段名称1,字段名称2....) values(值1,值2...) ;
注意事项:
1)插入的这些值必须要和表中的字段对应上; 先后顺序保证一致!
2)目前没有加入"数据库约束",可以插入非法数据,举例:id重复 ,
后期需要使用数据库约束来限定用户的操作表的行为!
2.DML语句之修改表记录
一般实际开发中修改:都是带条件修改 (推荐)
update 表名 set 字段名称 = 值 where 条件 ;-- 语法2:一次性修改多个字段
-- update 表名 set 字段名称1 = 值 ,字段名称2 =值2.... where 条件;-- 语法3:不带条件 属于批量修改 (部分场景可以用的)
-- update 表名 set 字段名称= 值,字段名称2 =值2....
3. DML语句之删除表的记录
-- delete from 表名 where 条件 ; 带条件删除记录 (使用的非业务字段id删除)
-- 需求:删除id为7的学生信息
面试题:
delete from 表名 和 truncate table 表名 :两个区别?
共同点:都是可以删除全表的记录的;
不同点:
delete from 表名 ; 仅仅只是将表的全部记录删除了,表还在!
它针对id(非业务字段:设置主键并且自增长),它不影响自增长主键的这个值; (数据库约束后面讲)
truncat table 表名; 将表所有数据删除,而且还会把删除之后,
自动创建一个张一模一样的表,影响自增主键的值!
4.DQL语句最通用的语法:查询表的全部数据
-- * 代表所有字段,仅仅是自己玩的时候可以用,实际开发中不能用*,需要写上全部的字段名称
DQL语句 :数据库的查询语句 里面语法是最多的
-- 1)最基本的查询语句 select
-- 查询全表数据:select * from 表名;-- 查询全部字段的时候,给字段起一个别名 as '别名名称' ,as省略
-- 发现:字段冗余(重复度大) 字段去重 DISTINCT 后面跟上字段名称
-- 2)DQL语句之条件查询 where 关键字
-- 2.1)使用 赋值运算符=,比较运算符 <,<=,>=,>,!=, mysql中的不等于 <>
-- 2.2)Java中逻辑运算符:&&,|| mysql推荐使用 and , or
-- 2.2)针对两个范围查询: 可以使用&&,可以使用and, 也可以 "字段名称 between 值1 and 值2"in(值1,值2,值3..值n) ;in集合语句 --表示或(并集)
关于空值
- Java语言中:去判断某个条件的内容为null ,mysql语言不支持这个格式 ==null
-- mysql中判断某个字段为null,使用的语法是 is null
-- 判断某个字段不为null,使用的语法是 is not null注意:-- 关于int类型字段求和的时候,注意: int类型的值 + null 值 = null;
-- 3)DQL语句之 where条件后面加入模糊查询 ---关键字 like
-- select 字段列表 from 表名 where 字段名称 like '%xxx%' ;
-- %:代表任何多个字符或者某个字符 (使用居多):网站门户系统---"搜索商品" ,模糊搜索
-- _:代表某个单个字符
5.聚合函数查询
-- 聚合函数查询 :针对int类型 :单行单列数据
-- select 聚合函数 from 表名 where 还可以指定条件;
-- count(字段名称):查询表中记录 ,字段名称使用都是id,非业务字段
-- avg(字段名称): 查询这个字段中平均值
-- sum(字段列表):求和函数
-- max(字段名称):最大值
-- min(字段名称):最小值-- select语句嵌套select语句 --- 子查询
-- 需求:查询出学生数学成绩大于 数学平均分的学生所有信息;
-- 使用where 条件 后面带上 比较运算符...SELECT NAME '姓名',age '年龄',address '地址',math '数学成绩' FROM student3 WHERE math = (SELECT MAX(math) FROM student3) ;
6.DQL之排序查询 order by
-- select 字段列表 from 表名 order by 字段名称 排序规则(asc(默认值就是升序)或者desc 降序)
注意:-- 查询的字段列表中可以使用 分组字段
-- group by之后不能使用聚合函数
-- 默认不写排序规则,就是asc 升序-- 多个字段要同时排序,首先第一个字段排序规则,然后才是第二个字段
-- 带条件分组查询的语法: where 条件 必须放在group by 之前,否则语法错误!
-- select 字段列表包含分组字段,聚合函数.. from 表名 where 条件 group by 分组字段;
7.筛选查询 having
-- where条件,group by,having 必须先有条件,分组,然后才筛选!
-- 注意:筛选的后面可以使用聚合函数,group by的后面是不能使用聚合函数的
8.分页查询 limit
-- select 字段列表 from 表名 limit 起始行数,每页显示的条数;
-- 起始行数:从0开始算的,
-- 起始行数 = (当前页码-1)*每页显示的条数
-- 前提条件:每页显示2条,
数据库的备份和还原
方式1:图形界面化工具
备份:选中库名,右键----->BACKUP/Export 备份导出---->
选中Sql脚本,存储到本地某个磁盘上----->StructureAndData:表的结构和数据都需要备份还原:先在SqlYog将myee_2203删除了,新建库右键---->Import 导入---->选中执行execute sql 脚本
方式2:dos命令框
备份:
以管理员身份进入dos,不需要登录mysql
保存到指定路径上
mysqldump -uroot -p你的密码 库名 > 磁盘上的路径xx\xx\xx.sql
还原: 进入dos控制台,登录mysql
先将库删除,新建一个库
使用这个库 use库名;
加载指定路径的sql脚本
source 备份的sql脚本路径(D:\EE_2203\day9\code\mysql_01.sql)
数据库的约束
概念:限制用户操作数据库的一种行为(非法行为)
直接插入null值或者某个非业务字段id一直在重复
1)默认约束 default :如果某个字段没有插入数据,那么默认约束起作用了
2)非空约束 not null,当前这个字段值不能为nullCREATE TABLE stu(id INT, -- 编号NAME VARCHAR(20), -- 姓名age INT, -- 年龄address VARCHAR(50) NOT NULL-- 地址 ,加入非空约束 ) ; INSERT INTO stu VALUES(1,'高圆圆',42,'西安市'),(2,'赵又廷',45,'北京市') ;-- 地址插入一个null值 INSERT INTO stu VALUES(3,'张佳宁',32,NULL) ; -- 这种直接插入null也属于非法行为 -- 当address字段设置not null约束,直接限定用户不能插入null值 -- Column 'address' cannot be null
3)唯一约束unique (属于一种index :索引)
CREATE TABLE stu(id INT , -- 编号NAME VARCHAR(20), -- 姓名phone_number VARCHAR(11) UNIQUE -- 电话号码 必须设置唯一的 ) ; INSERT INTO stu VALUES(1,'高圆圆','13388886666'),(2,'张三','13255559999') ; INSERT INTO stu VALUES(3,'张佳宁','13388886666') ;-- 重复值 Duplicate entry '13388886666' for key 'phone_number'-- 通过sql语句将唯一约束删除-- alter table stu modify phone_number varchar(11) ; -- 修改表的字段类型 -- 删除唯一约束的语法:atler table 表名 drop index 索引的字段名称(就当前类的字段名称一致的) ; ALTER TABLE stu DROP INDEX phone_number ;-- 删除id为3的数据 DELETE FROM stu WHERE id = 3 ;-- 通过sql语句添加唯一约束,此时语法就和修改表的字段类型的语法一致了 ALTER TABLE stu MODIFY phone_number VARCHAR(11) UNIQUE ;DROP TABLE stu ;
4)主键约束 primary key(非空且唯一的) 一般和auto_increment(自增长约束)使用多一些
设置在id非业务字段上
注意: 加入自增长约束之后,不需要给id赋值了,自己自增
自增长约束可以自己插入新的id,然后在之前id上继续自增
5)外键约束 foreign key
创建约束的语法
新建表时增加外键:
[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
已有表增加外键:
ALTER TABLE 从表 ADD [CONSTRAINT] [外键约束名称] FOREIGN KEY (外键字段名) REFERENCES 主表(主 键字段名);
注意: 外键名称 命名规则:主表名称_从表名称_fk
删除外键
ALTER TABLE 从表 drop foreign key 外键名称;
-- 删除 employee 表的 emp_depid_fk 外键 alter table employee drop foreign key emp_depid_fk; -- 在 employee 表情存在的情况下添加外键 alter table employee add constraint emp_depid_fk foreign key (dep_id) references department(id);
加入外键约束:修改和删除是很麻烦,需要先修改或者删除从表数据,然后修改/删除主表数据