数据库基础复习笔记

发布于:2025-05-14 ⋅ 阅读:(9) ⋅ 点赞:(0)

数据库

相关概念

名称 全称 检查
数据库 存储数据的仓库,数据是有组织的进行存储 DataBase(DB)
数据库管理系统 操作和管理数据库的大型软件 DataBase Management System(DBMS)
SQL 操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 Structured Query Language(SQL)

主流的关系型数据库:

  • Oracle:收费且昂贵
  • MySQL:收费+免费
  • Microsoft SQL Server :微软,收费

MySQL数据库

  • 关系型数据库(RDBMS)

    概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

    特点:1、使用表存储数据,格式统一,便于维护;2、使用SQL语言操作,标准统一,使用方便。

SQL通用语法

  • SQL语句可以多行书写可以单行书写,以分号结尾;
  • SQL语句可以使用空格/缩进来增强语句的可读性;
  • MySQL数据库的SQL语句不区分大小写,关键字建议使用大写;
  • 注释:
    • 单行注释:–注释内容 或 # 注释内容(MySQL特有)
    • 多行注释:/* 注释内容*/

SQL分类

分类 全称 说明
DDL Data Definition Language 数据定义语言,用来定义数据库对象(数据库,表,字段)
DML Data Manipulatiuon Language 数据操作语言,用来对数据库表中的数据进行增删改
DQL Data Query Language 数据查询语言,用来查询数据库中表的记录
DCL Data Control Language 数据控制语言,用来创建数据库用户、控制数据库的访问权限

DML

介绍

DML英文全称为:Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增删改操作。

01添加数据 INSERT
1、给指定字段添加数据
INSERT INTO 表名 (字段1,字段2...) VALUES (1,值2...);
2、给全部字段添加数据
INSERT INTO 表名 VALUES (1,值2...);
3、批量添加数据
INSERT INTO 表名 VALUES (1,值2...),(1,值2...),(1,值2,...);
INSERT INTO 表名 VALUES (1,值2,...),(1,值2,...),(1,值2,...);
02修改数据 UPDATE
UPDATE 表名 SET 字段名1 =1,字段名2 =2...[WHERE 条件];
03删除数据 DELETE
DELETE FROM 表名 [WHERE 条件];

DQL

介绍

DQL英文全称Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。

语法

SELECT	字段列表

FROM	表名列表

WHERE	条件列表

GROUP BY	分组字段列表

HAVING	分组后条件列表

ORDER BY	排序字段列表

LIMIT	分页参数
基本查询
1、查询多个字段
SELECT 字段1,字段2,字段3...FROM 表名;
SELECT * FROM 表名
2、去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表;

聚合函数

介绍

将一列数据作为一个整体,进行纵向计算。

常见聚合函数
函数 功能
count 统计数量
max 最大值
min 最小值
avg 平均值
sum 求和
语法
SELECT 聚合函数(字段列表) FROM 表名;

[!CAUTION]

null值不参与聚合函数运算!

分组查询

语法
SELECT 字段列表 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];

执行顺序:where>聚合函数>having

排序查找

语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2,排序方式2;

排序方式:

  • ASC:升序(默认值)
  • SESC:降序

[!CAUTION]

如果是多字段排序,当第一个字段值相同时,才会依据第二个字段进行排序。

分页查询

语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;

注意!!!

  • 起始索引从0开始,起始索引 = (查询页面 - 1) * 每页显示的记录数。
  • 分页查询是数据库的方言,不同数据库有不同,LIMIT是MySQL的实现方式。
  • 如果查询的是第一页数据,起始索引可以省略不写,直接简写为limit 10。

DQL-执行顺序

FROM > WHERE > GROUP BY > SELECT > ORDER BY > LIMIT

上面所有用的SQL语句

show databases ;
show tables ;
desc user;

INSERT INTO user(id, name, age, workno, gender, idcard, entrydate) VALUES (1,'tom',18,'1','男','123456789098765432','2000-01-03');
select * from user;
INSERT INTO user(id, name, age, workno, gender, idcard, entrydate) VALUES (1,'nike',-1,'2','男','123456733398765432','2003-06-03');
insert into user values(4,'mei',19,'6','女','123456733398765432','2003-06-03');
select * from user;
insert into user values (5,'nnn',19,'6','女','123456733398765432','2003-06-03'),(8,'mmm',19,'6','女','123456733398765432','2003-06-03')
select * from user;

update user set name = 'itheima' where id = 1;
select * from user;

update user set name = '小三',gender = '女' where id=1;
update user set entrydate = '2008-01-01';

delete from user where id = 1;
delete from user ;


insert into user(id,workno,name,gender,age,idcard,workaddress,entrydate)
values (1,'1','刘岩','女','20','123456789012345678','北京','2000-01-01'),
       (2,'2','张无忌','男','18','123456789012347778','北京','2005-09-01'),
       (3,'3','韦一笑','男','38','123456789015545678','上海','2005-08-01'),
       (4,'4','赵敏','女','18','123456789055555678','北京','2009-12-01'),
       (5,'5','小昭','女','16','123456789012745678','上海','2007-07-01'),
       (6,'6','杨逍','男','28','123456789012345698','北京','2006-01-01'),
       (7,'7','刘岩','女','20','123456789012375678','北京','2000-01-01');

select name,workno,age from user;
select * from user;
select workaddress as '工作地址' from user;
select distinct workaddress from user;

select * from user where age = 18;
select * from user where age < 19;
select * from user where age <= 20;
select * from user where idcard is null;
select * from user where idcard is not null;
select * from user where age != 18;
select * from user where age >= 15 and age < 20;
select * from user where gender = '女' and age < 25;
select * from user where age = 18 or age = 20 or age = 28;
select * from user where age in (18,20,28);
select * from user where name like '__';
select * from user where name like '___';
select * from user where idcard like '%8';


select count(*) from user;
select count(idcard) from user;
select avg(age) from user;
select max(age) from user;
select min(age) from user;
select sum(age) from user where workaddress = '北京';

select gender,count(*) gender from user group by gender;
select gender,avg(age) gender from user group by gender;
select workaddress,count(*)  from user where age < 45 group by workaddress having count(*) >= 3;

select *from user order by age asc ;
select *from user order by age desc;
select *from user order by entrydate desc ;
select *from user order by age asc , entrydate desc ;

select *from user limit 0,5;
select *from user limit 1,5;

select *from user where gender = '女' and age in (20,21,22,23);
select *from user where gender = '男' and ( age between 20 and 40 )and name like '___';
select gender,count(*) from user where age<60 group by gender;
select name,age from user where age <= 35  order by age asc ,entrydate desc;
select * from user where gender= '男' and age between 20 and 40 order by age,entrydate asc limit 2;

select name,age from user where age > 15 order by age asc ;

网站公告

今日签到

点亮在社区的每一天
去签到