MySQL的基本使用

MySQL的基本使用

  • 数据库就是一种特殊的文件,其中存储着需要的数据

一、命令行脚本

1.1.命令行连接

mysql -uroot -p  回车后输入密码

1.2.退出登录

quit 和 exit 或 ctrl+d

1.3.数据库操作

  • 查询所有数据库
show databases;
  • 使用数据库
use 数据库名字
  • 查看当前使用的数据库
select database();
  • 创建数据库
create database 数据库名 charset=utf8;
  • 删除数据库
drop database 数据库名;

1.4.数据表操作

  • 查询数据库中所有表
show tables;
  • 查看表结构
desc 表名;
  • 修改表–添加字段
alter table 表名 add 列名 类型;
  • 修改表–修改字段:重命名版
alter table 表名 change 原名 新名 类型及约束;
  • 修改表–修改字段:不重命名版
alter table 表名 modify 列名 类型及约束
  • 修改表–删除字段
alter table 表名 drop 列名
  • 删除表
drop table 表名;
  • 查询表的创建语句
show create table 表名;

二、MySQL-查询

2.1.向表中插入数据

insert into 表名 values()
  • 查询所有字段
select * from 表名;
  • 查询指定字段
select name from students;
  • 使用as起别名
select id as 序号,name as 名字 from students;
  • 消除重复行
select distinct age from students;
2.2.条件

使用where子句对表中的数据筛选,结果为true的行会出现在结果集中

  • 语法
select * from students where id=1;
  • where后面支持多种运算符,进行条件的处理
    比较运算符
    逻辑运算符
    模糊查询
    范围查询
    空判断
比较运算符
  • 等于: =
  • 大于: >
  • 大于等于: >=
  • 小于: <
  • 小于等于: <=
  • 不等于: != 或 <>

例:

select * from students where id > 3;
逻辑运算符
  • and,or,not

例:

select * from students where id > 3 and gender=0;
select * from students where id < 4 or is_delete=0;
模糊查询
  • like
  • % 表示任意多个字符
  • _表示一个任意字符

例:查询姓黄的学生

select * from students where name like "黄%";
select * from students where name like "黄_";
范围查询
  • in 表示在一个非连续的范围内

例:查询编号是1或3或8的学生

select * from students where id in(1,3,8);
  • between …and …表示在一个连续的范围内

例:查询编号为3至8的学生

select * from studnets where id between 3 and 8;
空判断
  • is null

例:查询没有填写身高的学生

select * from students where height is null;
  • 判断非空 is not null

例:差询填写了身高的学生

select * from students where height is not null;
优先级
  • 优先级由高到低的顺序为:小括号,not,比较运算符,逻辑运算符
  • and比or先运算,如果同时出现并希望先算or,需要结合()适应
2.3.排序

为了方便查看数据,可以对数据进行排序

语法:

select * from 表名 order by 列1 asc|desc [,2 asc|desc,...]

说明:

  • 将行数据按照列1进行排序,如果某些行列1的值相同,则按照列2排序,以此类推
  • 默认按照列值从小到大排序(asc)
  • asc从小到大排列,即升序
  • desc从大到小排序,即降序

例:查询未删除男生信息,按学号降序

select * from students where gender=1 and is_delete=0 order by id desc;
2.4.聚合函数
  • 总数:count(*)表示计算总数,括号中写星与列名,结果是相同的

例:查询学生总数

select count(*) from students;
  • 最大值:max(列)表示求此列的最大值

例:查询女生的编号最大值

select max(id) from students where gender=2;
  • 最小值:min(列)表示求此列的最大值

例:查询未删除的学生最小编号

select min(id) from students where is_delete=0;
  • 求和:sum(列)表示求此列的和

例:查询男生总年龄

select sum(age) from students where gender=1;
--平均年龄
select sum(age)/count(*) from students where gender=1;
  • 平均值:avg(列)表示求此列的平均值

例:查询未删除女生的编号平均值

select avg(id) from students where is_delete=0 and gender=2;
2.5.分组
group by
  • 1.group by的含义:将查询结果按照1个或多个字段进行分组,字段值相同的为一组
  • 2.group by可用于单个字段分组,也可用于多个字段分组
select gender from students group by gender;
group by + group_concat()
  • 1.group_concat(字段名)可以作为一个输出字段来使用
  • 2.表示分组之后,根据分组结果,使用group_concat()来放置每一组的某字段的值的集合
select gender,group_concat(name) from students group by gender;
group by + 集合函数
  • 1.通过group_concat()的启发,我们既然可以统计出每个分组的某字段的值的集合,那么我们也可以通过集合函数来对这个值的集合做一些操作
select gender,avg(age) from students group by gender;
group by + having
  • 1.having条件表达式:用来分组查询后指定一些条件来输出查询结果
  • 2.having作用和where一样,但having只能用于group_by
select gender,count(*) from students group by gender having count(*)>2;
2.6.分页

语法:

select * from 表名 limit start,count

说明:

  • 查询前3行男生信息
select * from students where gender=1 limit 0,3;
2.7.连接查询
  • 内连接查询:查询的结果为两个表匹配到的数据
  • 右连接查询:查询的结果为两个匹配到的数据,右表特有的数据,对于左表中不存在的数据使用null填充
  • 左连接查询:查询的结果为两个表匹配到的数据,左表特有的数据,对于右表中不存在的数据使用null填充
语法
select * from1 inner或left或right join 表2 on 表1.=2.

例:使用内连接查询班级表与学生表

select * from students inner join classes on students.cls_id = classes.id;

例:使用左连接查询班级表与学生表

select * from students as s left join classes as c on s.cls_id = c.id;

例:使用右连接查询班级表与学生表

select * from students as s right join classes as c on s.cls_id = c.id;

例:查询学生姓名及班级名称

select s.name,c.name from students as s inner join classes as c on s.cls_id = c.id;
2.8.子查询

在一个select 语句中,嵌入了另外一个select语句,那么嵌入的select语句称之为子查询语句

主查询

主要查询的对象,第一条select语句

主查询和子查询的关系
  • 标量子查询:子查询返回的结果是一个数据(一行一列)
  • 列子查询:返回的结果是一列(一列多行)
  • 行子查询:放回的结果是一行(一行多列)
标量查询
  1. 查询班级学生平均年龄
  2. 查询大于平均年龄的学生

查询班级学生的平均身高

select * from students where age > (select avg(age) from students);
列级子查询
  • 查询还有学生在班的所有班级名字
  • 1.找出学生表中所有的班级 id
    2.找出班级表中对应的名字
select name from classes where id in (select cls_id from students);
行级子查询
  • 需求: 查找班级年龄最大,身高最高的学生
  • 行元素: 将多个字段合成一个行元素,在行级子查询中会使用到行元素
select * from students where (height,age) = (select max(height),max(age) from students);
子查询中特定关键字使用
  • in 范围
    格式:主查询 where 条件 in(列子查询)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值