数据库基础

基本概念

什么是数据库?
数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来
使得用户可以对非常方便对数据库中的数据进行增加,修改,删除及查询操作
为什么要使用数据库?
原始IO流的方式将数据读写到文件中费时费力
在这里插入图片描述
使用数据库的形式:
在这里插入图片描述
数据库管理软件
分为服务器端和客户端

数据库的分类

关系型数据库
  关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。
主流关系型数据库:Oracle,Microsoft SQL Server,MySQL,PostgreSQL,DB2,Microsoft Access, SQLite,Teradata,MariaDB(MySQL的一个分支),SAP
非关系型数据库
  NoSQL,泛指非关系型的数据库
  非关系型数据库以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销
主要代表:redis
优点
  用户可以根据需要去添加自己需要的字段,为了获取用户的不同信息,不像关系型数据库中,要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询。
不足:
  只适合存储一些较为简单的数据,对于需要进行较复杂查询的数据,关系型数据库显的更为合适。不适合持久存储海量数据

控制台登录mysql

命令说明
mysql -u用户名 -p密码使用指定用户名和密码登录当前计算机中的MySQL数据库。mysql -uroot -p1234(本地登录)
mysql -h主机名 -u用户名 -p密码使用指定用户名和密码登录 网络上指定主机中 的MySQL数据库。例如:mysql -h127.0.0.1(ip地址) -uroot -p1234(本地登录可以省略 -hIp地址)127.0.0.1 本机的ip地址远程连接 使用root用户,密码1234登录网络上127.0.0.1主机的MySQL数据库

备份:mysqldump -uroot -p1234 数据库名>文件位置(无需登录)

还原:登录进去、创建一个空数据库、选中数据库、执行source 文件位置命令

SQL语句

  • SQL语句可以单行或多行书写,以分号结尾
  • MySQL数据库的SQL语句不区分大小写,关键字建议使用大写,而数据库名,数据表名,列名建议使用小写
  • 同样可以使用/**/的方式完成多行注释(MySQL还可以使用#作为单行注释)
    分类
  • 数据定义语言:简称DDL(Data Definition Language),用来定义数据库对象:数据库,表,列等。针对的是结构上的改变(create、drop、alter)
  • 数据操作语言:简称DML(Data Manipulation Language),用来对数据库中表的记录进行更新。结构上没有变化,数据变化了(insert、update、delete)
  • 数据查询语言:简称DQL(Data Query Language),用来查询数据库中表的记录。(结构和数据都没变化)select
  • 数据控制语言:简称DCL(Daat Control Language),用来定义数据库的访问权限和安全级别,及创建用户。(DBA数据库管理员)(了解)

mysql数据类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

DDL操作数据库结构

创建数据库

命令说明
create database 数据库名;在当前服务器下创建指定名称的数据库。配置数据库时我们指定了utf8,那么数据库默认字符集就是utf8
create database 数据库名 character set 字符集;在当前服务器下创建指定名称的数据库,并且指定数据库的字符集

查看/选中数据库

命令说明
use 数据库名;切换数据库。
select database();查看当前正在操作使用的数据库名称。
show databases;查看MySQL服务器中有哪些数据库
show create database 数据库名;查看某个数据库的定义的信息

删除数据库drop database 数据库名称;

DDL操作数据表结构

创建表
create table 表名(
​ 字段1 类型(长度),
​ 字段2 类型(长度),
​ …
​)
查看表

命令说明
show tables;查看当前数据库中的所有表名;
desc 表名;查看某张数据表的表结构

删除表drop table 表名;
修改表结构格式alter table 表名 关键字

DML更新表记录

插入表记录insert into
INSERT INTO category(cid,cname) VALUES(1,‘手机’);

  • 值与字段必须对应,个数相同,类型相同
  • 值的数据大小必须在字段的长度范围内
  • 除了数值类型,其它的字段类型的值必须使用单引号/双引号引起(varchar、date)。
  • 如果要插入空值,可以忽略不写字段,或者插入 null。
  • 插入表的全部字段,可以不写字段名和括号

更新表记录update
更新所有记录的指定字段

update 表名 set 字段1 = 值1,字段2 = 值2

更新符合条件记录的指定字段

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

  • 列名的类型与修改的值要一致.
  • 修改值得时候不能超过最大长度.
  • 除了数值类型外,其它的字段类型的值必须使用引号引起

删除表记录delete from

  • 语法:

    • 逐条删除表中所有记录

    delete from 表名;

    • 逐条删除表中符合条件的记录

    delete from 表名 where 条件;

truncate (摧毁表结构,然后创建一张一模一样的表)
delete 只是删除表中的数据,表结构还在

DQL查询数据

查询并展示表中所有记录
select * from 表名
简单查询
查询并展示表中符合要求的记录
select * from 表名 where 条件

  1. 别名查询.使用的关键字是:as
    列别名、表别名
  • 别名的引号可加可不加
  • as 可以省略
  1. 去掉重复值 关键字:distinct

  2. 查询结果是表达式(运算查询):将所有员工的工资+1000元进行显示.

条件查询where

语句说明
BETWEEN …AND…查询某一区间的值 between 50 and 100 >=50 <=100
IN(set)满足集合中任意条件 in (1,2,3,4)
LIKE ‘张pattern’模糊查询 % 任意字符 ‘%张%’ _ 一个字符 ‘张_’
IS NULL判断是否为空
and多个条件同时满足
or满足任意一个条件即可
not除了

单表操作

排序
order by 字段 需要写在sql语句的最后

升序:asc(默认)

降序:desc

1.使用薪水排序(降序)

SELECT * FROM emp ORDER BY salary DESC

2.在薪水排序(降序)的基础上,以id排序(降序)

#即若薪水相同,相同薪水格的数据以id降序排序

SELECT * FROM emp ORDER BY salary DESC,id DESC;
聚合函数
使用聚合函数查询是纵向查询,它是对某一列的值进行计算,然后返回一个单一的值;
另外聚合函数会忽略null空值。

  • count(字段):统计指定列不为NULL的记录行数;、
  • sum(字段):计算指定列的数值和
  • max(字段):计算指定列的最大值
  • min(字段):计算指定列的最小值
  • avg(字段):计算指定列的平均值

分组
按部门分组、按小组分组、分类名称

分组查询是指使用group by字句对查询记录进行分组运算。

格式:

SELECT 字段1,字段2… FROM 表名 GROUP BY 分组字段;

统计每个部门的人数:
SELECT 字段1,字段2… FROM 表名 GROUP BY分组字段 HAVING 分组条件;

分组操作中的having子语句,是用于在分组后对数据进行过滤的,作用类似于where条件。
where 和 having的区别:

​ 1、where 是分组前对条件进行过滤,having是分组后对条件进行过滤

​ where age > 22 group by sex

​ group by sex having age > 22

​ 2、where后不能跟聚合函数,having后可以跟上聚合函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值