Mysql基础知识总结-增删改查

03.sql语句的应用
前期内容:
01.软件的结构
https://blog.csdn.net/weixin_45847161/article/details/109460308
02.静态网站的运行和数据库介绍
https://blog.csdn.net/weixin_45847161/article/details/109481147

一.数据库知识

1.数据库的管理(navicat功能操作)
①展示数据库
②创建数据库:

  • 数据库名称:字母,数字,下划线三者任意组合,不可以有其他特殊符号。
  • 字符集:中文的字符集为 utf8 或utf8mb4。

③修改数据库:

  • 只可以修改字符集,不可以修改名字。

④删除数据库
⑤选择数据库

2.表的管理
①设计表

  • 字段名:必须使用英文,不能使用符号,也不能使用保留字段(数据库中已经用过的字段)作名字。
  • 字段类型:常见的有数字(int),字符串(varchar),时间(datetime)。(不知道是什么类型的时候直接设置为字符串类型;数字类型一般用于有运算的场景下)
  • 字段长度:限制字段输入数据的大小,按需分配,不浪费空间和资源。
  • 主键:作用是作为每一行数据的标志,是唯一的且不能为空。一般选择第一列作为主键,且只有一个主键,其他为副键。
  • 注释:解释该字段名表达的意思
  • 默认值:想表示当前时间时可以在此处填写“now()”;默认为字符串的输入要加英文的引号*“输入内容”*
  • 是否为空:选填
  • 方法:自动递增
  • 索引

②修改表:鼠标右键点击“设计表”,会回到编辑界面。
③删除表
④查看表

3.数据的操作
①增添:插入数据
②修改
③删除
④查看:筛选排序功能
⑤排序

4.关系型数据库中的表之间的关系
逻辑关系:表与表之间有相互关联,一一对应的信息。

5.数据的导入导出
转储SQL文件 — 结构和数据
在这里插入图片描述
导出后运行SQL文件(运行成功后要刷新得到所运行的SQL文件中的表)
在这里插入图片描述
二.命令行操作数据库

  1. 命令行工具
    常用的有cmd,powershell,Xshell等等。主要讲解cmd的使用。
  2. 连接和断开数据库
    ①连接数据库命令:mysql -h “ip地址” -P “端口号” -u “账号名” -p
    输入该条命令后回车,根据提示再输入密码。
    host (IP): -h
    Port (端口号):-P
    user (账号):-u
    password (密码):-p
    ②断开数据库命令:exit
    终止命令:Ctrl c
  3. 数据库的管理
    ①展示数据库命令:show databases;
    (所有sql语句都要用英文的分号“;”结尾)
    ②选择数据库命令:use 数据库名字;
  4. 表的管理
    展示表命令:show tables;
    断开数据库命令:exit
    查看表命令:
    select * from 表名;
    select 字段1,字段2,字段3 from 表名;
    select * from 表名 where 字段=‘值’ (and 字段1=‘值’);
  5. 数据的操作
    ①增:insert into 表名(字段1,字段2) values (值1,值2);
    ②删:delete from 表名 where 条件;
    ③改:update 表名 set 字段1=值1,字段2=值2;
    ④查:
  • select * from 表名;(* 代表所有字段)
  • select 字段名1,字段名2 from 表名;(选择想要查询的字段)
  • select * from 表名 where 字段1=值1 and 字段2=值2;(有条件查询,字符串要加‘’)*

⑤多表联查:

  • select * from 表1 join 表2 on 表关系 where 字段1=值1 and 字段2=值2; (join 表3 on 表关系…)
    eg:select * from t_student join t_class on t_student.cid = t_class.id join t_grade on t_grade.sid=t_student.id where sex=‘女’;
  • select 字段1,字段2 from 表1 join 表2 on 表关系; (join 表3 on 表关系…)
    eg:select t_student.id,t_student.sname,t_class.cname,t_grade.chinese,t_grade.math,t_grade.english from t_student join t_class on t_student.cid = t_class.id join t_grade on t_grade.sid=t_student.id where sex=‘女’;
    PS:由于这样写比较繁琐,我们选择简化的方法——别名as(表1 as a,as可以省略不写),那么这条命令可以改写为:select a.id,a.sname,b.cname,c.chinese,c.math,c.english from t_student a join t_class b on a.cid = b.id join t_grade c on c.sid=a.id where sex=‘女’;
    注意:别名不能用在where语句中,别名不能加引号。
  • 左关联:left join
  • 右关联:right join

⑥排序

  • 正序 :… order by 字段 asc;(asc是默认的可省略)
  • 倒序 :… order by 字段 desc;
    eg: select a.id,a.sname,b.cname,c.chinese,c.math,c.english from t_student a join t_class b on a.cid = b.id join t_grade c on c.sid=a.id where sex=‘女’ order by age desc;

⑦限制查询显示的数量

  • … limit 从哪一条开始显示,显示数量;
    limit 0,2;(计算机从0开始计算)

⑧聚合函数(会自动排除空值)
整列求和:sum()
平均值:avg()
计数:count()
最大值:max()
最小值:min()

⑨分组(分组必须要和聚合函数配合使用,除了分组条件,所有字段都需要使用聚合函数):group by

1)select 字段1,count(*) from 表名 group by 字段1
eg:select b.cname,avg(c.chinese),avg
(c.math),avg(c.english) from t_student a join t_class b on a.cid = b.id join t_grade c on c.sid=a.id group by b.cname;

2)分组前的数据查询用where
分组后的数据查询用having
eg:select b.cname,avg(c.chinese),avg
(c.math),avg(c.english) from t_student a join t_class b on a.cid = b.id join t_grade c on c.sid=a.id group by b.cname having avg(c.chinese)>90;

3)条件语句:case when 字段1=值1 then 字段2 end (case开始 当… 那么… end结束)
eg:case when c.name = ‘语文’ then b.score end (如果c.name显示语文,那么显示成绩b.score)

4)虚拟表:通过select语句查询出现的查询结果,可以视作虚拟表,也可以运用select查询语句对其进行嵌套查询。
eg:select (select * from…) from…

  1. 数据库的逻辑判断
    ①判断:
    -in(在不在)
    eg:select * from t_student where address in(“成都”);
    (取反)select * from t_student where address not in(“成都”);
    -is(判断是否为空)
    eg:select * from t_student where remark is null;
    (取反)select * from t_student where remark is not null;
    -between(用于数字的判断,两者之间)
    eg:select * from t_student where age between 20 and 30;
    (取反)select * from t_student where age not between 20 and 30 and sex=‘女’;
    -like(一般用于查询字符串,模糊搜索)
    eg:select * from t_student where sname like ‘张%’; ( '张%'表示以张开头的名字)
    (取反)select * from t_student where sname not like ‘%小%’;( '%小%'表示包含小字的名字)
    -数字判断:>,<,=,!=,>=,<=
    ②逻辑:
    -and 并且: select * from 表名 where 条件1 and 条件2;
    -or 或者: select * from 表名 where 条件1 or 条件2;
    -and not 并且不: select * from 表名 where 条件1 and not 条件2;
    -or not 或者不: select * from 表名 where 条件1 or not 条件2;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值