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

       

原文地址:https://www.cnblogs.com/beast-king/p/12696785.html