Mysql数据库

举报
不会压弯的小飞侠 发表于 2022/08/09 00:29:22 2022/08/09
【摘要】 Mysql数据库 文章目录 Mysql数据库@[TOC](文章目录) 一、DDL操作数据库1.查询2.创建3.删除4.使用数据库 二、DDL操作表1.创建表2.查询表3.修改表...

Mysql数据库

一、DDL操作数据库

1.查询

show databases;

  
 
  • 1

2.创建

a.创建数据库

create databases 数据库名称;

  
 
  • 1

b.创建数据库(判断,如果不存在则创建)

create databases if not exists 数据库名称; 

  
 
  • 1

3.删除

a.删除数据库

drop databases 数据库名称;

  
 
  • 1

b.删除数据库(判断,如果存在则删除)

drop databases if not exists 数据库名称;

  
 
  • 1

4.使用数据库

a.查看当前使用数据库

select databases();

  
 
  • 1

b.使用数据库

use 数据库名称;

  
 
  • 1

二、DDL操作表

1.创建表

create table 表名(
         字段名1 数据类型1,
         字段名2 数据类型2,
         字段名3 数据类型3,
         .................
         .................
         .................
);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.查询表

a.查询当前数据库下的所有表名称

show tables;

  
 
  • 1

b.查询表结构

desc 表名称;

  
 
  • 1

3.修改表

a.修改表名

alter table 表名 rename to 新表名;

  
 
  • 1

b.添加一列

alter table 表名 add 列名 数据类型;

  
 
  • 1

c.修改数据类型

alter table 表名 modify 列名 新数据类型;

  
 
  • 1

d.修改列名和数据类型

alter table 表名 change 列名 新列名 新数据类型;

  
 
  • 1

e.删除列

alter table 表名 drop 列名;

  
 
  • 1

4.删除表

drop table 表名;

  
 
  • 1

5.案例

在这里插入图片描述

二、DML操作数据

1.添加数据

在这里插入图片描述
案例:
在这里插入图片描述

2.删除数据

在这里插入图片描述
案例:
在这里插入图片描述

3.修改数据

在这里插入图片描述
案例:
在这里插入图片描述

三、DQL

在这里插入图片描述

1.基础查询

在这里插入图片描述

1.查询多个字段

在这里插入图片描述

2.去除重复记录

在这里插入图片描述

3.起别名

在这里插入图片描述

2.条件查询

在这里插入图片描述

--条件查询
--查询年龄>40
select * from stu where age>40;
--查询年龄大于40小于60
select * from stu where age>40 && age<60;
select * from stu where age>40 and age<60;
select * from stu where age between 20 and 60;
--查询出生日期从1990-2000年
select * from stu where hire_date between 1890-00-01 and 1990-12-01;
--查询年龄为64
select * from stu where age=64;
--查询年龄不为64
select * from stu where age!=64;
--查询年龄为44,45,64
select * from stu where age=64 || age=45 || age=44;
select * from stu where age=64 or age=45 or age=44;
select * from stu where age in (44,45,64);
--查询英语成绩为null
select * from stu where english is null;


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

3.模糊查询

--模糊查询
--查询姓张的
select * from stu where name like '张%';
--查询名字第二个字是奎的
select * from stu where name like '_奎%';
--查询名字中包含飞的
select * from stu where name like '%飞%';

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

4.排序查询

在这里插入图片描述

--排序查询
--按照年龄升序排序
select * from stu order by age asc;
--按照数学成绩降序排序
select * from stu order by math desc;
--按照数学成绩降序排序,如果相等按照英语成绩升序排序
select * from stu order by math desc,english asc;

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

5.聚合函数

在这里插入图片描述

--聚合函数
--查询一共有多少人,counto统计列名不能为null,可以是主键或*
select count(id) from stu;
select count(*) from stu;
--查询数学成绩最高分
select max(math) from stu;
--查询数学成绩最低分
select min(math) from stu;
--查询数学成绩总分
select sum(math) from stu;
--查询数学成绩平均分
select avg(math) from stu;
--查询英语成绩最低分(因为英语成绩中有个为null)null不参与聚合函数运算
select min(english) from stu;


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

6.分组查询

在这里插入图片描述

--分组查询
--查询男同学和女同学的数学平均分
select sex,avg(math) from stu group by sex;
--查询男同学和女同学的数学平均分,以及各自的人数
select sex,avg(math),count(*) from stu group by sex;
--查询男同学和女同学的数学平均分,以及各自的人数,要求分数大于60的进行分组
select sex,avg(math),count(*) from stu where math>60 group by sex;
--查询男同学和女同学的数学平均分,以及各自的人数,要求分数大于70的进行分组,分组后人数大于3
select sex,avg(math),count(*) from stu where math>70 group by sex having count(*) >3;

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

7.分页查询

在这里插入图片描述

--分页查询
--从0开始查询,查询三条数据
select * from stu limit 0,3; 
--每页查询三条数据,查询第一页数据
select * from stu limit 0,3; 
--每页查询三条数据,查询第一页数据
select * from stu limit 3,3; 
每页查询三条数据,查询第一页数据
select * from stu limit 6,3;

注意:起始索引=(当前页码-1*每页条数

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

四、约束

1.约束概述

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

2.约束案例

create table emp(
id int primary key auto_increment,  --非空唯一,自增
ename varchar(50) not null unique,  --非空唯一
joindate date not null,   --非空
salary double(7,2) not null,  --非空
bonus double(7,2) default 0   --
);

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.外键约束

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

五、多表查询

在这里插入图片描述

1.内连接

在这里插入图片描述
案例:

--多表查询
select * from dept,emp;
--消除无效数据
--隐式内连接
select * from emp,dept where emp.dep_id =dept.did;
--查询emp表的name,gender,dept的dname
 select emp.name,emp.gender,dept.dname from emp,dept where emp.dep_id =dept.did;
 --给表起别名
 select e.name,e.gender,d.dname from emp e,dept d where e.dep_id =d.did;
 --显示内连接
 select * from emp inner join dept on emp.dep_id =dept.did;
 --join可以省略
 select * from emp inner join dept on emp.dep_id =dept.did;
 

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2.外连接

在这里插入图片描述
案例:

--左外连接
 select * from emp left join dept on emp.dep_id =dept.did;
 --右外连接
 select * from emp right join dept on emp.dep_id =dept.did;

  
 
  • 1
  • 2
  • 3
  • 4

3.子查询

在这里插入图片描述

案例:

--子查询
 --单行单列
 --查询高于猪八戒的工资
 select salary from emp where name='猪八戒'; 
 select * from emp where salary>(select salary from emp where name='猪八戒');
 --多行单列
--查询财务部和市场部的所有人信息
select did from dept where dname='财务部';
select * from emp where dep_id in(select did from dept where dname='财务部' or dname='市场部');
--多行多列
--查询入职日期是2011-11-11之后的员工信息和部门信息
select * from emp where join_date>'2011-11-11';
select * from (select * from emp where join_date>'2011-11-11') t,dept where t.dep_id =dept.did;


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

文章来源: blog.csdn.net,作者:不会压弯的小飞侠,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_43514330/article/details/125135088

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。