【HM】第4课:MySQL入门

  1. 云栖社区>
  2. 博客>
  3. 正文

【HM】第4课:MySQL入门

技术小胖子 2017-11-16 22:56:00 浏览675
展开阅读全文

<pre>

 

day04

 

昨天内容回顾

         1js创建函数的两种方式

 

         2js函数的重载

 

         3js的全局函数(会用)

 

         4html绑定事件三种方式

 

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

                   **重点  onsubmit

        

         6dom是什么

 

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

 

         8dom里面的对象documentelement、属性、文本、node

         9DTHML 是很多技术的简称

 

         10document对象四个方法

 

         11innerHTML属性 做两件事情

 

         12)表单的提交方式

         13)表单的验证

                   *按钮是submit,使用onsubmit事件

                   *button按钮验证

 

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

                   *json格式

                   *js解析json数据

思维导图

wKiom1WPV5nznON1AAHG3BynoPM752.jpg

     

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 回车(注意不要加分号,会出错 ,会提示输入密码,我现在电脑密码(1234)。

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

 

4sql介绍

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

         2StructuredQuery Language, 结构化查询语言

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

         **比如在java里面

                   if(i> 3) {

                            system........

                   }

        

         3sql的分四类

         * DDL (数据定义语言)

                   ** 使用的语句 create语句

         * DML (数据操纵语言)

                   ** 使用的语句 insert update delete

         * DCL (数据控制语言)

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

         * DQL (数据查询语言)

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

         4sql注释

                   /**/

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

         );

        

         2mysql的数据类型

                   字符串型

                   VARCHARCHAR

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

                   **字符串类型指定长度

                   **varcharchar区别:

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

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

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

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

 

                   大数据类型

                   BLOBTEXT

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

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

 

                   数值型

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

                   TINYINTSMALLINTINTBIGINTFLOATDOUBLE

                   对应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    |      |

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

 

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

         *mysql里面有三个约束

         第一:非空约束 not null

                   usernamevarchar(40) not null,

 

         第二:唯一性约束unique

 

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

                   usernamevarchar(40) primary key,

                   *自动增长:auto_increment,注意这个约束只能修饰int型的字段。

                 

                看到资料里主键还有一种写法,就是在创建表的时候写在表结构中。

                如:

                create table shop(

                    article int,

                    dealer varchar(20),

                    price double(16,2),

                    PRIMARY KEY(article,dealer)

                );

                意思就是如果一条记录中article和dealer字段的值同时相等,这条记录就是

                非法的,创建时会发生错误。

         第四:补0约束 unsigned zerofill(不足位数自动补零)

         第五:缺省约束 default 

         *创建带约束的表

                   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 into  表名称 values(字段1值,字段2值),(字段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=1username修改为wangwu

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

 

                   *修改person表里面id=100name修改为lucysal修改为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:数据所在的范围(指的是枚举,不是连续的

                   ***查询数学成绩是80100学生的信息

 

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

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

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

                   =select * from stu where sname like '%%';

 

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

 

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

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

            (5)子查询

                    在select查询语句的where条件中再嵌套一个select查询语句。

                例1:新建shop表,表结构如下:

                    各字段涵义如下:

                    article:编号

                    dealer:销售商

                    price:价格    

                

wKioL1WPzjzjtK1tAABl8xmDm4E233.jpg

                给shop表添加了一些数据:

                

wKiom1WPzJ_xSfbJAAB1Rw6NYzI088.jpg

                查询1:找出最贵物品的编号、销售商、价格

                    初步分析:查询大致应这么写

                    SELECT article,dealer,price from shop where price =();

                    

    

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

         1)数据库的介绍

         2sql分四类

        

         3)创建数据库

         4)查看数据库

         5)切换数据库

         6)删除数据库

 

         7)创建数据库表

         8mysql的数据类型

                   *varcharchar

                   *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聚集函数

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

         =select count(*) from 表名;

 

         *练习

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

         =select count(*) from stu;

 

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

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

 

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

         *练习

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

         =select sum(math) from stu;

 

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

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

 

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

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

 

 

         3max(): 得到最大值

         *练习

         计算班级中数学的最高分

         =select max(math) from stu;

 

         4min(): 得到最小值

         *练习

         计算班级中英语的最低分

         =select min(english) from stu;

 

         5avg(): 计算平均数

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

         =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条件里面

 

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

 

12select语句的书写规范

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

 

13mysql的可视化工具的使用

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

        (1)登录服务器:

              wKioL1WPUPPgc5M7AAIN7523umE889.jpg

        (2)执行查询命令

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

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

            wKiom1WPT2Kx_kWxAAH3EA0dRmo693.jpg      

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

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

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

       部门表(一):

         wKiom1WPSHDDcs7cAAA-orv65P8108.jpg                             

    员工表(多):

      wKioL1WPSseDcuKIAABb5JZfewQ222.jpg  

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

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

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

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

       wKiom1WPSSKSRC7sAAD42jlJmys859.jpg 

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

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

        wKioL1WPSvWx7HqEAAEswl0rQso952.jpg

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

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

         1)数据库的介绍

         2sql分四类

        

         3)创建数据库

         4)查看数据库

         5)切换数据库

         6)删除数据库

 

         7)创建数据库表

         8mysql的数据类型

                   *varcharchar

                   *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

 

         19mysqllimit关键字

                   *这个关键字不是标准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>







      本文转自屠夫章哥  51CTO博客,原文链接:http://blog.51cto.com/4259297/1668637,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
技术小胖子
+ 关注