数据库基础复习笔记
数据库
相关概念
名称 | 全称 | 检查 |
---|---|---|
数据库 | 存储数据的仓库,数据是有组织的进行存储 | 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 ;