MySQL数据库基础和SQL语言入门,学习过后真的很硬核
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的
RDBMS (Relational Database Management System,关系数据库管理系统)
应用软件。
MySQL的安装和配置
参考文档:https://jingyan.baidu.com/article/9f7e7ec04407ff6f29155478.html
相关概念:
数据库: 数据的仓库,存储数据的地方。
表: 分类对数据进行存储,实际保存数据的地方
列(字段): 具体的一项信息,如:姓名、年龄
行(记录): 实际的实体信息
主键: 能唯一地标识一行记录的列
Navicat图形工具的使用:
Navicat for MySQL是常用的MySQL客户端工具,可以从网上下载,免费使用30天。
参考文档:https://jingyan.baidu.com/article/d7130635cd6b7913fcf47573.html
MySQL数据类型:
SQL语言:
SQL全称是结构化查询语言(Structured Query Language)。使用SQL能进行数据库的增删查改。学习数据库的基本核心内容就是SQL。
SQL分类如下:
数据定义语言(DDL:Data Definition Language)
数据操作语言(DML:Data
Manipulation Language)
数据查询语言(DQL:Data
Query Language)
数据控制语言(DCL:Data
Control Language)
一、DDL
数据库定义语言:
创建数据库
create
database 数据库名;
使用数据库
use 数据库名;
删除数据库
drop
database 数据库名;
drop
database if exists 数据库名;
创建表
create
table 表名(
列名 数据类型 约束,
...
);
主键:primary
key
自动增长: auto_increment
删除表
drop
table 表名;
drop
table if exists 表名;
练习:
创建my_db数据库
在my_db中,创建学生表,包含编号(主键,自增)、姓名、年龄和地址
二、DML
数据新增
insert into 表名(列1,列2...)
values(值1,值2...)
示例:
-- 插入一行记录
insert
into student(name,age,gender,address)
values('张三',20,'男','湖北武汉');
-- 插入多行记录
insert into
student(name,age,gender,address)
values
('李四',20,'男','湖北武汉'),
('李大四',22,'女','北京'),
('李小四',25,'女','北京'),
('李四四',27,'女','上海');
-- 将表中的数据插入到其它表
insert into
student2(name,age,gender,address)
select
name,age,gender,address from student;
注意:
1、自动增长列不要添加数据
2、列的数量、类型和顺序要和值一致
数据修改
update 表名 set
列1=值1,列2=值2
where 条件
示例:
-- 更新李小四的地址为四川成都
update
student set address = '四川成都'
where
name = '李小四';
-- 更新多列
update student set
address = '四川成都',age = 18
where name = '李小四';
数据删除
delete from 表名
where 条件
示例:
-- 删除id=2的学生
delete
from student where id = 5;
练习:
在学生表中添加5行记录,
更新id为5的学生年龄为22
删除id为3的学生
四、DQL
查询所有数据
select * from 表;
查询指定字段的所有数据
select 列1,列2
from 表;
where条件查询
select * from 表
where 条件
=、!=、in、not
in、and、or
示例:
-- 查询所有行所有列
select * from
student;
-- 查询部分列
select
name,address from student;
-- 添加where条件 查询id为2的学生
select
* from student where id = 2;
-- 查询id不为2的
select * from
student where id != 2;
-- 查询地址为湖北武汉以及四川成都的学生
select * from
student where address = '湖北武汉' or address = '四川成都';
-- 查询年龄20岁以上的男的
select * from
student where age >= 20 and gender = '男';
-- 查询地址为湖北武汉以及四川成都的学生2
select * from
student where address in('湖北武汉','四川成都');
-- 查询地址不是湖北武汉以及四川成都的学生
select * from
student where address not in('湖北武汉','四川成都');
去掉重复数据
distinct关键字
select distinct 列
from 表;
示例:
-- 查询学生的地址,不重复
select DISTINCT
address from student;
-- 给列设置别名
select id 编号,name
姓名,age
年龄,gender
性别,address
地址
from student;
-- 查询年龄在20到25之间的女生
select * from
student where age >= 20 and age <=25 and gender='女';
select * from
student where age between 20 and 25 and gender ='女';
-- 查询北京或武汉的男生
select * from
student where address in ('北京','湖北武汉')
and gender ='女';
排序查询
select * from 表
order by 列 desc\asc
示例:
-- 按年龄升序排序
select
* from student where gender = '男'
order by age asc;
-- 降序
select * from
student order by age desc;
分页查询
limit n; 返回长度为n的行
limit n,m; 返回从n位置,长度为m的行
select * from
tb_name limit 5; 显示结果的前5条记录
select
* from tb_name limit 0,5; 区段查询
示例:
-- 按年龄升序排序
select * from
student where gender = '男' order by age
asc;
-- 降序
select * from
student order by age desc;
-- 通过limit限制行数 前5行
select * from
student limit 5;
-- 通过limit分页查询 第一页 第0行到第5行,第二页 第6行到第10行...
select * from
student LIMIT 0,5;
select * from
student LIMIT 5,5;
select * from
student LIMIT 10,5;
练习:
年龄最大的男学生
年龄最小的五个女学生
聚合函数
求和:sum
求平均值:avg
求最大值:max
求最小值:min
求数量: count
示例:
select
sum(col_name) from tb_name;
分组查询
group by 分组列
where 在分组之前进行条件筛选
having 在分组之后进行条件筛选
where --> group
by ---> having
示例:
-- 使用聚合函数
select sum(age) 总年龄,avg(age)
平均年龄,
max(age) 最大年龄,min(age)最小年龄,count(*)
学生数量
from student;
-- 求来之不同地方的学生人数
select address 籍贯,count(*)
人数
from student group by address;
-- 求男女学生的人数
select gender 性别,count(*)
人数,avg(age)
平均年龄
from student group by gender;
-- 求人数超过5人的籍贯
select address 籍贯,count(*)
人数
from student
group by address
having count(*) >= 5;
-- 年龄总和超过200的性别
select gender 性别,sum(age)
总年龄
from student
group by gender
having sum(age) > 200;
模糊查询
通配符:
% 匹配任意多字符
_ 匹配一个字符
like关键字
示例:
-- 查找所有姓李的人
select * from
student where name like '李%';
select * from
student where name like '%大%';
select * from
student where name like '李_';
作业
写SQL语句:
1、创建员工表:
维修部
2、在表中插入上面的数据
3、更新id为2的工资,将工资加200
4、删除年龄低于20的员工
5、查询年龄超过24,工资小于5000的员工
6、查询每个部门的工资总和和平均年龄
7、查询平均工资小于4000的部门
发表评论 取消回复