admin管理员组

文章数量:1122943

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中的函数定义以及调用
定义函数的 格式1

            function 函数名称(形参列表){    

                        函数的里面的业务逻辑

                                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,当前这个字段值不能为null

CREATE 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);

加入外键约束:修改和删除是很麻烦,需要先修改或者删除从表数据,然后修改/删除主表数据

本文标签: javascriptmysql 总结