第二周总结

 

目录

 

一、JavaScript

1.JavaScript注释

2.JavaScript常用的函数

3.JavaScript的使用方法

4.JavaScript定义变量以及数据类型划分

5.JavaScript常见的运算符

6.JavaScript流程控制语句

7.JavaScript事件编程的三要素

8. JavaScript流程控制语句以及事件练习

 二、JavaScript循环结构语句

1.for循环语句

2)将1~10一一输出到浏览器上

3)在控制台输出1~10之间的和

4)求1~100之间的和

5)求1~100之间的偶数和

6)求5的阶乘

7)for循环的应用

2.while循环语

1)浏览器中输出 5次"helloworld"'

2)求1~100之间的和

3.do-while循环语句

1)在控制台输出 6次,"helloworld"

三、JavaScript内置对象

1.JavaScript内置对象之Date

1)创建日期对象

2)获取年份getFullYear();

3)获取月份:getMonth();

4)获取月份中的日期值  getDate()

5)获取小时 getHours()

6)获取分getMinutes()

7)获取秒  getSeconds()

2.补充知识

1.innerHTML和innerText属性

2.每经过1秒钟,重复性的执行,产生日期时间字符串(定时器) 

3.网页时钟练习

注:增加三目运算的目的是为了输出的时分秒是00:00:00开始的

4.JavaScript内置对象之String

四、JavaScript中的函数定义以及调用

五.JavaScript内置对象之Array

1.创建Array对象三种方式

方式1

方式2

方式3

六、JavaScript自定义对象的方式

1.JavaScript自定义对象的方式1

2.JavaScript自定义对象的方式2

1)定义一个对象,不携带参数了

2)创建对象

3)追加属性

4)追加方法

5)输出这个人的基本信息

6)调用方法

3.JavaScript自定义对象的方式3

1)直接创建对象

2)追加属性

3)追加方法

4)打印出手机信息

5)调用方法

4.JavaScript自定义对象的方式4

 1)创建一个具体的类

2)追加属性

3)追加方法

4)访问方式

5)访问方法

七、JavaScript常用事件编程

1.单击点击事件函数

2.双击点击事件函数

3.获取焦点事件函数

4.失去焦点事件函数

5.选项卡发生变化的事件

1)定义函数:选项卡发生变化的事件

2)通过id="pro" 所在的select标签,获取它的标签对象

3)获取下拉菜单的内容

4)获取id="city"所在的select标签对象

5)判断选择的省份的内容是否为"陕西省"/"山西省"/"广东省"

6)定义一个城市数组

7)遍历数组,获取每一个城市,拼接省份所属市

 八、学习Mysql的DDL语句(数据库的定义语句) 库的操作

1.查看数据库

2.创建库

 方式1:

 方式2:

3.查询创建数据库的默认字符

4.修改数据库字符

5.删除库

方式1:

方式2:

九、DDL语句(数据库的定义语句)表的操作

1.MySQL数据库常用的数据类型

1)int:整数,默认长度11

2)vaechar:表示字符串类型数据

3)datetime:日期时间,可以指定日期时间

4)tempstamp时间戳(系统当前即时时间)

5)double(几位数,小数点后保留的位数):表示小数类型数据

2.创建表

1)前提条件:使用库

2)创建表

3.查询表

1)查询库中的所有表

2)查询表的结构

4.修改表

1)修改表的字段名称

2)修改表的字段类型

3)给表中新添加一列(一个新的字段名称)

4)将表中的某一列(某个字段)删除

5)复制一张一模一样的表

6)对表名重命名

7)删除表

十、SQLyog图形界面化中操作失去了语句

1.插入表记录

1)MySQL注释

2)创建表

3)查询表的结构

4)插入数据

5)查询表的记录

2.修改表的记录

1)插入一条数据

2)修改表中的记录

3)带多个条件同时修改

3.删除表中指定记录以及全表记录

 十一.常用DQL语句:数据库查询语句

1.最基本的通用查询:查询全表数据

2.查询指定列

3.通过起别名进行查询

1)对列起别名

AS可以省略

2)对表起别名(表的名字比较长),同时给列起别名

 4.带条件查询

1)where后面跟单个条件,可以使用赋值运算符=,比较运算符<,>,<=,>=,!=

2)where后面跟多个条件,并列条件或者或关系的条件

 3)where条件后面可以跟某个字段为null的格式

 5.模糊查询

1 )匹配任意字符:%

 2 )一个下划线代表一个任意字符值:_

 6.聚合函数查询

1)常见的聚合函数

7.复杂查询和聚合查询一起使用

8.排序查询

1)单个字段排序

 2)多个字段排序

十二、其他查询语句

1.分组查询

2.筛选查询

3.分页查询

 4.数据库的约束 


一、JavaScript

1.JavaScript注释

       注释就是对代码的解释和说明。目的是为了让别人和自己很容易看懂,一看就知道这段代码是做什么用的。JavaScript的注释有两种

1)当行注释

//当行注释

快捷键:ctrl+/

2)多行注释

/*
    多行注释
*/

快捷键:shift + alt + a

2.JavaScript常用的函数

1)向浏览器输出内容

document.write("HelloWprld!!");

2)可以在浏览器的控制台输出

console.log("HelloWorld!!");

3)弹出一个提示框

window.alert("HelloWorld!!");

由于window对象是浏览器内容的顶级对象,代表窗口,所以频繁使用可以不写.简写为:

alert("HelloWorld!!");

3.JavaScript的使用方法

       1)行内式:可以将单行或少量js代码写在html标签的事件属性中(以on开头的属性),如:onclink

<input type="button" value="点击查询" onclick="getMonth"() />

       2)内嵌式:在head标签体中指定script标签书写js的多行代码,是常用的使用方法

<script>
    document.write("HelloWorld!");
    console.log("HelloWorld!");
    alert("HelloWorld!");
</script>

       3)外部式:

       1)在js文件夹中,单独创建后缀为.js的文件


        2)在xxx.js文件中,书写js代码

//向浏览器打印了一个内容
document.write("hello,JavaEE2204!");
//弹一个提示框
alert("今天天气不错!") ;
//浏览器控制台打印内容
console.log("hello,JavaEE2204");

        3)在当前某个html页面中,导入xxx.js文件

 <script src="js/01.js"></script>;

4.JavaScript定义变量以及数据类型划分

       1)定义变量在js中定义变量使用var定义.因为js是弱类型语言,所以var可以省略并且一个变量可以重复定义,但后面的值会覆盖前面的值。同时var可以定义任何数据类型

            var a=10;
			var a=20;//重复定义变量在js中是支持的,在Java语言中不支持
			var b=3.14;
			var c="HelloWorld";
			var d='a';//单引号括起来的单个内容:字符
			var e='abc';//虽然是单引号,但是是多个内容,浏览器解析为字符串内容
			var f;
			var g=new Object();//Object对象:是js内置对象的模板,提供所有js内置对象的 通用功能
			var s=new String("hello");

       2)数据类型划分

      在js中,查看一个变量的数据类型:使用函数typeof(变量名)
            1)无论是整数还是小数,都是number类型(基本类型)---自动提升为ja内置对象Number
            2)无论是字符串还是字符,都是string类型(基本类型)---自动提升为String
            3)underfined:未定义类型,就是定义变量没有给变量赋值(没有意义)
            4)object类型(对象类型)---自动提升为Object:所有js内置对象的模板

5.JavaScript常见的运算符

运算符:针对不同的数据类型操作的

  1. 算术运算符:+,-,*,/,%(模,求余数)
    document.write((a+b)+"<br/>") ;
    document.write((a-b)+"<br/>") ;
    document.write((a*b)+"<br/>") ;
    document.write((a/b)+"<br/>") ;
    document.write((a%b)+"<br/>") ;
  2. 赋值运算符:=  var a=10;将=右边的值赋值给左边
    //把10赋值给a  
    var a = 10 ;
    //将=右边的值赋值给左边的这个变量a
  3. 比较运算符:>,<,>=,<=,==,!=
    document.write((a>b)+"<br/>") ;
    document.write((a<c)+"<br/>") ;
    document.write((a>=b)+"<br/>") ;
    document.write((a<=c)+"<br/>") ;
    document.write((a==b)+"<br/>") ;
    document.write((a!=c)+"<br/>") ;
  4. 逻辑运算符

                  基本运算符:

                         逻辑单与 & ,有false,则false
                         逻辑单或 | ,有true,则true
                          逻辑非 !  
                                        非true,则false
                                        非false,则true

document.write(a&b) ;
document.write((a|b) ;
document.write(!a) ;

                   一般情况下,开发中用的都是&&,||

                          逻辑双与&&:多个条件是并列关系,必须同时满足条件,有false则false

                          逻辑双或||:多个条件是或者的关系,有一个成立就成了,有true则true

document.write((a==b) && (a+b)==7) ; 
document.write((b+c)==7 || (a==3)+"<br/>") ; 

6.JavaScript流程控制语句

流程控制语句分为三大类

        顺序结构语句:代码从上而下加载,比较简单

        选择结构语句:

1)if语句

格式1:

if(表达式){
     语句1;
}

 执行流程:

         先判断表达式是否成立,如果成立,如果成立才能执行语句1

 格式二:开发中使用最多 

if(表达式){
     语句1;
}else{
     语句2;
}

 执行流程:

        1)先判断表达式是否成立。成立,则执行语句1

        2)否则不成立,执行语句2

格式三:针对多种结果判断

if(表达式){
	 语句1;
}else if(){
	 语句2;
... ...
}else{
	语句n;
}	

执行流程:

       先判断表达式1是否成立,如果成立,执行语句1

       如果不成立,继续判断表达式2是否成立,

       如果成立,执行语句2,不成立,依次执行下面的语句..

       如果上面都不成立,执行else中的语句n;

举例:

以判断两个数中的最大值为例

<script>
var a=30;
var b=20;
var max;
if(a>b){
	max=a;
}else{
	max=b;
}
	document.write("最大值是:"+max);
</script>

if语句的嵌套

举例:

以三个数中的最大值为例

<script>
var n=70;
var m=80;
var z=40;
var max2;
if(m>n){
	//m大
	if(m>z){
		max2=m;
	}else{
		//z大
		max2=z;
	}
    }else{
		//n大
		if(n>z){
			max2=n;
		}else{
			//z大
			max2=z;
		}
}
document.write("最大值是:"+max2)
</script>

2)switch语句

switch(变量){
	case 值1://js中case语句后面既可以是常量,也可以是变量
	    语句1;
	break;//结束,中断的意思
	case 值2:
		语句2;
	break;
	...
	default:
		语句n;
	break;
}

执行流程:

        1)首先判断变量的值和值1是否匹配

              如果匹配,执行语句1,switch语句结束

        2)如果不匹配,继续和case后面的值二进行比较,成立,则执行语句2,break结束

        ...

        3)如果上面都不匹配,则执行语句n,switch语句结束

switch语句结束条件:

         1)遇见break结束

         2)程序默认执行末尾

 注意:default语句可以在语句中的任何位置,但是如果在语句中,break最后别省略,否则如果case都不成立,执行default语句,会有擦色穿透现象;如果在switch语句的末尾,break可以省略

7.JavaScript事件编程的三要素

事件编程三要素

       1)事件源---指的就是html标签

<body>
		//写一个普通按钮 
		//1)input标签:事件源
		<input type="button" value="点我试试"/>
</body>

       2)编写事件监听器---就写一个函数(js代码) function 函数名称(形式参数名1,形式参数名2,...)

<script>
//function 函数名称(形式参数名1,形式参数名2,...){...业务逻辑...}
//2)编写一个函数,事件监听器
function myClick(){
	alert("点击事件触发了...")
}
</script>

       3)绑定事件监听器---就是在标签中有一些onxxx属性和函数名称进行绑定

<body>
   <input type="button" value="点我试试" onclick="myClick()" />//3)绑定2)里面的函数名称 
</body>

事件:
        单击点击                click
        双击点击                dbclick
        失去焦点                blur
        获取焦点                focus
        选项卡发生变化的事件    change

8. JavaScript流程控制语句以及事件练习

举例:

根据输入的值,判断季节
        3,4,5月   春季
        6,7,8月   夏季
        9,10,11月  秋季
        12,1,2月  冬季

 <script>
		     //编写事件监听器
		     function getMonth(){

			 //1)通过dom操作,获取id="month"的这个标签对象,获取它的value属性的值
			 var inputObj = document.getElementById("month") ; 
			 //document.getElementById("id属性值") 固定js的dom操作语法
			 
			 //获取输入框的内容
			 content = inputObj.value ;
			 // alert(content) ;
			 //alert(typeof(content)) ;
			
			 //完成判断
			 //在js 字符串==整数,它会自动会将字符串---转换成整数
			 if(content==3|| content==4 || content == 5){
				 alert("属于春季") ;
			 }else if(content==6|| content==7 || content == 8){
				 alert("属于夏季") ;
			 }else if(content==9|| content==10 || content == 11){
				 alert("属于秋季") ;
			 }else if(content==1|| content==2 || content == 12){
				 alert("属于冬季") ;
			 }else{
				 alert("对不起,属于非法数据") ;
			}
		 }
		 	
	</script>
	</head>
	<body>
		<input type="text" id="month" placeholder="请输入月份的值" />
		<!-- 1)事件源 -->
		<input type="button" value="点击查询" onclick="getMonth()" />
	</body>

 二、JavaScript循环结构语句

循环语句的核心思想是针对重复数据操作.

分类:

1)for循环

2)While循环

3)do-while循环

1.for循环语句

for循环语句是开发中最常见的,当明确循环的次数时,多使用for循环

for循环格式:

//for循环格式:
for(初始化语句;条件表达式;控制体语句){
		循环语句
	}

执行流程:

       1)首先初始化语句执行一次,给变量赋值

       2)判断条件表达式是否成立,如果成立,就执行循环体语句

       3)继续执行控制体语句(也称为"步长语句"),++或者-- 对变量自增或者自减1

       4)继续判断条件表达式是否成立,如果成立,继续执行循环体语句,执行控制体语句,

       ...

       ...

       5)直到条件表达式不成立,for循环结束!

举例:

1)需要在浏览器中打印五次"helloeorld"

for(var i=1;i<=5;i++){
    document.write("helloworld"+"<br/>");
}

2)将1~10一一输出到浏览器上

for(var i =1; i <=10 ; i++){
	document.write(i+"<br/>") ;
}

3)在控制台输出1~10之间的和

var sum = 0 ;
for(var i = 1 ; i<=10 ; i ++){
	 sum = sum + i ;
}
document.write("1-10之间的和是:"+sum) ;

4)求1~100之间的和

var sum2 = 0 ; 
for(var i = 1 ; i <=100 ; i ++){
	sum2 = sum2 + i ;
}
document.write("1-100之间的和是:"+sum2)

5)求1~100之间的偶数和

var sum3 = 0 ; 
for(var i = 1 ; i <=100 ; i ++){
    //加入逻辑判断
    if(i % 2 ==0){
        //sum3 和i进行求和,赋值给sum3
	    sum3 = sum3+i ;
    }
}
document.write("1-100之间的偶数是:"+sum3) ;

6)求5的阶乘

var jc = 1 ;
for(var i = 1; i <=5 ; i ++){
	jc*=i ; // jc = jc * i ; 
		    //1)jc = 1 * 1 = 1
			//2)i++,i=2,2<=5 ,  jc = 1 * 2 = 2
			//3)i++,i=3,3<=5,jc = 2 * 3
			//4)i++,i=4,4<=5, jc=6 * 4
			//5)i++,i=5,5<=5,jc=24 * 5
			//6)i++,i=6, 6<=5 ,不成立,循环结束!
}
document.write("5的阶乘是:"+jc) ;

7)for循环的应用

在浏览器中输出所有的水仙化数!

//1)明确三位数,使用for循环 100-999
for(var i = 100 ; i <=999; i++){
    //确定每个位数据值
    var ge = i % 10 ; 		
	var shi = Math.floor(i/10 % 10) ;
	var bai =  Math.floor( i/10 /10 % 10) ;
	//满足条件,i ==(ge*ge*ge+shi*shi*shi+bai*bai*bai)
	if(i==(ge*ge*ge+shi*shi*shi+bai*bai*bai)){
		document.write("水仙花数是:"+i+"<br/>");
	}
}

2.while循环语

当不明确循环的次数的时候,使用while句

 while格式
             初始化语句;
             while(条件表达式){
                 循环体语句;
                 控制体语句(步长语句) ;  
             }

 初始化语句;
 while(条件表达式){
       循环体语句;
       控制体语句(步长语句) ;  
 }

执行流程:
                1)初始化语句对变量赋值
                2)判断条件表达式是否成立,
                成立,则执行循环体,一次执行步长语句;
                3)再次判断条件表达式是否成立,....
                ..
                4)条件不成立,循环结束!

举例:

1)浏览器中输出 5次"helloworld"'

var i = 1 ;
while(i<=5){
    document.write("helloworld<br/>") ;
	i ++ ;
}

2)求1~100之间的和

var sum = 0 ;	
//初始化语句
var m = 1; 
while(m<=100){
	sum = sum +  m ;
	m ++ ;
}
document.write("1-100之间的和是:"+sum) ;

3.do-while循环语句

 do-while循环语句在实际开发场景下,用的很少!

最大的特点:即使条件不成立,循环体至少执行一次!

这也是do-while和for以及while循环最大的区别:

初始化语句;
do{
    循环体语句;
	控制体语句(步长语句);
}while(条件表达式) ;

 执行流程:
                1)初始化语句对变量赋值
                2)直接执行循环体语句,步长语句进行++或者--,然后执行条件是否成立
                3)成立,继续执行循环体以及步长语句
                ...
                4)条件表达式成立,不成立

举例:

1)在控制台输出 6次,"helloworld"

var x = 1;
do{
	document.write("我爱高圆圆<br/>") ;
	x++ ;
}while(x<=6) ; 

三、JavaScript内置对象

1.JavaScript内置对象之Date

Date对象:表示当前日期对象 

如何创建js内置对象之Date

1)创建日期对象

 //创建日期对象
var dateStr = new Date() ;

2)获取年份getFullYear();

//getFullYear()获取当前年份
var year = dateStr.getFullYear() ;
document.write(year+"年") ;

3)获取月份:getMonth();

注意:获取的是0-11之间的整数,后面加1,(1-12月份的值)

//获取月份:getMonth()
var month = dateStr.getMonth()+1 ;
document.write(month+"月") ;

4)获取月份中的日期值  getDate()

//获取月份中的日期值  getDate() ;
var date = dateStr.getDate() ;
document.write(date+"日&ensp;&ensp;") ;

5)获取小时 getHours()

//获取小时getHours()
var hours=dateTip.getHours();
document.write(hours+":") ;

6)获取分getMinutes()

//获取分   getMinutes()
var minutes=dateTip.getMinutes();
document.write(minutes+":") ;

7)获取秒  getSeconds()

//获取秒  getSeconds()
var seconds=dateTip.getSeconds();
document.write(seconds) ;

2.补充知识

1.innerHTML和innerText属性

任何标签都有这俩个属性:

                                        innerHTML 
                                        innerText
都表示设置标签的文本内容

如何动态给span标签或者div块标签等等添加文本内容呢?
使用dom操作

 1)给标签设置id属性
 通过一个固定的语法:获取id="属性值"的标签对

var 标签对象 = docuement.getElementById("id属性值") ;

2)innerHTML可以加入常用的html标签进行渲染

标签对象.innerHTML = "<h1>hello</h1>";

innerText不会渲染标签!会将标签输出浏览器中

标签对象.innerText = "设置普通文本"  ,"<h1>hello</h1>",

2.每经过1秒钟,重复性的执行,产生日期时间字符串(定时器) 

   window对象里面setInterval(任务函数(),毫秒值) ;
   window.setsetInterval("任务函数()",毫秒值)  ,每经过这个毫秒值后,重复执行任务函数

window.setsetInterval("任务函数()",毫秒值) 

可以省略window

.setTimeout("任务函数名称()",毫秒值);

可以应用于网页时钟

3.网页时钟练习

<script>
	function myDateTip(){
		//先将日期对象创建出来,获取年,月,日,时,分,秒
		var dateTip=new Date();
		//拼接出日期时间字符
		var year=dateTip.getFullYear();
		var month=dateTip.getMonth()+1;
		var day=dateTip.getDate();
		var hours=dateTip.getHours();
		var minutes=dateTip.getMinutes();
		var seconds=dateTip.getSeconds();
		
		hours=hours<10?"0"+hours:hours;
		minutes=minutes<10?"0"+minutes:minutes;
		seconds=seconds<10?"0"+seconds:seconds;
		
		var myDate=year+"-"+month+"-"+day+"&ensp;&ensp;"+hours+":"+minutes+":"+seconds;
		//需要将myDate这个日期时间字符串,登台添加到span标签的文本内容中
		//通过"id=spantip",获取span标签对象
		var span=document.getElementById("spanTip");
		//设置span标签的文本内容:innerHTML
		span.innerHTML="<h3>"+myDate+"</h3>"
	}	
		//每经过1秒钟,重复性的执行,产生日期时间字符串(定时器)
		window.setInterval("myDateTip()",1000);

注:增加三目运算的目的是为了输出的时分秒是00:00:00开始的

hours=hours<10?"0"+hours:hours;
minutes=minutes<10?"0"+minutes:minutes;
seconds=seconds<10?"0"+seconds:seconds;

4.JavaScript内置对象之String

js语言中,String对象,指的就是字符串数据值

创建一个js的字符串对象         

var 对象名  = new String("字符串值") ;

简写为

var 对象名  = "字符串值" ;

String对象的功能是最多的
1)常用的功能charAt() 获取指定索引处的字符
2)concat(字符串):拼接功能,将原始内容和当前字符串进行拼接
   没有学习这个功能之前
   使用"+"进行拼接

document.write(对象名+"字符串") ;

  拼接功能

document.write(对象名.concat("字符串"));

3)可以给字符串进行颜色标记  fontcolor ("颜色值(rgb(255,198,255),颜色单词..)")

document.write(对象名.fontcolor("green")) ;

4)indexOf ("字符串"):获取当前字符串中的第一次在大字符串中出现的角标值(从0开始算)

document.write(s.indexOf("owo")) ;

四、JavaScript中的函数定义以及调用

js中定义函数的格式
写法1:
       function 函数名称也就是你的方法名(形式参数列表....){
                完成业务代码
                }

//方式1:
//定义函数
function 函数名称(形式参数列表){
    //完成函数的业务逻辑
    //直接输出 document.write("xxxx") ;

调用函数:

//调用函数:单独调用
函数名称(实际参数列表) ;

写法2:

//方式2: (推荐的)
//定义函数
function 函数名(形式参数列表){a,b
    //完成业务逻辑操作
    return 结果值;
}

赋值调用

//调用函数 赋值调用
var 结果变量 = 函数名称(实际参数列表) ; 
//如果进一步的需求,继续去使用  结果变量 去其他操作!

注意事项:
                    1)形式参数列表中不能带var的,直接写参数名称即可
                    2)在定义的函数里面可以直接输出内容

var 变量= 形式参数进行运算;
直接输出结果;

或者是
                   在js中函数里面是可以带 return 返回一个具体的结果值;
                  调用的时候,赋值调用

var 结果 = 函数(实际参数) ;

举例:需要定义一个函数(方法),这个方法要进行两个数据求和

写法1

//需要定义一个函数(方法),这个方法要进行两个数据求和
//function sum(var a, var b){
function sum( a, b){			
	//定义变量result
	var result = a+ b ;
	document.write("结果是:"+result) ;

写法2

//定义两个数据求和
function sum(a,b){
    //return 表示结束方法,并带给调用者一个结果;
	  return a+b ;
}
//赋值调用(实际开发中,它使用最多)
var myResult = sum(40,50) ;
document.write("两个数据之和是:"+myResult) ;

五.JavaScript内置对象之Array

在js中Array对象特点,跟Java中的数组不一样的,
 js是一个弱类型语言,数组对象中不存在角标越界,元素可以不断扩容,而且js数组对象可以存储任何类型的元素

1.创建Array对象三种方式

方式1

var  数组对象名 = new Array() ;//不指定长度
var arr=new Array();
/*分配数组元素
数组的对象名称[索引值]=实际值;  索引值从0开始*/
arr[0]=10;
arr[1]=20;
arr[2]=30;
arr[3]=40;
//对象名.length属性:获取长度
alert(arr.length);	
for(var i=0;i<arr.length;i++){
	document.write(arr[i]+"<br/>");
}

方式2

var  数组对象名 = new Array(size) ;//指定数组长度
var arr=new Array(4);
/*分配数组元素
数组的对象名称[索引值]=实际值;  索引值从0开始*/
arr[0]=10;
arr[1]=20;
arr[2]=30;
arr[3]=40;
arr[4]=50;
//对象名.length属性:获取长度
alert(arr.length);
for(var i=0;i<=arr.length-1;i++){
	document.write(arr[i]+"<br/>");
}

方式3

var  数组对象名 = new Array([元素1,元素2,...]) ;
//它可以简化为
var  数组对象名 = [元素1,元素2,...] ;
var arr=[10,20,30,40,50,"helloworld",'a',false,new Object()];
//对象名.length属性:获取长度
alert(arr.length);
for(var i=0;i<arr.length;i++){
document.write(arr[i]+"<br/>");

虽然可以存储任何类型,但是实际开发中,具体的元素类型肯定时统一的

不管js还是java,数组都有一个length属性:获取数组长度

六、JavaScript自定义对象的方式

1.JavaScript自定义对象的方式1

定义一个对象,格式和定义函数相同的,形式参数不能带var

//方式1:
function 对象名(形式列表...)
//定义一个对象
function 对象(属性1,属性2,属性3...){  //属性就是某个真实世界事物的特征
	//给属性赋值
	//给对象添加功能(方法)
}
创建对象
var 对象名 = new 对象(实际参数1,实际参数2,实际参数3....)

具体实例

1)定义一个人对象

//定义一个人对象 
function Person(name,age,gender,address){//姓名,年龄,性别,住址  属性

2)给属性值

//给属性赋值
//this.属性名称 = 形式参数值;			
//=号左边name:就相当于要给Person对象添加name值		
this.name = name ;//=号右边name 当前形式参数里面的name
this.age = age ;
this.gender = gender ;
this.address = address; 

3)给对象添加功能(方法)

//人会说英语
//this.方法名 = function(){}
this.speak = function(a){ //方法里面参数   a="英语"
    alert("会说"+a) ;//弹出提示框
}
//人会玩王者荣耀
this.playGame = function(){
	alert("会玩"+"王者荣耀") ;
}

4)创建一个具体的人

//创建一个具体的人:创建对象
			//var 对象名 = new 对象(实际参数1,实际参数2,实际参数3....)
			var p = new Person("xxx",20,"女","xxxx") ;

5)输出这个人的基本信息

//输出这个人的基本信息
//对象名.属性名 =获取内容
document.write("这个人的姓名是:"+p.name+",这个人的年龄是:"+p.age+",性别是:"+p.gender
			+",住址是:"+p.address) ;

6)调用方法

//调用方法
//对象名.方法名() ;	
p.speak("英语") ;
p.playGame() ;

2.JavaScript自定义对象的方式2

1)定义一个对象,不携带参数了

//定义一个对象
function Person(){
				
}

2)创建对象

//创建对象 人对象
var p=new Person();

3)追加属性

//自己追加属性
//对象名.追加的属性名称=实际值;
p.name="xxx";
p.age=19;
p.gender="男";
p.address="xx";

4)追加方法

//追加方法
//对象名.追加的方法名=function(空参/带参数){...}
p.speak=function(a){
	alert("会说"+a);
}
p.playGame=function(b){
	alert("会玩"+b);
}

5)输出这个人的基本信息

document.write("这个人的姓名是"+p.name+","+"年龄是"+p.age+","+"性别是"+p.gender+","+"住址是"+p.address);

6)调用方法

p.speak("英语");
p.playGame("王者荣耀");

3.JavaScript自定义对象的方式3

利用js内置对象:Object,代表的所有对象的模板

//利用js内置对象:Object,代表的所有对象的模板!
var 对象名 = new Object() 

1)直接创建对象

//直接创建对象
var p = new Object() ;

2)追加属性

//追加属性
//对象名.属性名 = 值;
p.brand = "华为mate30pr0" ;// brand:品牌
p.price = 4699 ; //price:价格
p.color = "粉翠绿" ; //color:手机颜色
p.memory = "64G" ; //memory:手机内存

3)追加方法

//追加方法
//对象名.追加的方法名 = function(空参/带参数) {...}	
//打电话
p.call = function(toName){//高圆圆
	alert("这个手机给可以给"+toName+"打电话了") ;
}
//发短信
p.sendMessage = function(){
	alert("可以发短信") ;
}

4)打印出手机信息

//打印出手机信息
document.write("手机品牌是:"+p.brand+",它的价格是:"+p.price+",机身颜色是:"+p.color+",它的机身内存是:"+p.memory) ;

5)调用方法

p.call("高圆圆") ;
p.sendMessage() ; 

4.JavaScript自定义对象的方式4

后期经常用到(重点),json数据格式(也称为 "字面量值的方式") 

json:Js对象简谱,是一种数据交互的格式(体现,前后端交互,使用json传参)

json数据解析速度非常快!

var 对象名 = {"key1":value1,"key2":value2....}

现在描述一个具体学生事物,有姓名,年龄,性别,学号这个几个属性    

 1)创建一个具体的类

 var student = {

 }

2)追加属性

//追加属性
"name":"xxx",
"age":19 ,
"gender" :"男",
"address":"xxx",

3)追加方法

 //追加方法:
//"方法名":function(){...}						 
//学习
"study":function(){
		alert("学习xxx") ;
}

4)访问方式

//访问方式:   var 值 = 对象名.key	 ;		
document.write("学生的姓名是:"+student.name+"<br/>") ;
document.write("学生的年龄是:"+student.age+"<br/>") ;
document.write("学生的性别是:"+student.gender+"<br/>") ;
document.write("学生的住址是:"+student.address+"<br/>") ;

5)访问方法

//访问方法
//对象名.方法名() ;
student.study() ;

七、JavaScript常用事件编程

这些所有的事件在标签上 只需要在事件名称前面加上on..,将指定的事件绑定到onxx属性上
        
       1)点击相关的事件
                  单击  click    -- onclick属性
                  双击  dbclick  -- ondblick属性
       2)焦点事件
                   获取焦点  focus ----> onfocus属性
                   失去焦点  blur ----> onblu       
       3)选项卡发生变化的事件,一般用在select下拉菜单中
                   事件名称 change  ---->onchange属性

1.单击点击事件函数

<body>
		<input type="button" value="click" onclick="testClick()"/>
</body>
<script>
		//单击点击事件函数
		function testClick(){
			alert("单击事件触发了");
</script>

2.双击点击事件函数

<body>
		<input type="button" value="dbclick" oncdblclick="testDbClick()"/>
</body>
<script>
		//双击点击事件函数
		function testDbClick(){
			alert("双击事件触发了");
</script>

3.获取焦点事件函数

<body>
    用户名:<input type="text" value="请输入用户名" id="username" 
		onfocus="textFocus()" />
</body>
<script>
    //获取焦点事件函数
		function textFocus(){
			//将文本输入框的value属性值清空
			//dom操作:通过id="username"获取input标签对象
			var a=document.getElementById("username");
			a.value="";//清空就是定义一个空字符串
		}
</script>

4.失去焦点事件函数

<body>
    用户名:<input type="text" value="请输入用户名" id="username" onblur="testBlur()" /><span id="tip"></span>
</body>
<script>
    //失去焦点事件函数
		function testBlur(){
			//需求:当鼠标移除文本输入框,触发失去焦点事件
			//获取文本输入的内容,判断它的内容是否是王炜斌,如果不是,在文本输入框后面提示
			//1)获取文本输入框的内容
			var username= document.getElementById("username").value;
			//2)获取id="tip"所在的span标签对象
			var a=document.getElementById("tip");
			//逻辑判断
			if(username!="xxx"){
				a.innerHTML="×".fontcolor("red");
			}else{
				a.innerHTML="√".fontcolor("green");
			}
			
		}
</script>

5.选项卡发生变化的事件

<body>
籍贯:
    <select onchange="testChange()">
	    <option value="请选择">请选择</option>
	    <option value="陕西省">陕西省</option>
	    <option value="山西省">山西省</option>
	    <option value="广东省">广东省</option>
    </select>
</body>

1)定义函数:选项卡发生变化的事件

function testChange(){

}

2)通过id="pro" 所在的select标签,获取它的标签对象

<body>
籍贯:
	<select onchange="testChange()" id="pro">
		<option value="请选择">请选择</option>
		<option value="陕西省">陕西省</option>
		<option value="山西省">山西省</option>
		<option value="广东省">广东省</option>
	</select>
		
</body>
<script>

    //定义函数:选项卡发生变化的事件
    function testChange(){

        //通过id="pro" 所在的select标签,获取它的标签对象
        var province = document.getElementById("pro");
}
</script>

3)获取下拉菜单的内容

<body>
籍贯:
	<select onchange="testChange()" id="pro">
		<option value="请选择">请选择</option>
		<option value="陕西省">陕西省</option>
		<option value="山西省">山西省</option>
		<option value="广东省">广东省</option>
	</select>
		
</body>
<script>

    //定义函数:选项卡发生变化的事件
    function testChange(){

        //通过id="pro" 所在的select标签,获取它的标签对象,同时获取下拉菜单的内容
        var province = document.getElementById("pro").value;
}
</script>

给第二个select标签(城市所在的下拉菜单),获取它的标签对象,动态拼接城市

4)获取id="city"所在的select标签对象

<body>
籍贯:
	<select onchange="testChange()" id="pro">
		<option value="请选择">请选择</option>
		<option value="陕西省">陕西省</option>
		<option value="山西省">山西省</option>
		<option value="广东省">广东省</option>
	</select>
	<select id="city">
		<!-- <option value="西安市">西安市</option> 
			 <option value="渭南市">渭南市</option>
	    -->
	</select>
</body>
<script>

    //定义函数:选项卡发生变化的事件
    function testChange(){

        //通过id="pro" 所在的select标签,获取它的标签对象,同时获取下拉菜单的内容
        var province = document.getElementById("pro").value;

        //获取id="city"所在的select标签对象
        var city =  document.getElementById("city") ;
}
</script>

5)判断选择的省份的内容是否为"陕西省"/"山西省"/"广东省"

<body>
籍贯:
	<select onchange="testChange()" id="pro">
		<option value="请选择">请选择</option>
		<option value="陕西省">陕西省</option>
		<option value="山西省">山西省</option>
		<option value="广东省">广东省</option>
	</select>
	<select id="city">
		<!-- <option value="西安市">西安市</option> 
			 <option value="渭南市">渭南市</option>
	    -->
	</select>
</body>
<script>

    //定义函数:选项卡发生变化的事件
    function testChange(){

        //通过id="pro" 所在的select标签,获取它的标签对象,同时获取下拉菜单的内容
        var province = document.getElementById("pro").value;
        //获取id="city"所在的select标签对象

        var city =  document.getElementById("city") ;
        //判断选择的省份的内容是否为"陕西省"/"山西省"/"广东省"
			if(province=="陕西省"){
				
			}
			
			if(province=="山西省"){
				
				
				
			}
			
			if(province=="广东省"){
			
				}
				
			}
}
</script>

6)定义一个城市数组

<body>
籍贯:
	<select onchange="testChange()" id="pro">
		<option value="请选择">请选择</option>
		<option value="陕西省">陕西省</option>
		<option value="山西省">山西省</option>
		<option value="广东省">广东省</option>
	</select>
	<select id="city">
		<!-- <option value="西安市">西安市</option> 
			 <option value="渭南市">渭南市</option>
	    -->
	</select>
</body>
<script>

    //定义函数:选项卡发生变化的事件
    function testChange(){

        //通过id="pro" 所在的select标签,获取它的标签对象,同时获取下拉菜单的内容
        var province = document.getElementById("pro").value;

        //获取id="city"所在的select标签对象
        var city =  document.getElementById("city") ;

        //判断选择的省份的内容是否为"陕西省"/"山西省"/"广东省"
			if(province=="陕西省"){

				//定义一个城市数组
				var arr = ["西安市","渭南市","咸阳市","宝鸡市"] ;
			}
			
			if(province=="山西省"){

				//定义一个城市数组
				var arr = ["太原市","晋中市","临汾市","大同市"] ;
			}
			
			if(province=="广东省"){

			    //定义一个城市数组
				var arr = ["广州市","东莞市","佛山市","深圳市"] ;
				
			}
}
</script>

7)遍历数组,获取每一个城市,拼接省份所属市

<body>
籍贯:
	<select onchange="testChange()" id="pro">
		<option value="请选择">请选择</option>
		<option value="陕西省">陕西省</option>
		<option value="山西省">山西省</option>
		<option value="广东省">广东省</option>
	</select>
	<select id="city">
		<!-- <option value="西安市">西安市</option> 
			 <option value="渭南市">渭南市</option>
	    -->
	</select>
</body>
<script>

    //定义函数:选项卡发生变化的事件
    function testChange(){

        //通过id="pro" 所在的select标签,获取它的标签对象,同时获取下拉菜单的内容
        var province = document.getElementById("pro").value;

        //获取id="city"所在的select标签对象
        var city =  document.getElementById("city") ;

        //判断选择的省份的内容是否为"陕西省"/"山西省"/"广东省"
			if(province=="陕西省"){

				//定义一个城市数组
				var arr = ["西安市","渭南市","咸阳市","宝鸡市"] ;

                //遍历数组,获取每一个城市
				for(var i = 0 ; i < arr.length;i++){
					//拼接<option value="西安市">西安市</option> 文本
					//给city标签对象(代表就是第二个select标签对象)拼接上面的文本
					city.innerHTML +="<option value="+arr[i]+">"+arr[i]+"</option> "
                }
			}
			
			if(province=="山西省"){

				//定义一个城市数组
				var arr = ["太原市","晋中市","临汾市","大同市"] ;

                //遍历数组,获取每一个城市
				for(var i = 0 ; i < arr.length;i++){
					//拼接<option value="太原">太原市</option> 文本
					//给city标签对象(代表就是第二个select标签对象)拼接上面的文本
					city.innerHTML +="<option value="+arr[i]+">"+arr[i]+"</option> "
				}
                
			}
			
			if(province=="广东省"){

			    //定义一个城市数组
				var arr = ["广州市","东莞市","佛山市","深圳市"] ;

				//遍历数组,获取每一个城市
				for(var i = 0 ; i < arr.length;i++){
					//拼接<option value="渭南市">渭南市</option> 文本
					//给city标签对象(代表就是第二个select标签对象)拼接上面的文本
					city.innerHTML += "<option value="+arr[i]+">"+arr[i]+"</option> "
                }
				
		}
    }
</script>

优化:上述代码实现的结果是选择一个省份,获取的城市会叠加,因为是一个数组

所以需要将city的innerHTML清空掉,

这个清空放在判断选择的省份的内容是否为"陕西省"/"山西省"/"广东省"之前

<body>
籍贯:
	<select onchange="testChange()" id="pro">
		<option value="请选择">请选择</option>
		<option value="陕西省">陕西省</option>
		<option value="山西省">山西省</option>
		<option value="广东省">广东省</option>
	</select>
	<select id="city">
		<!-- <option value="西安市">西安市</option> 
			 <option value="渭南市">渭南市</option>
	    -->
	</select>
</body>
<script>
    //定义函数:选项卡发生变化的事件
    function testChange(){
        //通过id="pro" 所在的select标签,获取它的标签对象,同时获取下拉菜单的内容
        var province = document.getElementById("pro").value;
        //获取id="city"所在的select标签对象
        var city =  document.getElementById("city") ;

        //将city的innerHTML清空掉
		city.innerHTML = "" ;

        //判断选择的省份的内容是否为"陕西省"/"山西省"/"广东省"
			if(province=="陕西省"){

				//定义一个城市数组
				var arr = ["西安市","渭南市","咸阳市","宝鸡市"] ;

                //遍历数组,获取每一个城市
				for(var i = 0 ; i < arr.length;i++){
					//拼接<option value="西安市">西安市</option> 文本
					//给city标签对象(代表就是第二个select标签对象)拼接上面的文本
					city.innerHTML +="<option value="+arr[i]+">"+arr[i]+"</option> "
                }
			}
			
			if(province=="山西省"){

				//定义一个城市数组
				var arr = ["太原市","晋中市","临汾市","大同市"] ;

                //遍历数组,获取每一个城市
				for(var i = 0 ; i < arr.length;i++){
					//拼接<option value="太原">太原市</option> 文本
					//给city标签对象(代表就是第二个select标签对象)拼接上面的文本
					city.innerHTML +="<option value="+arr[i]+">"+arr[i]+"</option> "
				}
                
			}
			
			if(province=="广东省"){

			    //定义一个城市数组
				var arr = ["广州市","东莞市","佛山市","深圳市"] ;

				//遍历数组,获取每一个城市
				for(var i = 0 ; i < arr.length;i++){
					//拼接<option value="渭南市">渭南市</option> 文本
					//给city标签对象(代表就是第二个select标签对象)拼接上面的文本
					city.innerHTML += "<option value="+arr[i]+">"+arr[i]+"</option> "
                }
				
		}
    }
</script>

实现省市联动

 八、学习Mysql的DDL语句(数据库的定义语句) 库的操作

1.查看数据库

-- 查询mysql数据库本身在带的所有数据库
-- show database
mysql>show databases;

 运行结果:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |   -- mysql默认的配置库
| mysql              |   -- mysql库---里面有user表,代表当前管理员用户 root用户
| performance_schema |   -- mysql配置库(mysql性能相关的)
| test               |   -- 测试库 里面空表,可以在进行测试练习,创建表,...
+--------------------+
4 rows in set (0.01 sec)

2.创建库

 方式1:

-- 创建库
-- create database 库名; 直接创建库
mysql> create database MyEE_2204;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| myee_2204          |        |
| mysql              |
| performance_schema |
| test               |
+--------------------+
6 rows in set (0.00 sec)

 方式2:

-- create database if not exists 库名;   如果不存在这个库,创建
mysql> create database MyEE_2204;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| myee_2204          |       |
| mysql              |
| performance_schema |
| test               |
+--------------------+
6 rows in set (0.00 sec)

3.查询创建数据库的默认字符

-- 查询创建的数据库的默认字符集
-- show create database 库名;
mysql> show create database MyEE_2204;
+-----------+--------------------------------------------------------------------+
| Database  | Create Database                                                    |
+-----------+--------------------------------------------------------------------+
| myee_2204 | CREATE DATABASE `myee_2204` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+-----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)

4.修改数据库字符

gbk:中国的中文表:一个中文对应两个字节

utf8:一个中文对应三个字节,支持中简体

-- 修改数据库的字符集
-- alter database 库名 DEFAULT CHARACTER SET 字符集;
mysql> alter database MyEE_2204 default character set gbk;
Query OK, 1 row affected (0.01 sec)

mysql> show create database MyEE_2204;
+-----------+-------------------------------------------------------------------+
| Database  | Create Database                                                   |
+-----------+-------------------------------------------------------------------+
| myee_2204 | CREATE DATABASE `myee_2204` /*!40100 DEFAULT CHARACTER SET gbk */ |
+-----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)

5.删除库

方式1:

-- 删除库
-- drop database 库名;  直接删除库
mysql> drop database MyEE_2204;
Query OK, 0 rows affected (0.02 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

方式2:

drop database if exists 库名;  判断删除,如果存在库,删除
mysql> drop database if exists MyEE_2204;
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

九、DDL语句(数据库的定义语句)表的操作

1.MySQL数据库常用的数据类型

1)int:整数,默认长度11

int:整数,默认长度11
int(),一般指定int即可
int(自定义长度)

2)vaechar:表示字符串类型数据

-- 姓名字段
name varchar(5),-- 姓名最大支持5个字符

3)datetime:日期时间,可以指定日期时间

4)tempstamp时间戳(系统当前即时时间)

5)double(几位数,小数点后保留的位数):表示小数类型数据

2.创建表

1)前提条件:使用库

-- 使用库
-- use 库名;
mysql> use MyEE_2204;
Database changed
mysql>

2)创建表

create table 表名(
	字段名称1 字段类型1,
    字段名称2 字段类型2,
    字段名称3 字段类型3,
    .....,
    ....,
    字段名称n 字段类型 n

) ;

注意:最后一个字段名n 字段类型n不加" , "

mysql> create table staff(
    -> id int,    
    -> name varchar(10), 
    -> gender varchar(5),
    -> birthday varchar(50),
    -> email varchar(50),
    -> remark varchar(50),
    -> age int
    -> );
Query OK, 0 rows affected (0.02 sec)

3.查询表

1)查询库中的所有表

-- 查看库中的所有表
-- show 表名;
mysql> show tables;
+---------------------+
| Tables_in_myee_2204 |
+---------------------+
| staff               |
+---------------------+
1 row in set (0.00 sec)

2)查询表的结构

-- 查询表的结构
-- desc 表名;
mysql> desc staff;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| name     | varchar(20) | YES  |     | NULL    |       |
| gender   | varchar(2)  | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
| email    | varchar(25) | YES  |     | NULL    |       |
| remark   | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
6 rows in set (0.02 sec)

4.修改表

1)修改表的字段名称

语法:alter  table 表名 change gender 旧字符名称 新字符名称 以前的字段类型;

-- 修改表的字段名称 
-- 语法: alter table 表名 change 旧字段名称 新字段名称 以前的字段类型;
mysql> alter table staff change name username varchar(20) ;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc staff;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| gender   | varchar(2)  | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
| email    | varchar(10) | YES  |     | NULL    |       |
| remark   | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
6 rows in set (0.02 sec)

2)修改表的字段类型

语法:alter table 表名 modify 字段名称 新的字段类型;

-- 修改的表的字段类型
-- 语法:alter table 表名 modify 字段名称 新的字段类型;
mysql> alter table staff modify email varchar(20) ;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc staff;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| gender   | varchar(2)  | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
| email    | varchar(20) | YES  |     | NULL    |       |
| remark   | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
7 rows in set (0.02 sec)

3)给表中新添加一列(一个新的字段名称)

语法: alter table 表名 add 字段名称 字段类型;


-- 给表中新添加一列(一个新的字段名称)
-- 语法: alter table 表名 add 字段名称 字段类型;
mysql> alter table staff add age int;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc staff;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| gender   | varchar(2)  | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
| email    | varchar(20) | YES  |     | NULL    |       |
| remark   | varchar(50) | YES  |     | NULL    |       |
| age      | int(11)     | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
7 rows in set (0.02 sec)

4)将表中的某一列(某个字段)删除

语法:alter table 表名 drop 字段名称;

-- 复制一张一模一样的表 
-- 语法: create table 新的表名 like 旧表名;
mysql> alter table staff drop remark ;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc staff;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| gender   | varchar(2)  | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
| email    | varchar(20) | YES  |     | NULL    |       |
| age      | int(11)     | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
6 rows in set (0.02 sec)

5)复制一张一模一样的表

语法: create table 新的表名 like 旧表名;

-- 复制一张一模一样的表 
-- 语法: create table 新的表名 like 旧表名;
mysql> create table yuangong like staff ;
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+-------------------+
| Tables_in_ee_2204 |
+-------------------+
| staff           |
| yuangong        |
+-------------------+
2 rows in set (0.00 sec)

6)对表名重命名

语法:alter table 旧表名 rename to 新表名;

-- 对表名重命名
-- 语法:alter table 旧表名 rename to 新表名;
mysql> alter table staff rename to sta;
Query OK, 0 rows affected (0.01 sec)

7)删除表

方法1:

语法: drop table 表名;

-- 删除表
-- 语法1: drop table 表名;
mysql> drop table staff;
Query OK, 0 rows affected (0.01 sec)

方法2:

语法:drop table if exists 表名;

-- 删除表
-- 语法2: drop table if exists 表名;
mysql> drop table if exists staff;
Query OK, 0 rows affected (0.01 sec)

十、SQLyog图形界面化中操作失去了语句

1.插入表记录

1)MySQL注释

-- mysql注释 (普通注释:单行注释)
# 注释(特殊注释)
/*
	多行注释
*/

2)创建表

-- 建议命令行的去写

--使用库
USE ee_2204; 
-- 创建表
CREATE TABLE teacher(
	id INT , -- 教师编号
	NAME VARCHAR(20), -- 教师名称
	age INT, -- 教师年龄
	gender VARCHAR(5) -- 性别
);

3)查询表的结构

-- ddl语句:数据库定义语句 查询表的结构
DESC teacher ; 

4)插入数据

语法1

-- 语法1:插入全部字段,给全部字段进行赋值
insert into 表名 values(值1,值2,值3,值4...,值n) ; 一次插入一条

注意:插入的值必须和当前字段顺序要对应,而且还有符号这个字段数据类型 

INSERT INTO student VALUES(1,"张三",'男','鄠邑区','zhangsna@163.com') ; 

语法2

-- 语法2:一次插入多条
insert into 表名 values(值1,值2,值3,值4...,值n),(值1,值2,值3,值4...,值n)
INSERT INTO student VALUES(2,"李四",'男','高陵区','李四@163.com'),
(3,"王五","男","西安市","王五@163.com"),
(4,"赵六","男","西安市","赵六@163.com") ;

语法3

插入部分字段,未插入的字段的默认值就是null

-- insert into 表名(字段名称1,字段名称2,,,) values(值1,值2....) ; 这种写法也支持一次插入多条
INSERT INTO student(id,NAME,sex,address) VALUES(5,"钱七","女","鄠邑区"),
(6,"孙八","男","咸阳市")  ;

5)查询表的记录

-- 查询表的记录  DQL语句 :数据库查询语句 (语法是最多的!)
-- 查询全表 select *(所有字段) from 表名;
SELECT * FROM student ;

注意:-企业中 "禁止"使用*, 必须写全部字段! (自己去使用*,没有问题的!)

2.修改表的记录

1)插入一条数据

INSERT INTO student VALUES(7,'男','王五','西安市','wangwu@163.com') ;

注:上面可以插入成功,因为name和sex都是varchar类型,字符串,但是实际中非法数据,需要修改数据

2)修改表中的记录

一般情况,都是带条件修改   

语法1:update 表名 set 字段名称 = 值 where 字段名称 = xx ; 修改单个字段

实际开发中,每一张表都有 非业务字段--- id 序号,id是唯一的,而且可以有自增长约束

UPDATE student SET NAME = "孙悟空" WHERE id = 6 ;

语法2:修改多个字段值

 update 表名 set 字段名称1 = 值1,字段名称2 = 值2,字段名称3= 值3,...where 字段名称 = xx ;

UPDATE student SET NAME = "王五" ,sex = "男" WHERE id = 7 ;

语法3:一般不用的,批量修改,针对数量比较小的时候

update 表名 set 字段名称= 值; 

UPDATE student SET address = "宝鸡市" ;

3)带多个条件同时修改

update 表名 set 字段名称  = 值 where 条件1 =xx and 条件2 and 条件3.....

UPDATE student 
    SET NAME = '三三' 
    WHERE 
    address = '鄠邑区' 
    AND 
    sex = '男 '
    AND 
    email = 'zhangsan@163.com ;

3.删除表中指定记录以及全表记录

删除表指定的记录,都是带条件删除

语法1: delete from  表名 where 字段名称 = 值; 

DELETE FROM student WHERE id = 7 ;

语法2:TRUNCATE TABLE 表名 ;

TRUNCATE TABLE student ;

区别:

共同点:

都能够删除全表记录

不同点:

delete from 表名:仅仅只是删除全表数据,而不是删除表,如果表中id(非业务字段有自增长约束),不会影响自增长约束!意味着下次插入数据的时候,id继续按上次的id自增.

truncate table 表名:会将表中的全部记录删除并且同时删除表,而且会自动创建一张一模一样的表,它直接影响了自增长约束的值下一次插入数据的时候,自增长id字段从1开始.

自增长约束:id主键并且自增长,id不用给值
INSERT INTO student(NAME,gender,address,email)

-- 创建一个学生表
CREATE TABLE student(
-- -- 非业务字段id 序号 ,PRIMARY KEY 主键(非空且唯一),AUTO_INCREMENT :自增长约束
	id INT PRIMARY KEY AUTO_INCREMENT , 
	NAME VARCHAR(20),
	gender VARCHAR(5), 
	address VARCHAR(20) , 
	email VARCHAR(50) 	
);

 创建库

-- 创建库
CREATE DATABASE mysql_01;

选择库mysql_01

-- 选择库
USE mysql_01;

创建表

-- 创建表
CREATE TABLE student (
  id INT,
  -- 编号
  NAME VARCHAR (20),
  -- 姓名
  age INT,
  -- 年龄 
  sex VARCHAR (5),
  -- 性别 
  address VARCHAR (100),
  -- 地址 
  math INT,
  -- 数学
  english INT-- 英语 
);

查看全表数据

-- 查看全表数据
SELECT * FROM student;

插入数据

-- 插入数据
INSERT INTO student (
  id,
  NAME,
  age,
  sex,
  address,
  math,
  english
) 
VALUES
  (1, '唐僧', 55, '男', ' 杭州', 66, 78),
  (2,'孙悟空',45,'男','深圳',98,87),
  (3,'猪八戒',55,'男','香港',56,77),
  (4, '沙僧', 20, '男', '湖南', 76, 65),
  (5,'柳青',20,'男','湖南',86,NULL),
  (6, '柳红', 19, '女', '香港 ', 99, 99),
  (7,'小燕子',22,'女','香港',99,99),
  (8,'德玛西亚',18,'男','南京',56,65) ;

 十一.常用DQL语句:数据库查询语句

查询不会对数据库中的数据进行修改.只是一种显示数据的方式

1.最基本的通用查询:查询全表数据

使用*表示所有列

SELECT * FROM 表名;

-- 查询全表数据
-- SELECT * FROM 表名;
-- 查询所有学生
SELECT * FROM student;

注:实际开发中,写sql的时候,不能书写*,书写具体的字段名称

SELECT 
  id,
  NAME,
  age,
  sex,
  address,
  math,
  english 
FROM
  student ;

2.查询指定列

SELECT 字段名 1, 字段名 2, 字段名 3, ... FROM 表名;

SELECT 
  address
FROM
  student ;

上述运算结果为

地址字段出现数据冗余,也就是重复性太多了

 通过关键字distinct,将地址字段冗余数据去重

SELECT DISTINCT 
  address 
FROM
  student ;

运算结果为

3.通过起别名进行查询

使用别名的好处: 显示的时候使用自己需要的名字,并不修改表的结构

1)对列起别名

SELECT `字段名 1` AS 别名, `字段名 2` AS 别名... FROM 表名;

SELECT 
  student.id AS '编号',
  -- 编号
  student.`name` AS '姓名',
  -- 姓名
  student.`age` AS '年龄',
  -- 年龄
  student.`sex` AS '性别',
  -- 性别
  student.`address` AS '地址',
  -- 地址
  student.`math` AS '数学成绩',
  -- 数学成绩
  student.`english` AS '英语成绩' -- 英语成绩
FROM
  student ;

AS可以省略

SELECT 
  student.id '编号',
  -- 编号
  student.`name` '姓名',
  -- 姓名
  student.`age` '年龄',
  -- 年龄
  student.`sex` '性别',
  -- 性别
  student.`address` '地址',
  -- 地址
  student.`math` '数学成绩',
  -- 数学成绩
  student.`english` '英语成绩' -- 英语成绩
FROM
  student ;

2)对表起别名(表的名字比较长),同时给列起别名

1)查询全表:SELECT  字段名1  AS 别名, 字段名2 AS 别名... FROM 表名 AS 别名;

SELECT 
  s.id AS '编号',
  -- 编号
  s.name AS '姓名',
  -- 姓名
  s.age AS '年龄',
  -- 年龄
  s.sex AS '性别',
  -- 性别
  s.address AS '地址',
  -- 地址
  s.math AS '数学成绩',
  -- 数学成绩
  s.english AS '英语成绩' -- 英语成绩
FROM
  student AS s ;

可以给字段名带上`符号,如下述的代码,也可以不带上`

as可以省略

SELECT 
  s.id '编号',
  -- 编号
  s.`name` '姓名',
  -- 姓名
  s.`age` '年龄',
  -- 年龄
  s.`sex` '性别',
  -- 性别
  s.`address` '地址',
  -- 地址
  s.`math` '数学成绩',
  -- 数学成绩
  s.`english` '英语成绩' -- 英语成绩
FROM
  student s ;

2)查询的时候可以将字段为整数类型的数据进行求和

需求:查询学院的id,name,age,sex以及数据和英语成绩的总分

-- 需求:查询学院的id,name,age,sex以及数据和英语成绩的总分
SELECT 
  id '学生编号',
  NAME '学生姓名',
  age '学生年龄',
  sex '学生性别',
  (math + english) '总分' 
FROM
  student ;

 根据运算结果可以发现学生编号为5的柳青总分为null空值

注意事项:两个整数类型求和,如果其中一个字段是null值,求和结果为null(没意义)空值

在mysql中有函数ifnull(字段名称,给期望值);

如果当前字段名称为null值,可以给它一个期望值

SELECT 
  id '学生编号',
  NAME '学生姓名',
  age '学生年龄',
  sex '学生性别',
  (math + IFNULL(english, 0)) '总分' -- 当英语成绩是null空值,给一个期望值0
FROM
  student ;

 4.带条件查询

select 指定的字段名称 from 表名 where 条件;

1)where后面跟单个条件,可以使用赋值运算符=,比较运算符<,>,<=,>=,!=

赋值运算符

需求:查询年龄是20岁的学生的所有信息

SELECT 
  * 
FROM
  student 
WHERE age = 20 ;

比较运算符

 需求:查询学生的年龄大于等于20 的学生

SELECT 
	NAME '学生姓名',
	age '学生年龄',
	sex '学生性别',
	(math + IFNULL(english, 0)) '总分' 
FROM
	student 
WHERE 
	age <= 20 ;

 需求:查询学生年龄不为20岁的学生所有信息!=

语法1:

SELECT 
  * 
FROM
	student 
WHERE 
	age != 20 ;

语法2: 针对上述语法,在mysql中判断某个条件不等于用<>

SELECT 
  * 
FROM
	student 
WHERE 
	age <> 20 ;

2)where后面跟多个条件,并列条件或者或关系的条件

a.并列条件

语法1:可以使用逻辑运算符&&

需求:查询学生年龄在20岁到30岁的学生所以信息

SELECT
    *
FROM
	student
WHERE
	age>=20 && age<=30;

语法2:在mysql中多个并列条件,推荐使用关键字and

where 字段名称1 条件1 and 字段名称2 条件2

SELECT
   *
FROM
	student
WHERE
	age>=20 AND age<=30;

语法3:还可以使用between  and

where 字段名称 between 值1 and 值2; 等价于 字段名称>=值1 and 字段名称<=值2;

SELECT
   *
FROM
	student
WHERE
	age
	BETWEEN 20 AND 30;

结果都是

b.或的关系

语法1:可以使用逻辑运算符||

需求:查询学生年龄是18岁或者20岁或者45岁的学生所有信息

SELECT
  *
FROM
	student
WHERE
	age=18 || age=20 || age=45;

语法2:在mysql中多个或的关系哦,推荐使用关键字or

SELECT
   *
FROM
	student
WHERE
	age=18
	OR 
	age=20
	OR 
	age=45;

语法3:还可以使用in集合语句

where 字段名称 in(值1,值2,值3,...);
 

SELECT
   *
FROM
	student
WHERE
	age IN(18,20,45);

结果都为

 3)where条件后面可以跟某个字段为null的格式

语法1:where 字段名称 is null

SELECT
	id '编号',
	NAME '学生姓名',
	sex '学生性别',
	address '地址',
	math '数学成绩',
	english '英语成绩'
FROM
	student
WHERE
	english IS NULL;

 语法2:where 字段名称 is not null

SELECT
	id '编号',
	NAME '学生姓名',
	sex '学生性别',
	address '地址',
	math '数学成绩',
	english '英语成绩'
FROM
	student
WHERE
	english IS NOT NULL;

 5.模糊查询

关键字:like

1 )匹配任意字符:%

语法:select 指定字段列表 from 表名 where like '%字符%'

需求:模糊查询姓柳的学生所有信息
 

SELECT
   *
FROM
	student
WHERE
	NAME
	LIKE '%柳%';

 2 )一个下划线代表一个任意字符值:_

需求:查询姓名是两个字符的学生的信息

语法:where 字段名称 like '_几个字符就是几个下划线_';

SELECT
    *
FROM
	student
WHERE
	NAME
	LIKE '__';

%和_ 两个可以结合使用

需求:模糊查询学生姓名第二个字为悟的学生信息

SELECT
   *
FROM
	student
WHERE
	NAME LIKE '%_悟%';

  

 6.聚合函数查询

针对单行单列的函数

语法:select 聚合函数(字段名称) from 表名;

1)常见的聚合函数

a.查询当前表的记录:count(字段名称)

SELECT
	COUNT(english) AS '总记录数'
FROM
	student;

 

由于english中含有null所以总的记录为7,但实际上应该是8,需要使用ifnull(字段名称,期望值);

SELECT
	COUNT(IFNULL(english,0)) AS '总记录数'
FROM
	student;

 

 通用的方法是用非业务字段id进行查询

SELECT
	COUNT(id) AS '总记录数'
FROM
	student;

 

b.针对某列字段值求和(整数):sum(字段名称)

需求:查询数学成绩总和

SELECT
	SUM(math) AS '数学总成绩'
FROM
	student;

  

 c.平均分:avg(字段名称)

需求:查询数学成绩平均分

SELECT
	AVG(math) AS '数学成绩平均分'
FROM
	student;

 

d.最高分:max(字段名称)

   最低分:min(字段名称)

SELECT
	MAX(math) AS '数学最高分',
	MIN(math) AS '数学最低分'
FROM
	student;

  

7.复杂查询和聚合查询一起使用

语法:where 字段名称 比较运算符(select 复合函数查询)

 需求:查询出数学成绩大于平均分的学生信息

SELECT
	*
FROM
	student
WHERE
	math>(SELECT AVG(math) FROM student);

8.排序查询

关键字:order by

1)单个字段排序

语法:语法:select 字段列表 from 表名 order by 字段名称 排序规则

 排序规则:

        升序(默认值):asc

        降序;desc

需求:数学成绩升序排序,查询所有信息

SELECT 
    *
FROM 
    student
ORDER BY 
math  ASC; -- math后面如果没有带排序条件,默认就是升序

 需求:将英语成绩降序排序查询所有信息

SELECT
	*
FROM
	student
ORDER BY
	english DESC;

 2)多个字段排序

 语法:select 字段列表 from 表名 order by 字段名称1 排序规则1 ,字段名称2 排序规则2 ;

 需求:查询数学成绩降序,英语成绩是升序的所有学生信息

 如果数学成绩相同,按照英语成绩排序规则进行操作

 如果英语成绩有null,按照数学排序规则进行操作

SELECT
    *
FROM 
   student3
ORDER BY math DESC ,english ASC ;

创建库

-- 创建库
CREATE DATABASE mysql_02;

选择库

-- 选择库
USE mysql_02;

创建表

--创建表
CREATE TABLE student(
	id INT,   -- id编号
	NAME VARCHAR(20), -- 姓名
	sex VARCHAR(2), -- 性别
	chinese INT,  -- 语文
	english INT, -- 英语
	math INT -- 数学
);

插入数据

-- 插入数据
INSERT INTO student(id,NAME,sex,chinese,english,math) VALUES
(1,'武松','男',89,78,90),(2,'潘金莲','女',67,53,95),
(3,'扈三娘','女',87,78,77),(4,'武大郎','男',88,98,92),
(5,'西门庆','男',82,84,67),(6,'玉面狐','女',55,85,45),
(7,'牛魔王','男',75,65,30),(8,'孙悟空','男',90,100,91),
(9,'唐三','男',99,99,99),(10,'小舞','女',60,95,85),
(11,'石昊','男',96,68,40),(12,'狠人','女',98,90,20);

查询表数据

-- 查询表数据
SELECT	* FROM student;

最终的表

  

 本文是以上述创建的表来进行操作的

十二、其他查询语句

1.分组查询

分组查询使用关键字group by

注意事项1:gruop by 的后面不能使用聚合函数

语句:

SELECT 
    字段列表(可以包含查询的分组字段) 
FROM
    表名 
GROUP BY 
    分组字段;

需求:按照性别进行分组,查询分组信息和总人数(总人数用关键字count

SELECT 
     sex '性别', -- 查询分组字段
     COUNT(id) '总人数'
FROM
     student
GROUP BY sex ;

如果现在有where条件,并且还有分组的查询

需求:要按性别分组,查询性别以及数学的平均分

条件:数学成绩不小于70分的人参与分组

select
     sex,
     avg(math)
from  
    student
group by 
	sex
where 
	math > 70 ;

 

运行后,出现错误代码

正确的应该是

SELECT
    sex '性别',
    AVG(math) '数学平均分' 
FROM
    student

WHERE 
	math > 70 
	
GROUP BY sex ;

注意事项: group by 后面不能使用where条件,应该先满足这个条件,才能进行分组

2.筛选查询

筛选查询使用关键字having

having后面是可以使用聚合函数的,且having必须置于group by之后

需求:按性别进行分组,查询分组信息以及数学平均分和总人数
       条件:数学成绩不小于70分的人参与分组
              筛选:总人数大于2的那一组

SELECT
	sex '学生性别',
	AVG(math) '数学平均分',
	COUNT(id) '总人数'
FROM

	student
    
 WHERE 
	math > 70 
 GROUP BY 
	sex 
 
 HAVING  
	COUNT(id) > 2 ;

注意事项:
    关于group by和having使用的先后顺序,而且有where条件
    where在group by 之前,having在group by 之后
    group by不能使用聚合函数,having是可以使用聚合函数查询的 

3.分页查询

筛选查询使用关键字limit

语法格式:
    select
        字段列表
    from
        表名
    limit
        起始行数,每页显示的条数;

注意:起始行数从0开始算的

算法:(当前页码-1)*每页显示的条数

需求:每页显示4个学生数据,求每页的分页数据

第一页:

SELECT
	*
FROM
	student
LIMIT
	0,4;

 第二页:

SELECT
	*
FROM
	student
LIMIT
	4,4;

 第三页:

SELECT
	*
FROM
	student
LIMIT
	8,4;

 4.数据库的约束 

约束:在操作数据库的时候,约束管理人员使用数据的时候行为;

举例: 有一张员工表,插入一行数据,没有给员工给性别值,默认值就是null,这毫无意义

默认约束 default :当在给某个字段没有插入值的时候,这个默认约束就可以作用,给字段设置默认值

创建一张员工表

CREATE TABLE emp(
	id INT, -- 员工编号
	emp_name VARCHAR(10),-- 员工姓名
	gender VARCHAR(5) -- 员工性别  
);

插入正常数据

INSERT INTO emp VALUES(1,'孙悟空','男') ;

 插入部分字段

INSERT INTO emp(id,emp_name) VALUES(2,'猪八戒') ; 

 可以发现猪八戒的性别是null,没有任何意义

创建新表加入默认约束

CREATE TABLE emp(
	id INT, -- 员工编号
	emp_name VARCHAR(10),-- 员工姓名
	gender VARCHAR(5)  DEFAULT '男' -- 员工性别   ,加入默认约束
);

再插入部分字段

INSERT INTO emp(id,emp_name) VALUES(2,'猪八戒') ; 

 可以发现没有给猪八戒添加性别,但是表自动添加了

也可以更改字段类型加入默认约束

ALTER TABLE emp	MODIFY gender VARCHAR(5) DEFAULT '男' ;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 实变周民强pdf第三版是一本关于实变函数方面的书籍,主要涵盖了实数系、连续函数、测度论以及Lebesgue积分等内容。该书作者周民强是北京大学数学科学学院的一名教授,是国内实变函数学科方面的专家。该书是其多年教学和研究的总结和深化,是高等数学和实变函数方面的重要参考书。 在实数系方面,该书系统地介绍了实数的基本性质,包括有理数的完备性、戴德金分割定理、柯西收敛准则等,为后续的理论分析打下基础。在连续函数方面,该书讲述了连续函数的各种性质和定理,包括介值定理、零点定理、最大最小值定理等,具有较高的实用性和指导意义。 在测度论方面,该书采用了经典的Lebesgue测度和Lebesgue积分理论进行讲解,系统地介绍了测度论的基本概念和性质、重要的测度和可测函数,以及测度和积分的关系等内容。同时,该书还包含了一些高阶的内容,如广义积分、Cantor集、分数维Hausdorff测度等,丰富了读者的知识面。该书不仅适合于数学专业的研究生、本科生、教师等,在物理、工程、计算机等领域的研究者也能从中受益良多。 总之,实变周民强pdf第三版是一本高水平的实变函数方面的参考书籍,其清晰的讲述、严谨的证明和丰富的例题、习题都使得该书成为该领域的必备读物。 ### 回答2: 实变周民强pdf第三版是一本权威的实变分析教材。该书主要分为七个部分,涵盖了实变分析的基础知识、测度论、Lp空间、广义函数、调和分析、复变函数和狄利克雷问题等内容。该书既注重理论证明,又注重具体应用,让读者可以深入理解实变分析的本质,同时也可以掌握实际问题的解决方法。 在该书中,作者精心编排章节,深入浅出地阐述了各种实变分析的核心概念和定理,让读者能够深入了解这一领域的内部机理。该书还利用大量的例子和练习题,让读者更好地理解概念和方法,并能够掌握实践技能。此外,该书还引用了大量的历史背景和文化背景,让读者了解实变分析的发展历程和背景文化,进一步提高学科理解。 总之,实变周民强pdf第三版是一本涵盖实变分析前沿知识、实践应用和历史背景的一本优秀教材。它不仅适合数学专业学生学习和参考,也适合工程技术人员和物理学家等其他领域的专业人士阅读和研究。通过学习这本教材,读者可以更加理解实变分析的本质和内在联系,也能够掌握相关的技术方法和工具,为学术研究和实践应用提供有力支撑。 ### 回答3: 实变周民强pdf第三版是一本关于实变函数理论的经典教材。本书主要分为七章,包括集合与映射、度量空间、拓扑空间、完备度量空间、有限测度论、Lebesgue积分与L^p空间以及Hilbert空间与Fourier变换等内容。 该书采用了严谨的证明方法,突出了实变函数理论中的核心思想和重要性质,注重培养学生的数学分析思维能力和证明能力。本书所使用的符号符合国际惯例,易于理解和掌握。 实变周民强pdf第三版适用于硕士研究生和博士研究生课程,也是普通高校本科生学习实变函数理论的优秀教材,同时也适合从事数学研究和教学的专业人士使用。通过学习本书,可以深入理解实变函数理论的基本概念、定理和应用,为后续数学研究和应用打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值