黑马就业班第四天-数据库

来源:互联网 发布:淘宝红包链接 编辑:程序博客网 时间:2024/06/06 00:21

mysql数据库

1、数据库的简介
 就是一个文件系统,使用标准sql对数据库进行操作(crud)

    (2)常见的数据库
    * oracle:是oracle公司产品,是大型的收费的数据库
    * db2:是ibm公司的产品,是大型的收费的数据库
    * SQLServer:是微软公司产品,是中型的数据库
    * MySQL : 在oracle收购之后6.x版本开始收费,之前的版本是免费的。
    * SQLite:是小型的嵌入式数据库,应用在客户端开发中,比如安卓

    (3)关系数据库:存储的是实体之间的关系
    * 比如有购物网站,有用户,订单,商品,称为实体
    * 用户、订单和商品之间的关系称为实体之间的关系
    * 使用er图表示实体之间的关系
    ** 实体使用矩形、在实体上面属性使用椭圆,之间的关系使用菱形

2、mysql的卸载
    第一步,找到mysql的安装路径,找到一个文件my.ini文件找到两个路径,复制出来
    basedir="C:/Program Files (x86)/MySQL/MySQL Server 5.5/"
    datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

    第二步,打开控制面板,找到安装的mysql数据库,进行卸载

    第三步,找到第一步复制出来的两个路径,把这两个路径的里面的所有的文件都删除

    第四步,打开注册表 regedit,搜索mysql,找到了都删除

    第五步,重新启动系统

3、mysql服务器的存储结构
    (1)mysql服务器
    * 服务器:从硬件上,服务器就是一台电脑;从软件上,在电脑上安装了服务器软件。
    * mysql服务器:在一台电脑上,安装了mysql数据库,这台电脑称为mysql服务器。
    (2)mysql服务器的存储结构
    * 有多个数据库,在每个数据库里面有多个数据库表,在每个表里面有多条记录

    * 学习重点:对数据库、数据库表、表中的记录的操作(crud操作)

4、sql语言简介
    (1)数据库是文件系统,使用标准sql对数据库进行操作
    * 标准sql,在mysql里面使用语句,在oracle、db2都可以使用这个语句

    (2)什么是sql
    * Structured Query Language, 结构化查询语言,对数据库进行操作
    * sql非过程性语言,不需要依赖于其他的条件就可以运行
    ** 比如 在java里面
    *** if(a > 5) {
        System.out.....
        }

    (3)sql的分类
    第一类:DDL (数据定义语言)
        * 创建数据库,创建数据库表
        * 常用的语句 create
    第二类:DML  (数据操纵语言)
        * 对表中的记录进行增加 修改 删除操作
        * 常用的语句 insert  update  delete
    第三类:DCL (数据控制语言)
        * 数据库的编程的语言
    第四类:DQL (数据查询语言)
        * 对表中的进行查询的操作
        * 常用的语句 select
    
    * 学习的主要内容:使用sql语言对数据库、数据库表、表中的记录进行增删改查(crud)操作

5、使用sql对数据库操作
    (1)连接数据库
    * 打开cmd窗口,使用命令,连接mysql数据库
    * 命令: mysql -u root -p 密码

    (2)创建数据库
    * 语句: create database 数据库的名称;
    ** 示例:create database testdb1;

    (3)查看所有的数据库
    * 语句:show databases;

    (4)删除数据库
    * 语句:drop database 要删除的数据库的名称;
    ** 示例: drop database testdb1;

    (5)切换数据库
    * 如果想要创建一个数据库表,这个表要在一个数据库里面,所以需要切换到数据库
    * 语句:use 要切换的数据库的名称;
    ** 示例:use testdb2;

6、使用sql对数据库表操作
    (1)创建数据库表
    * 语句 create table 表名称 (
        字段 类型,
        字段 类型
          )
    
    * 创建表 user,字段  id  username  password  sex
    create table user (
        id int,
        username varchar(40),
        password varchar(40),
        sex varchar(30)
    )

    (2)mysql的数据类型
    字符串型
    VARCHAR、CHAR
    * 当创建表时候,使用字符串类型,name varchar(40),指定数据的长度
    * varchar和char的区别
    ** varchar的长度是可变的,比如 name varchar(5),存值 a ,直接把a存进去
    ** char的长度是固定的,比如 name char(5),存值 b,把b存进去,后面加很多空格

    大数据类型
    BLOB、TEXT
    * 使用这个类型可以存储文件,一般开发,不会直接把文件存到数据库里面,存文件的路径

    数值型
    TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
    * 对应java里面
    byte       short    int  long    float  double

    逻辑性
    BIT
    * 类似java里面的boolean

    日期型
    DATE:用于表示日期 1945-08-15
    TIME:用于表示时间 19:10:40
    
    下面的两个类型可以表示日期和时间
    DATETIME:手动添加时间到数据表里面
    TIMESTAMP:自动把时间添加到表里面

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

    (4)mysql的约束有三种
    第一种,非空约束 not null
        * 表示数据不能为空

    第二种,唯一性约束 unique
        * 表中的记录不能重复的

    第三种,主键约束 primary key
        * 表示非空,唯一性
        * 自动增长 auto_increment

    (5)创建带约束的表
    create table person (
        id int primary key ,
        username varchar(40) not null,
        sex varchar(20)
    )
    
 

    (6)删除表
    * 语句 drop table 要删除表的名称;

    (7)查看当前的数据库里面有哪些表
    * 语句 show tables;

7、使用sql对表中的记录进行操作(增删改查操作)
    (1)向表里面添加记录 insert
    * 语句 insert into 要添加的表名称 values(要添加的值);
    * 注意:当添加的字段的数据类型是int类型,直接写值
    如果添加的字段的类型是varchar类型和日期类型,使用单引号把值包起来
    
    * 练习:向user表里面添加记录
    insert into user values(1,'aaa','123456','nan');

    * 自动增长的效果
    ** 创建一个表
    create table stu (
        id int primary key auto_increment,
        sname varchar(40)
    )
    insert into stu values(null,'aaa');


    (2)修改表里面的记录 update
    * 语句 update 表名称 set 要修改的字段的名称1=修改的值1,要修改的字段的名称2=修改的值2 where 条件

    * 练习:修改user表里面id=1的username修改为QQQ,修改password为999
    update user set username='QQQ',password='999' where id=1;

    (3)删除表里面的记录 delete
    * 语句 delete from 表名称 where 条件
    
    * 练习:删除user表里面id=1的记录
    delete from user where id=1;
    ** 不添加where条件,把表里面的所有的记录都删除
    

    (4)查询表中的记录 select
    * 语句 select 要查询的字段的名称 (*) from 表名称 where 条件

    * create table user (
        id int,
        username varchar(40),
        chinese int,
        english int
    )

    * insert into user values(1,'lucy',100,30);
    insert into user values(2,'mary',60,80);
    insert into user values(3,'jack',90,20);

    * 练习一:查询user表里面的所有的数据
    select * from user;

    * 练习二:查询user表里面用户名和语文成绩
    select username,chinese from user;

    * 练习三:查询user表里面id=2的数据
    select * from user where id=2;

    (4)别名
    * as 别名
    select username as u1,chinese as c1 from user;

    (5)distinct,去除表里面重复记录
    * 语句 select distinct * from 表名;

    (6)where子句
    第一,运算符 < > >= <=
    * 练习:查询user表里面语文成绩大于60的所有的人员
    select * from user where chinese > 60;

    第二,in:在范围内
    * 练习:查询user表里面英语成绩是80、90的人员的信息
    select * from user where english in (80,90);

    第三,and:在where里面如果有多个条件,表示多个条件同时满足
    * 练习:查询user表里面语文成绩是100,并且英语成绩是30的人员的信息
    select * from user where chinese=100 and english=30;

    第四,得到区间范围的值
    * 练习:查询user表里面语文成绩在70-100之间的值
    写法一,select * from user where chinese >=70 and chinese <=100;
    写法二,select * from user where chinese between 70 and 100;

    第五,like:模糊查询
    * 练习:查询user表里面username包含a的人员信息
    select * from user where username like '%a%';

    (7)查看当前的运行的数据库
    select database();

    (8)对表中查询的记录排序 order by
    * order by写在select语句的最后
    第一,升序 order by 要排序字段 asc(asc可以省略,默认的情况下就是升序)
    * 练习:对user表里面查询的数据,根据语文成绩进行升序排列
    select * from user order by chinese asc;

    第二,降序 order by 要排序字段 desc
    * 练习:对user表里面的英语成绩进行降序排列
    select * from user order by english desc;


8、聚集函数
    (1)使用提供一些函数,直接实现某些功能
    (2)常用的聚集函数
    第一,count()函数
    * 根据查询的结果,统计记录数
    * 写法 select count(*) from ...where....

    * 练习一;查询user表里面有多少条记录
    select count(*) from user;

    * 练习二:查询user表里面语文成绩大于60的人员有多少
    select count(*) from user where chinese>60;
    
    第二,sum()函数
    * 求和的函数
    * 写法 select sum(要进行求和字段) from ...where....

    * 练习一:得到user表里面的语文的总成绩
    select sum(chinese) from user;

    * 练习二:得到user表里面语文总成绩,英语的总成绩
    select sum(chinese),sum(english) from user;

    * 练习三:得到user表里面语文成绩的平均分(总的成绩/总的人数)
     select sum(chinese)/count(*) from user;

    第三,avg()函数
    * 计算的平均数的函数
    * 写法 select avg(要计算平均数的字段名称) from ...

    * 练习:得到user表里面语文成绩的平均分
    select avg(chinese) from user;

    第四,max()函数:计算最大值
    * 写法 select max(字段) from...

    第五,min()函数:计算最小值
    * 写法 select min(字段) from...

    * 练习:得到user表里面语文成绩的最高分数,英语的成绩最低分数
    select max(chinese),min(english) from user;

9、分组操作
    分组使用 group by 根据分组的字段
    在分组的基础之上再进行条件的判断 having,后面可以写聚集函数
    (1)举例说明
    * 创建表 orders
    create table orders (
        id int,
        name varchar(40),
        price int
    )

    insert into orders values(1,'电视',2000)
    insert into orders values(2,'电视',2000);
    insert into orders values(3,'苹果',10);
    insert into orders values(4,'手机',500);
    insert into orders values(5,'手机',500);
    insert into orders values(6,'鼠标',33);
    insert into orders values(7,'鼠标',33);

    (2)练习一:统计orders表里面每类商品的总的价格
    select name,sum(price) from orders group by name;

    (3)练习二:对商品进行分类,得到每类商品的总价格大于66的商品
    select name,sum(price) from orders where sum(price)>66 group by name;
    = 上面的语句在逻辑上没有问题,在语法上,where里面不能写聚集函数,报错
    正确的写法:
    select name,sum(price) from orders group by price having sum(price)>66;

10、mysql的可视化工具使用
    (1)使用工具创建数据库,创建表,向表添加记录,删除表中的记录
    
11、mysql的关键字limit
    (1)limit关键字查询表中的某几条记录
    (2)limit关键字不是标准sql的关键字,只能在mysql数据库里面使用,实现分页的功能
    * 在oracle里面特有关键字 rownum
    * 在sqlserver里面特有关键字 top

    (3)使用limit查询前几条记录
    * 写法: limit 前几条记录  limit 3
    * 练习:查询user表里面前三条记录
    select * from user limit 3;
    select * from user limit 0,3;

    (4)使用limit查询第几条到第几条记录
    * 写法: limit 第一个参数,第二个参数
    ** 第一个参数开始的记录数的位置,从0开始的
    ** 第二个参数从开始的位置向后获取几条记录
    * 练习:查询user表里面第二条到第四条记录
    select * from user limit 1,3;

12、重置mysql的root密码
    (1)知道密码,修改密码
    第一,连接mysql数据库
    第二,切换数据库 mysql  use mysql
    第三,进行密码的修改 update user set password=password('要修改成的密码的值') where user='root';
    第四,重新启动mysql服务

    (2)忘记密码,重置密码
    第一,把mysql的服务关闭
    第二,打开cmd窗口,输入命令 mysqld --skip-grant-tables(不要加分号)
    第三,再打开cmd窗口,连接数据库,不需要输入密码  mysql -u root
    第四,切换数据库 mysql  use mysql
    第五,进行密码的修改 update user set password=password('要修改成的密码的值') where user='root';
    第六,把两个cmd窗口都关闭,打开任务管理器,找到mysqld进程,结束
    第七,启动mysql服务


【多表操作:】
inner join;
left join;
right join;

select ifnull(chinese,0)
0 0
原创粉丝点击