当前位置: 首页 > news >正文

6.5 自学测试 数据库基础 Day5

一、数据库简介

(一)数据库存储阶段发展

1.人工管理阶段:不方便管理和查询

2.文件系统阶段:查询不是很方便

3.数据库阶段:有组织的数据集合,方便维护和管理查询

数据库:是指长期存储在计算机内、有组织的数据集合。简而言之,数据库就是一个存储数据的地方

(二)数据库分类

1.关系型数据库 RDMS:将数据间的关系以数据库表的形式加以表达,并将数据存储在表格中,以便于查询

常用的关系型:Oracle、MySQL、Microsoft、SQLite

2.非关系型数据库 NoSQL

常用的非关系型:Redis、Mongodb、Hbase

(三)关系型数据库核心要素

1.数据行:一条记录

2.数据列:字段

3.数据表:数据行的集合

4.数据库:数据表的集合、一个数据库中能够有n多个数据表

先有库、再有表、再有内容

(四)SQL介绍

SQL:Structured  Query  Language(结构化查询语言),通过SQL语言可以对数据库进行操作。

SQL语言分类:

DQL:数据查询语言,用于对数据进行查询,例如:select

DML:数据操作语言,对数据进行增加、修改、删除,例如:insert、update、delete

注意:主流的关系型数据库都支持SQL语言,在MySql中SQL语言不区分大小写

二、MySql简介

(一)MySQL特点

(二)常用的数据类型

(三)数据约束

数据约束主要是指对数据库中数据进行限制,以确保数据的正确性、有效性、一致性。

常见数据约束有:

  • 主键(primary key):物理上存储的顺序
  • 非空(not null):此字段不允许填写空值
  • 唯一(unique):此字段的值不允许重复
  • 默认值(default):当不填写此值时会使用默认值,如果填写时以填写为准
  • 外键(foreign key):维护两个表之间的关联关系

三、命令操作数据库和表

(一)操作数据库

说明:操作数据库之前要选通过工具连接到数据库。

常见数据库操作命令:

  • 查看所有数据库:show    databases;
  • 使用数据库:use  数据库名;
  • 查看当前使用数据库:select   database();
  • 创建数据库:create  data   base  数据库名  charset=utf8;
  • 删除数据库:drop   database   数据库名;

(二)操作数据表

说明:操作数据表之前要选通过use打开对应的数据库。

常见数据表操作命令:

  • 查看当前数据库所有的表:show  tables;
  • 查看表结构:desc  表名;
  • 查看表的创建语句:show  create table 表名;

四、SQL语言

(一)数据库表操作

1.创建数据库表

create table 表名 (字段名1 类型 约束,字段名2 类型 约束,……….….)

例如:create table  students (name  varchar  (10),age   int  unsigned )

2.删除数据库表

drop   table   表名

drop   table  if exists 表名

例如:drop   table  students

           drop   table   if   exists    students

(二)数据的增删改查操作

1.简单查询

select * from 表名;

例如:select   *    from    students;

2.添加一行数据

insert  into  表名  values(  )

insert  into  students  values ( 0,‘mike’,22,177.34)

insert  into 表名(字段1,字段2) value (值1,值2)

insert  into  students (name)  values  ('坤坤')

3.添加多行数据

方法一:写多条insert 语句,多条用英文分号分隔

方法二:通过一条insert 语句插入多条数据,数据间用英文逗号分隔

insert  into  表名  values  (...) , (...)  ...

insert  into  students  values  (0 ,'亚瑟3 ',23 ,167.56) , (0 ,'亚瑟4' ,23 ,167.56)

4.修改数据

update  表名 set  字段名1 = 值1,字段名2 = 值2 where 条件

例如: update  students  set   name='狄仁杰'  ,age=20  where  id=5 

5.删除数据 

delete  from 表名  where  条件 

例如 :delect  from  students  where id = 6

Truncate  删除数据:  truncate   table  表名

Drop   删除表:drop   table   表名

(三)数据查询操作

1.条件查询

select  字段1,字段2...  from  表名   where   条件;

例如:   select   *  from   students   where   id=1;

2.模糊查询

关键词:like

%:匹配任意多个字符

_:匹配一个任意字符

例1:查询姓孙的学生  select  *  from   students  where   name  like' 孙%'

例2:查询姓孙且名字是一个字的学生  select * from  students  where  name  like '孙_'

3.范围查询

in 表示在一个非连续的范围内

select  *  from  students  where  hometown  in('北京','上海','广东')

between...and...表示在一个连续的范围内例

select  *  from  students  where  age between 18  and  20

4.排序

select  *  from   表名   order   by   字段名1  asc|desc,字段名2   asc|desc

asc:升序(默认)

desc:降序

5.聚合函数

6.分组查询

select  字段1,字段2, 聚合函数...  from   表名   groupby  字段1,字段2...

查询各种性别的人数    select   sex,count(*)   from   students   group   by  sex

7.分组后的筛选

select   字段1,字段2, 聚合...  from  表名   group   by  字段1,字段2,字段3...  having   条件

select  sex,count(*)  from   students   group   by  sex   having   sex='男'

8.having与where对比

  • where是对from后面指定的表进行数据筛选,属于对原始数据的筛选。
  • having是对groupby的结果进行筛选。
  • having后面的条件中可以用聚合函数,where后面不可以。

9.获取部分数据

select  *  from  表名  limit  start , count

例如: 查询前3行学生信息   select  *  from   students   limit 0, 3

10.连接查询——内连接

方法一:select  *   from   表1   inner   join   表2    on   表1.列 = 表2.列

方法二:select  *   from  表1,表2   where   表1.列  =  表2.列

查询学生信息及学生的成绩

方法一:select *  from  students stu inner  join  scores sc  on  stu.studentNo  =  sc.studentNo

方法二:select *  from  students stu, scores sc where  stu.studentNo  =  sc.studentNo

11.连接查询——左连接(左表特有的数据,右边不存在为null)

select   *   from   表1   left   join   表2   on   表1.列=表2.列

12.连接查询——左连接(右边特有数据,左边不存在为null)

select   *   from   表1   right   join   表2   on   表1.列=表2.列

13.自关联

inner  join 关联同一个表,不同的字段,自关联要用别名

查询河南省所有的市

Select  *   from   areas   as   a1  inner  join   areas    as   a2   on   a1.aid  =  a2.pid   where   a1.atitle  ='河南省'; 

相关文章:

  • C++11 右值引用
  • 第十八章 归档与备份
  • python打卡训练营打卡记录day48
  • JS的数据类型分类
  • 自动交换两个文件的文件名 VSB脚本技巧 电脑技巧
  • java面试:JAVA并发篇
  • 《双指针》题集
  • Codeforces Educational 179(ABCDE)
  • 聊聊集群间数据复制和持久化机制
  • 联邦学习与边缘计算结合
  • Ubuntu 上安装 Git LFS
  • 算法打卡17天(补)
  • Docker知识五:服务编排(Docker Compose概念)
  • HTML前端开发:JavaScript的条分支语句if,Switch
  • 矩阵详解:从基础概念到实际应用
  • 对F1分数的基本认识
  • 深入理解 Spring Cache 及其核心注解
  • 电路图识图基础知识-电动机正反转控制电路详解(二十)
  • 关于 ffmpeg设置摄像头报错“Could not set video options” 的解决方法
  • 需求用例的前置条件和后置条件
  • 烟台做网站打电话话术/短视频培训机构
  • 关于开通网站建设的请示/宣传推广计划
  • 织梦模板怎么单独做移动端网站/怎么宣传自己的产品
  • 自己怎么找回智慧团建密码/网站搜索引擎优化方案的案例
  • 为什么自己做的网站别人打不开/电商seo搜索优化
  • 做教育网站多少钱/seo营销策略