【黑马程序员】第4课:MySQL入门

<pre>

day04

昨天内容回顾

(1)js创建函数的两种方式

(2)js函数的重载

(3)js的全局函数(会用)

(4)html绑定事件三种方式

(5)js里面的常用的事件(会用)

**重点  onsubmit

(6)dom是什么

(7)dom解析标记型文档的过程(**)

(8)dom里面的对象document、element、属性、文本、node

(9)DTHML 是很多技术的简称

(10)document对象四个方法

(11)innerHTML属性 做两件事情

(12)表单的提交方式

(13)表单的验证

*按钮是submit,使用onsubmit事件

*button按钮验证

(14)json数据(*********)

*json格式

*js解析json数据

思维导图

1、数据库介绍

*什么是数据库:是一个文件系统,使用标准sql对数据库进行操作

*常见的数据库:

**oracle:是oracle公司的产品,是收费的软件

**DB2: 是ibm公司的产品,收费的软件

**SQLServer:是微软产品,是中型的数据库

**mysql:被oracle公司收购,在mysql6.0版本开始收费了。

**sysbase:保留一个软件,建模的软件。

**SQLite:小型的嵌入式的数据库,一般用在客户端开发中,比如安卓

*共同的名字:关系数据库

**存储的是:实体之间的关系

**比如购物网站:用户、订单、商品

*画图说明实体之间的关系(ER图)

2mysql数据库的存储的结构

*数据库

*数据库表

*表中的记录

*在数据库服务器上可以还有多个数据库,在数据库里面有多个数据库表,

在每个数据库表里面有多条记录

*学习是 对数据库、数据库表、表中的记录进行crud的操作

3mysql数据库安装和卸载

*建议安装mysql5.x版本

*在day04的资料里面提供mysql的安装文档

*mysql的卸载:

**首先找到mysql的安装路径,找到一个配置文件 my.ini

找到两个路径

datadir="C:/ProgramData/MySQL/MySQLServer 5.5/Data/"

basedir="C:/ProgramFiles (x86)/MySQL/MySQL Server 5.5/"

**其次,打开电脑的控制面板,找到卸载程序,进行卸载

**第三,删除上面两个路径的所有文件

**第四,打开注册表

regedit

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services

搜索mysql,找到一律删除!

**第五,需要重启电脑

*如果想要操作mysql数据库,首先需要连接数据库

**首先打开cmd窗口

**使用命令连接mysql数据库

***mysql -u root -p 回车(注意不要加分号,会出错) ,会提示输入密码,密码

正确之后就可以连接数据库

4sql介绍

(1) 标准sql:使用标准sql的语句,不仅可以在mysql数据库里面使用,也可以在oracle、db2里面都可以使用

(2)StructuredQuery Language, 结构化查询语言

*非过程性语言:不需要依赖于任何的条件,就可以直接运行

**比如在java里面

if(i> 3) {

system........

}

(3)sql的分四类

         * DDL (数据定义语言)

                   ** 使用的语句 create语句

         * DML (数据操纵语言)

                   ** 使用的语句 insert update delete

         * DCL (数据控制语言)

                   ** 使用的语句 grant....

         * DQL (数据查询语言)

                   ** 使用的语句只有一个 select

(4)sql注释

/**/

5、数据库操作

(1)创建和查看

*创建数据库 create database 数据库的名称;

==create database mydb1;

*查询数据库 show databases;

(2)删除和切换

*删除数据库 drop database 数据库的名称;

*切换数据库(如果创建表,这个表肯定要在一个数据库里面,所以切换到数据库)

**use 要切换的数据库的名称;

动作  database  数据库名;

6、数据库表的操作

(1)创建数据库表

**语句: create table 表名称 (

字段1名称 字段类型[约束],

字段2名称 字段类型[约束]

)

**在mydb2数据库里面创建一个表 user

***首先切换到mydb2数据库 use mydb2

***create table user (

id  int,

username varchar(40),

sal int

);

(2)mysql的数据类型

* 字符串型

VARCHAR、CHAR

**name varchar(20)/char(30)

**字符串类型指定长度

**varchar和char区别:

***char长度是固定的,varchar的长度是可变的

比如 name varchar(20)/char(20)

****如果类型char(20),现在name的值aa,存储方式 aa加很多的空格

****如果类型varchar(20),现在name的值aa,存储方式 aa后面没有空格

* 大数据类型

BLOB、TEXT

**一般用于存储文件,在实际开发不会把文件直接存到数据库,一般是将文件的

路径存入到数据库中,否则文件如果过大势必造成数据库运行效率降低。

* 数值型

**不需要指定长度,默认的长度

TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE

对应java里面: byte       short  int   long    float double

**id int

* 逻辑性

BIT对应java里面的boolan

* 日期型

DATE:用于表示日期

TIME:用于表示时间

DATETIME:用于表示日期和时间

TIMESTAMP:用于表示日期和时间(日期和时间不需要手动添加,系统可以自动添加当前的时间)

(3)查看表结构  desc 表名称;

+----------+-------------+------+-----+---------+-------+

|Field    | Type        | Null | Key | Default | Extra |

+----------+-------------+------+-----+---------+-------+

|id       | int(11)     | YES |     | NULL    |      |

|username | varchar(40) | YES  |     | NULL   |       |

|sal      | int(11)     | YES |     | NULL    |      |

+----------+-------------+------+-----+---------+-------+

(4)mysql的约束,写在数据类型的后面。

*在mysql里面有三个约束

第一:非空约束 not null

usernamevarchar(40) not null,

第二:唯一性约束unique

第三:主键约束primary key(表示数据不能为空,不能重复)

usernamevarchar(40) primary key,

*自动增长:auto_increment

*创建带约束的表

createtable person (

idint primary key,

namevarchar(40) not null,

salint

)

+-------+-------------+------+-----+---------+-------+

|Field | Type        | Null | Key |Default | Extra |

+-------+-------------+------+-----+---------+-------+

|id    | int(11)     | NO  | PRI | NULL    |       |

|name  | varchar(40) | NO   |    | NULL    |       |

|sal   | int(11)     | YES |     | NULL    |      |

+-------+-------------+------+-----+---------+-------+

(5)查询数据库里面的表show tables;

(6)删除数据库表 drop  table 表名称;

7、表中的记录的操作

(1)向表中添加记录

*使用语句 : insert into  表名称 values(值1,值2);

**使用insert语句插入数据时候注意的地方:

***如果数据的类型是int类型直接写值

***如果数据类型是varchar类型和日期类型,需要使用单引号把值括起来

*向person表里面插入一条数据

**insert into person values(100,‘zhangsan‘,2000);

*自动增长和timestamp类型操作

**创建一个表 user

createtable user (

idint  primary key auto_increment,

username  varchar(40) not null,

times  timestamp

)

insertinto user values(null,‘lisi‘,null);

insertinto user values(null,‘zhaoliu‘,null);

(2)修改表中的记录

*使用语句:update 表名称 set 字段名称1=值1,字段名称2=值2  where 条件

*修改user表里面id值=1,username修改为wangwu

**update user set username=‘wangwu‘ where id=1

*修改person表里面id=100,name修改为lucy,sal修改为555

**update person set name=‘lucy‘,sal=555 where id=100

insertinto person values(101,‘东方不败‘,444);

insertinto person values(102,‘岳不群‘,666);

insertinto person values(103,‘林平之‘,777);

*练习

将所有员工薪水修改为5000元。

=update person set sal=5000;

将姓名为’林平之’的员工薪水修改为3000元。

=update person set sal=3000 where name=‘林平之‘;

将lucy的薪水在原有基础上增加1000元。

=update person set sal=sal+1000 where name=‘lucy‘;

(3)删除表中的记录

*使用语句:delete from 表名称 where .....

*练习

删除表中名称为’lucy’的记录

=delete from person where name=‘lucy‘;

删除表中所有记录

=delete from person;

(4)查询表中的记录(今天最重要的内容)

*使用语句:select 字段名称/*(所有字段) from 要查询的表名称 where.....

##select中的字段,可以不是表中切切实实有的字段,可以是任意表达##

*创建一个表stu

createtable stu (

idint primary key,

sname varchar(40),

math int,

chinese  int,

english  int

)

insertinto stu values(1,‘紫衫龙王‘,80,100,120);

insertinto stu values(2,‘金毛狮王‘,100,20,10);

insertinto stu values(3,‘白眉鹰王‘,60,50,80);

insertinto stu values(4,‘青翼蝠王‘,40,80,30);

insertinto stu values(5,‘金大牙‘,60,30,80);

*练习

查询表中所有学生的信息。

=select * from stu;

查询表中所有学生的姓名和对应的英语成绩。

=select sname,english from stu;

*查询的别名 使用 as 起的名字

=select sname as s,english as e from stu;

*查询里面的关键字 distinct,去除表中重复的记录

=select distinct * from p1;

**创建一个没有约束表

createtable p1 (

idint,

namevarchar(40)

)

(5)根据条件进行查询

*查询id值是1的记录

=select * from stu where id=1;

*在进行条件查询的时候有关键字

**and:并且

***查询学生英语成绩是10,并且数学成绩是100信息

=select * from stu where english=10 and math=100;

**or: 或者

**in:数据所在的范围(指的是枚举,不是连续的)

***查询数学成绩是80,100学生的信息

**like:进行模糊查询的操作

                 **%表示匹配任意字符,_表示匹配一个字符。

***查询表中名称里面包含“金”的数据

=select * from stu where sname like ‘%金%‘;

**not :类似java里面 if(!flag){}

**显示当前的数据库: select database();

只有在use 数据库名,即选择了数据库后,这个语句才会显示当前数据库。

=================================================================================

(1)数据库的介绍

(2)sql分四类

(3)创建数据库

(4)查看数据库

(5)切换数据库

(6)删除数据库

(7)创建数据库表

(8)mysql的数据类型

*varchar和char

*timestamp:自动生成当前时间

(9)创建带约束的表

*有三个约束 非空、唯一、主键

(10)删除数据库表

(11)查看数据库里面的表

(12)插入记录 insertinto 表名 values();

*如果类型int,直接写值

*如果是字符串和日期,使用单引号包起来

(13)更新记录 update 表名 set 字段=值 where....

(14)删除记录 deletefrom 表名 where...

(15)查询表中的记录(***)

*select 字段名称/* from 表名 where....

*and

*in

*or

*like

*not

8、使用cmd向表中添加记录

*如果有中文报错

**解决方法:

**首先找到mysql安装路径,在路径下面找到一个配置文件 my.ini

(因为要对这个文件进行修改,建议先备份这个文件)

**打开这个文件,不要使用记事本打开

**找到default-character-set值修改为gbk

9、表记录的排序

*使用语句 order by 要排序字段 asc/desc,要写在select语句的最后

**默认是升序排序

=select * from stu order by id asc;

=select * from stu order by id desc;

10mysql聚集函数

(1)count():统计表中有多少条记录

=select count(*) from 表名;

*练习

统计一个班级共有多少学生?

=select count(*) from stu;

统计数学成绩大于60的学生有多少个?

=select count(*) from stu where math>60;

(2)sum(): 数据进行相加的操作

*练习

统计一个班级数学总成绩?

=select sum(math) from stu;

统计一个班级语文、英语、数学各科的总成绩

=select sum(chinese),sum(englist),sum(math) from stu;

统计一个班级语文成绩平均分

=select sum(chinese)/count(*) from stu;

(3)max(): 得到最大值

*练习

计算班级中数学的最高分

=select max(math) from stu;

(4)min(): 得到最小值

*练习

计算班级中英语的最低分

=select min(english) from stu;

(5)avg(): 计算平均数

*统计一个班级语文成绩平均分

=select avg(chinese) from stu;

11、分组的操作

*语句:group by 要分组的字段

*create table orders(

id  int,

product    varchar(20),

price    float

);

insertinto orders values(1,‘电视‘,900);

insertinto orders values(2,‘洗衣机‘,100);

insertinto orders values(3,‘手电‘,90);

insertinto orders values(4,‘桔子‘,9);

insertinto orders values(5,‘手电‘,90);

insertinto orders values(6,‘洗衣机‘,100);

练习:显示每一类商品的总价

=select product,sum(price) from orders group by product;

练习:查询购买了几类商品,并且每类总价大于100的商品

=select product,sum(price) from orders group by product having  sum(price)>100;

**聚集函数不能写在where里面(应该是分组不能写在where里边?)

**使用到一个语句 having :在分组的基础之上再进行条件筛选

12select语句的书写规范

select...from  ... where.... group by ...having....order by...

13mysql的可视化工具的使用

     可视化工具在网上有很多,下面以SQLyog ULtimate - MySQL GUI V8.2为例。

(1)登录服务器:

(2)执行查询命令

执行当选中查询命令:Execute current query,工具栏上的第3个按钮。

执行所有的查询命令:Execute all queries,工具栏上的第4个按钮。

14mysqllimit关键字

*可以实现分页的效果

* limit关键字不是标准sql里面的关键字,只能在mysql里面使用

**oracle里面实现分页 rownum

**sqlserver里面实现分页 top

*查询表中的前几条记录

**查询stu表里面前三条记录

=select * from stu limit 0,3;

*查询表中第几条到第几条记录

**查询stu表里面的第三条到第四条记录

=select * from stu limit 2,2;

**在limit后面传递两个参数:

***第一个参数表示从第几条开始(开始位置是0)

***第二个参数表示从第一个参数的记录开始向后取几条记录

15、重置mysqlroot密码

*知道密码,修改密码(试了一下,没有成功???)

=/*切换数据库*/

usemysql

/*修改root用户的密码*/

updateuser set password=password(‘123456‘) where user=‘root‘;

*忘记密码,重置密码

**第一步,关闭mysql的服务

**第二步,打开cmd窗口,在窗口里面输入一个命令 mysqld --skip-grant-tables(不能加分号)

**第三步,再打开一个cmd窗口,直接输入命令 mysql -u root 不需要输入密码,直接连接

**第四步,重复

/*切换数据库*/

usemysql

/*修改root用户的密码*/

updateuser set password=password(‘123456‘) where user=‘root‘;

**第五步,关闭两个cmd窗口,打开任务管理器,找到进程mysqld.exe,把这个进程结束

**第六步,启动mysql服务

16、多表的操作

*表与表之间关系

**有三种关系

第一种:一对多的关系

***在一个公司里面,一个部门有很多的员工,一个员工只能属于一个部门

第二种:多对多的关系

***学校选课;一个学生可以选择多门课,一门课可以被多个学生选择

第三种:一对一的关系

***在中国,一个男人只能有一个妻子,一个女人只能有一个丈夫

***一个公司有一个注册地址,一个注册地址有一个公司

17、一对多的建表原则(*

*创建员工表,部门表

*画图分析建表原则

*首先确定表的关系:谁是一,谁是多

*其次,在多的那一边创建一个字段,指向一的那一边的主键(id)

18、多对多的建表原则(*

*创建课程表,学生表

*画图分析多对多的建表原则

*创建第三张表,创建两个字段,这两个字段分别指向两个表的主键(id)

使用第三张表存储这两个的表的关系

19、一对一的建表原则(了解)

*创建公司表 ,地址表

*画图分析一对一的建表原则

*一般情况下,把数据直接放到一个表里面

20、使用一对多的作为例子

*创建员工表,部门表

createtable dept (

didint,

dnamevarchar(40)

)

createtable emp (

eidint,

enamevarchar(40),

didint

)

*多表之间的查询

多表查询符合就近原则,哪个表离select近,哪个表的信息就优先显示,即显示在左边。

**内连接查询(两个表关联的数据) inner join 连接的表名称 on 两个表连接的条件

***查询员工表和部门表里面关联的数据

=select * from emp inner join dept on emp.did=dept.did;

***还有一种方式也可以实现和内连接相同的效果(都使用这种方式)

=select * from emp,dept where emp.did=dept.did;

**外连接查询(通过在一和多表中设置没有关系的记录)

***左外连接 left outer join 连接表名称 on 连接的条件

=select * from dept left outer join emp on dept.did=emp.did;

***左边表里面的所有数据都显示出来,右边表只是显示关联的数据

***右外连接 right outer join 连接表名称 on 连接的条件

=SELECT * FROM dept right OUTER JOIN emp ON dept.did=emp.did

***右边表里面的所有数据都显示出来,左边表只是显示关联的数据

通过下面这个实例来理解左外连接和右外连接的区别:

部门表(一):

员工表(多):

部门表和员工表各有一个记录没有互相关联,如部门表中第4条记录“天安门”在员工

表中就找不到对应的关联记录。

员工表中第5条记录did值设置为null,没有与部门表产生关联。

》》外连接查询结果如下:

左边的表就是dept表的数据全部显示,右边的表emp只显示了关联数据。

》》外连接查询结果如下:

左边的表就是dept表的只显示关联数据,右边的表emp显示了所有的数据。

===========================================================================================

(1)数据库的介绍

(2)sql分四类

(3)创建数据库

(4)查看数据库

(5)切换数据库

(6)删除数据库

(7)创建数据库表

(8)mysql的数据类型

*varchar和char

*timestamp:自动生成当前时间

(9)创建带约束的表

*有三个约束 非空、唯一、主键

(10)删除数据库表

(11)查看数据库里面的表

(12)插入记录 insertinto 表名 values();

*如果类型int,直接写值

*如果是字符串和日期,使用单引号包起来

(13)更新记录 update 表名 set 字段1=值,字段2=值 where....

(14)删除记录 deletefrom 表名 where...

(15)查询表中的记录(***)

*select 字段名称/* from 表名 where....

* and

*in

*or

*like ‘%a%‘

*not

**select结构

select  .. from... where....group by having ...orderby...

(16)表记录的排序

*order by  字段 asc/desc

(17)聚集函数

*count sum max  min avg

(18)分组操作 groupby 根据哪个字段进行分组

*在分组里面进行条件的筛选,使用 having

(19)mysql的limit关键字

*这个关键字不是标准sql,只能在mysql里面使用

**limit 2,2

***第一个参数表示从第三条记录

***第二个参数从第三条记录向后取两条记录

(20)多表之间的关系

(21)一对多的建表原则

(22)多对多的建表原则

(23)内连接:两个表的关联的数据(交集)

**可以使用另外一种方式实现相同的结果

***select * from a,b wher a.id=b.id;

(24)外连接:左外连接和右外连接

=============================================================

完成任务:(使用cmd操作)

1、把除了查询的sql语句至少写一遍

2、把查询的sql语句至少写两遍

</pre>

时间: 2024-10-14 12:20:35

【黑马程序员】第4课:MySQL入门的相关文章

黑马程序员-ios学习-C语言入门篇-非MAC下编译C的环境,算法的理解-01

很高兴写第一篇技术博客!2011年以后就没在写过博客这东东了!好了,废话扯两句!以下正文 ios开发课程有c语言,那么,我们当前没有购买mac电脑,那我们出了装虚拟机,就用windows跟linux来练习c语言吧,可以缓冲几天,可以做基础测试的时候,可以用到! vc++6.0安装,百度搜索,vc++6.0,然后下载下来,安装,就这么简单!我在我虚拟机里面安装安装一下吧! 点击setup.exe,弹出一个程序兼容的提示框,别理会,点击运行,反正遇到下一步,就点,遇到继续就点,就好了,安装软件简单,

黑马程序员——OC学习小结------OC入门

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一. 1.使用了基类NSObject,要调用Foundation框架的Foundation.h头文件. 2.一个完整的类,包含了类的声明和实现: 3.类的声明:声明对象的属性和行为 @interface Car : NSObject { // 用来声明对象属性(实例变量\成员变量,默认会初始化为0) // @public可以让外部的指针间接访问对象内部的成员变量 @public int whe

应试教育之后,我在黑马程序员找到突破口

正在上高三的弟弟前几天打电话告诉我说"姐姐,我们现在晚自习要上到晚上十一点,今年6月的高考把班级每个学生都弄得人心惶惶--"我突然想起自己当年的高考来-- 高考,于我而言已经是六年前的事情了.但每每提及高考,我仍然会从心底升起一层压力,偶尔在工作或生活中遇到难题,晚上做梦都会梦到自己坐在考场里答题的场景,由此可见高考成了我挥之不去的梦魇.再加之最近应试教育的负面新闻频出,我在搜索引擎中键入"应试教育"四个字,出现的新闻都是:"应试教育还在消磨孩子的个性&q

【黑马程序员】第12课:文件上传&文件下载&注解

<pre> day12 上节内容回顾 1.jstl的标签 *if  choose *forEach <c:forEachvar="l" items="${list}"> 2.jsp开发模式 *模型一 *模型二(mvc模式) **mvc模式 ***m:模型,使用javabean ***v:视图,使用jsp ***c:控制器,使用servlet *dao模式:数据访问对象,专注于对数据库的操作 **首先创建接口,在接口里面定义操作数据库的方法 *

黑马程序员前端培训:高效的前端编程入门训练方法

如今,“前端”这个词已经成为一个大方向的概念,其涵盖的范围可以说非常广:比如浏览器的网页开发.移动App开发.桌面应用开发等等.但是,立足到每一个具体的问题上,前端开发都需要使用到JavaScript这种编程语言.所以,前端学习基础的基础,是要掌握JavaScript这门编程语言. 黑马程序员前端培训,历时多年积累,开设了前端全栈课程.并且通过几千名学员的学习.工作反馈,总结与提炼出以下三点编程入门的训练方法,给想学习前端的初学者一些建议和参考.既然要入门就需要经历一些训练,编程是没有捷径的,可

黑马程序员——网络编程篇

------- android培训.java培训.期待与您交流! ---------- 概述   1.网络模型        (1).OSI参考模型        (2).TCP/IP参考模型   2.网络通讯要素         (1).IP地址        (2).端口号         (3).传输协议    3.过程        1,找到对方IP. 2,数据要发送到对方指定的应用程序上.为了标识这些应用程序,所以给这些网络应用程序都用数字进行标识. 为了方便称呼这个数据,叫做端口(逻

黑马程序员_关于黑马java班入学测试技术分享-后五(二)

??????????????????????????????????????????????????????????????????????????-----Java培训.Android培训.iOS培训..Net培训.期待与您交流! 作为本人首篇黑马技术博客有必要交代一下背景.个人理解博客的用作在于于己在于交流,于他在于学习,在交流学习中共同成长.下面进入正题.本文主要是介绍在做黑马入门测试时的一些问题(这个应该不是泄露题库吧). 本文只要是讲述黑马程序员基础测试题的6-10题,回过头来分析明显

黑马程序员:从零基础到精通的前端学习路线

随着互联网的深入发展,前端开发工程师一跃成为市场上非常抢手的人才.很多同学,包括以前做UI的.Java的.或者对于IT完全零基础的同学都想学习前端.下图是网上流传甚广的一张前端学习思维导图,很多初学者表示看到这些密密麻麻的知识点就已经晕了.确实,前端是一门涵盖面很广的学科.但是想学前端的你也不用慌张,内容虽多但有迹可循,只要循序渐进就不怕学不好前端! 那么前端开发到底需要学什么?应该怎么学?接下来黑马程序员前端学院教你如何从零基础学习前端. 一.前端开发入门 在入门阶段,你首先要学会最基本的技能

黑马程序员_spring2.5视频教程--视频列表

\黑马程序员_spring2.5视频教程\01Struts相关基础理论介绍.mp4; \黑马程序员_spring2.5视频教程\02搭建struts开发环境.mp4; \黑马程序员_spring2.5视频教程\03用struts开发简单的登陆示例程序.mp4; \黑马程序员_spring2.5视频教程\10.使用构造器装配属性.mp4; \黑马程序员_spring2.5视频教程\11Resource注解完成属性装配.mp4; \黑马程序员_spring2.5视频教程\12编码剖析@Resourc

大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17

黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目标:把mp3保存到数据库中! 在my.ini中添加如下配置! max_allowed_packet=10485760 1 什么是大数据 所谓大数据,就是大的字节数据,或大的字符数据.标准SQL中提供了如下类型来保存大数据类型: 类型 长度 tinyblob 28--1B(256B) blob 216