zoukankan      html  css  js  c++  java
  • MySQL数据库板书

    一、课程介绍

    《数据库的原理和应用》是一个前导课程,也是一个基础课程。是《应用程序开发》类的课程的基础课程。

    二、数据库产品介绍

    目前主流的数据库有:

    Oracle(美国甲骨文公司),大中型应用程序。(java+Oracle)

    SQL Server(美国微软公司),.NET应用程序。(C#+SQL Server)

    MySQL(美国甲骨文公司),中小型网站。(Java+MySQL,PHP+MySQL)

    三、MySQL基础

    1、创建数据库

    数据库是一个容器,里面有表、视图、存储过程等。

    格式:create  database  <数据库名>;

    查看数据库:show databases;

    使用数据库:use  <数据库名>;

    2、创建表

    表是用来存储数据,表是数据库中最重要的一个对象。

    格式:create  table  <表名>(

      <字段名>  <字段类型>(宽度) ,

      ...

    );

    示例:

    create table product(
      id int auto_increment primary key, --auto_increment表示自动编号,primary key表示主键。
      name varchar(50),
      price float,
      image varchar(255)
    );

    查看表结构:

    desc <表名>

    查看表数据(查询):

    select  *  from <表名>

    插入数据:

    insert into <表名>(<字段名1>,<字段名2>,...)   values(<值1>,<值2>,...)

    一、查询语句(select)

    1、基本格式:select   <字段列表>   from    <表名>

    说明:

      *表示所有字段。

      如果查部分字段,需要指定,字段间用逗号隔开。

      指定标题使用as,如:select  id  as  '编号', name  as  '名称'  from product;

      去重的关键字:distinct

      例如:select distinct teamid from player where chinesename like '%杰克逊%'

     2、条件子句where

      格式:where  <条件>

      说明:条件是一个逻辑表达式。

      比较运算符:>  <  >=  <=  !=

      逻辑运算符:not   and    or

      范围运算符:<字段> between <值1> and <值2>

      in运算符:<字段> in (<值1>,<值2>,...)

      like运算符:like '含通配符的字符串',主要作模糊查询

        mysql的通配符:

          %表示任意个字符(0~n)

          _表示任意1个字符(0~1)

            []表示范围

    3、排序子句

      格式:order by <字段> [desc | asc]

      说明: desc表示降序(值由大到小),asc表示升序(值由小到大),默认为升序。

    4、limit子句

      格式:limit([偏移量],<记录数>)

    5、分组子句

      格式:group by <字段> [having <条件>]

      说明:having <条件>表示限定分组,即对分组后的结果进行筛选。

      聚合函数(统计函数):

        count(<字段>):记录个数

        sum(<数值字段>):求和

        avg(<数值字段>):求平均值

        max(<数值字段>):求最大值

        min(<数值字段>):求最小值

     6、多表的连接查询

      (1)全连接查询

      格式:select <字段列表> from <表1>,<表2> where <表1>.<连接字段>=<表2>.<连接字段>

      功能:从多张表查询数据

       (2)join连接

        a、内连接

        格式:select <字段列表> from <表1> a inner join <表2> b on <表1>.<连接字段>=<表2>.<连接字段>

        b、外连接

          左外连接

           格式:select <字段列表> from <表1>left join <表2> on <表1>.<连接字段>=<表2>.<连接字段>

          右外连接

           格式:select <字段列表> from <表1>right join <表2> on <表1>.<连接字段>=<表2>.<连接字段>

        c、交叉连接

        格式:select <字段列表> from <表1>cross join <表2>

     7、子查询

      概念:子查询就是一个SQL语句中嵌套的一个select语句。  

      (1)比较子查询

      格式:select <字段列表> from <表名> where <字段>  <比较运算符>  <子查询>

      说明:此时子查询的结果必须是单值。

      举例:查询身高最高的球员的中文名和身高。

        查询超过平均身高的球员的中文名和身高。

      (2)in子查询

      格式:select <字段列表> from <表名> where <字段>  in  <子查询>

      说明:该子查询结果应是一个单列的结果集。

      (3)exists子查询

      格式:select <字段列表> from <表名> where  exists <子查询>

    二、数据库的基本操作:增、删、改、查 

      1、增(insert)

      格式:insert into <表名>[(<字段列表>)] values(<值列表>)

      2、删(delete)

      格式:delete from <表名> where <条件>

      3、改(update)

      格式:update <表名> set <字段1>=<值1>,...where <条件>

    三、约束(constraint)

    1、主键约束(Primary Key)

      主键是用来唯一地表示一个实体,为了防止出现重复的记录。

      一个表只能有一个主键。

      例如:学生(学号,姓名,……)

      (1)在创建表时候创建主键约束

        create table <表名>(

                <字段1> <类型1>  primary key,  --列的完整性约束

                <字段2> <类型2>  ,

                ...

                 )

        

        create table <表名>(

                <字段1> <类型1> 

                <字段2> <类型2>  ,

                primay key(<字段1>)  --表的完整性约束

                 )

        (2)在表创建后添加主键约束

          alter table <表名>  add primary key(<字段名>)

    2、唯一约束(unique)

      限制某个字段不要出现重复值

    (1)在创建表时候创建唯一约束

        create table <表名>(

                <字段1> <类型1> unique,  --列的完整性约束

                <字段2> <类型2>  ,

                ...

                 )

        

        create table <表名>(

                <字段1> <类型1> 

                <字段2> <类型2>  ,

                unique(<字段1>)  --表的完整性约束

                 )

        (2)在表创建后添加唯一约束

          alter table <表名>  add unique(<字段名>)

    3、检查约束(check)

      设置某个字段取值范围。

      

    (1)在创建表时候创建检查约束

        create table <表名>(

                <字段1> <类型1> check(<条件>),  --列的完整性约束

                <字段2> <类型2>  ,

                ...

                 )

    4、外键约束(参照完整性约束Foreign key)

       外键不是当前表的主键,是别的表的主键。

      外键一定要取自于父表的主键。

        create table <表名>(

                <字段1> <类型1> ,

                <字段2> <类型2>  ,

                foreign key(<外键字段>) references <父表>(<主键字段>)  --表的完整性约束

                 )

        (2)在表创建后添加唯一约束

          alter table <表名>  add check(<条件>)

      作业:

      (一)导入数据

      (1)下载study.sql文件。

        链接:https://pan.baidu.com/s/13LBdCVssRBDHTesd0dnqvQ
        提取码:tiuj 

      (2)将study.sql脚本文件复制到d盘。

      (3)登录mysql服务器,进入mysql提示符状态。

      (4)mysql>create database study;

      (5)mysql>use study;

      (6)mysql>source  d:/study.sql;

      (7)mysql>show tables;

      (8)mysql>select * from player;

      (二)完成以下查询并截图

      (1)查询身高(height)220以上的球员的编号(id),姓名(chinesename),身高(height)信息。

      (2)使用between..and..运算符查询球龄(playAge)10~15之间(含10和15)的球员的编号(id),姓名(chinesename),球龄(playAge)信息。

      (3)查询位置(position)是'中锋'的球员的编号(id),姓名(chinesename),位置(position)信息。

      (4)使用in运算符查询球队编号(teamid)为13或15或17的球队的球员的编号(id),姓名(chinesename),球队编号(teamid)信息。

      4月21日作业1:

      (5)从player表中查询中文姓名以"杰克逊"结尾的所有球员的编号(id),姓名(chinesename),英文名(englishname)。

      (6)从player表查询英文名为"Chris Paul"的球员的编号(id),姓名(chinesename),英文名(englishname)。

      (7)从player表中查询中文姓名含"詹姆斯"的所有球员的编号(id),姓名(chinesename),英文名(englishname)。

      (8)如果以20条记录为1页对所有球员的记录进行分页,请查询第11页的球员的编号(id),姓名(chinesename),英文名(englishname)。

      (9)查询身高(height)由高到低的前10位球员的编号(id),姓名(chinesename),身高(height)信息。

      4月21日作业2:
      (10)从球员表player中查询全联盟现役球员的年龄age最大值和最小的值。

      (11)从球员表player中查询全联盟现役球员的平均身高。

      (12)分别统计每个球队的球员数,结果字段有球队编号teamid和球员数。

      (13)统计球员数大于或等于20的球队编号teamid和球员数。

      4月28日作业1:

        数据准备:

        提示:先使用use study;切换数据库

        (a)向球队表team中添加一支球队

          insert into team(id,name) values(31,'啦啦队');

        (b)向球员表player中添加一名球员

          insert into player(id,chinesename) values(540,'周琦');

        (c)分别对两表进行全连接、内连接、左外连接、右外连接和交叉连接查询,只查球员编号id,球员中文名chinesename和球队名name,并提交相应的结果截图(共5张)。

        

      4月28日作业2:

      子查询:

      (1)查询球员中文名chinesename含“杰克逊”的球队的队名name。

      (2)查询身高height最高的球员所在的球队的球队编号id和球队名称name。

      (3)查询身高height高于全联盟平均身高的球员的球员编号id,球员中文名chinesename和身高height。

      增、删、改:

      创建2个表:

      (a)国家表empire3

      

       (b)武将表person

      

       (c)添加记录

      

      

       (d)删除姓名为空的记录

         (e)将“关云长”的姓名改成“关羽”。

       

      5月9日作业1:
      (1)创建班级表bj,班级编号cid作主键约束且自动编号, 班级名cname作唯一约束

      (2)创建学生表xs,学生编号sid作主键约束且自动编号,学生姓名sname字符串,学生的年龄sage整型作检查约束,取值范围(10-99),班级编号cid作外键约束参照班级表的班级编号

      (3)输入记录

          班级表bj

          

          学生表xs

           

  • 相关阅读:
    测试服务器centos7安装php7.2+composer
    开发工作流程
    CKEditor4多个span标签不合并的问题
    编程面试题
    vagrant常用命令
    设置apache服务器的访问证书,支持https访问,windows
    PHP5实现foreach语言结构遍历一个类的实例
    virtualbox虚拟机ubuntu操作系统,设置网络互通、访问,能访问虚拟机swoole的http服务
    二进制位运算
    dedecms学习笔记(1)--ShowMsg()
  • 原文地址:https://www.cnblogs.com/beast-king/p/12696785.html
Copyright © 2011-2022 走看看