当前位置: 首页 > article >正文

MySQL基础(语句)知识复习 (除索引和视图)

1.客户端和数据库操作

1.登录客户端界面:mysql -uroot -p

2.查看当前的数据库版本:select version();

3.显示所有数据库:show databases;,

4.创建数据库:create [IF NOT EXISTS] database 库名 character set 字符集编码 collate 排序规则;

5.选择数据库:use 库名;

6.查看当前选择了哪个数据库:select database();

7.删除数据库:drop [IF EXISTS] database 库名;  #非常危险

8.查看警告:show warnings;

9.退出:quite/exit

2.表操作

1.查看当前数据库有哪些数据表:show tables;

2.创建表:create table 表名(列名/字段名 数据类型,....);

3.查看表结构:desc 表名;

4.删除表:drop 表名;#非常危险

3.CRUD增删查改

3.1新增

语法:insert into 表名 (列名,...)values (值,...);

注释:指定了多少列名,后面的values的值就得一一对应

不指定列名,值的顺序就必须与表中列的数据相同!

3.2查询操作

a.全列查询:select * from 表名;//不加限制条件就会把所有的数据查询出来,磁盘开销会很大!

b.指定列查询:select 指定列,... from 表名;//推荐使用

c.表达式查询:select 表达式 from 表名;

d.别名查询:select 列名/表达式 as '别名' from 表名;

e.去重查询:select distinct 列名,... from 表名; #如果列名指定多个,则指定列的对应行数据必须完全相同才会去重!

f.排序:select 列名,... from 表名 order by 列名 asc|desc; #asc是升序,desc是降序

g.条件查询:select 列名,... from 表名 where 列名/表达式 比较运算符/逻辑运算符  order by 列名 asc|desc;

h.区间查询:select 列名,... from 表名 where 列名 between 开始条件 and 结束条件;

i.模糊查询:select 列名,... from 表名 where 列名 like '%值_'; #(%)匹配字符长度,(_)匹配单个字符

j. 分页查询:

①select * from 表名 where 条件 order by 列名 asc|desc limit num; #查询num条数据

②select * from 表名 where 条件 order by 列名 asc|desc limit start,num; #从第start条开始到num条结束

③select * from 表名 where 条件 order by 列名 asc|desc limit num offset start; #从第start条开始到num条结束

注释:start=(当前页数-1)* ( 当前页查询的条数)

3.3更新

update 表名 set 列名 =值 where 条件 order by ... limit num; #如果不指定列名和limit数量,就会更新表中的所有数据!

3.4删除

delete from 表名 where 条件 order by ... limit num; #如果不指定列名和limit数量,就会把表中的数据全部删除!

4.数据库约束

1.非空约束:NOT NULL 标记一个字段是否可以为空,指定了这个约束,该字段就不能为空(NULL)

2.唯一约束:UNIQUE 标记一个字段的内容在当前列中不唯一,不能重复,但是也不能为null

3.主键约束:PRIMARY KEY 非空且唯一 ,约束方式相当于:NOT NULL+UNIQUE 

主键一般与auto_increment(自增)使用!

4.默认方式:DEFAULT 当一个字段没有指定值时(为NULL),不指定列的值时,就用默认值去填充该字段。

注释:若指定了默认值,但是我们手动输入null值,还显示的是null,并非指定默认值!是因为手动输入值的优先级大于默认值!

5.外键约束:FOREIGN KEY 一个表中的字段与另一个表中的主键建立关系,对当前表的数据增删查改是数据库会自动给我们检验!

5.表的设计

1.第一范式:要求表中的每一个列不可再分

2.第二范式:在第一范式基础上,消除部分函数依赖,只存在在有复合主键的表中!

不满足第二范式的影响:数据冗余,更新异常,删除异常,新增异常!

3.第三范式:在第一,二范式基础上,消除传递依赖

6.关系模型

1.一对一

2.一对多

3.多对多

7.聚合函数

1.COUNT(列|*); 统计结果的条数

2.SUM(列); 求和

3.AVG(列); 求平均值

4.MAX(列);求最大值

5.MIN(列);求最小值

8.GROUP BY分组查询

语法:select 分组列,聚合函数 from 表名 group by 分组列 order by 列名;

HAVING 子句

对group by的结果进行条件过过滤

9.联合查询

9.1内连接

select * from 表名1,表名2 where 表名1.xxx=表名2.xxx(连接条件);

select * from 表名1 join 表名2 on 表名1.xxx=表名2.xxx(连接条件);

select * from 表名1 inner join 表名2 on 表名1.xxx=表名2.xxx(连接条件);

表连接的执行过程:

1.先计算参与表连接的笛卡尔积

2.通过连接条件进行过滤错误信息

3.加入查询条件

4.精减列名

9.2外连接,左外连接,右外连接

select * from 表名1 left join 表名2 on 表名1.xxx=表名2.xxx(连接条件);

select * from 表名1 right join 表名2 on 表名1.xxx=表名2.xxx(连接条件);

左外连接以左表为基准,左边的表中所有的数据全部显示,右表中没有对应的数据用NULL值填充

右外连接以右表为基准,右边的表中所有的数据全部显示,左表中没有对应的数据用NULL值填充

9.3自连接

select * from 表名 别名1,表名 别名2 where 别名1.xxx=别名2.xxx(连接条件);

把行转换成列,在查询的时候可以使用where语句条件进行过滤,实现行与行之间比较

9.4子查询

单行子查询:select * from 表名1 where 指定列=(select 指定列 from 表名2 where 条件);

多行子查询:select * from 表名1 where 指定列 IN (select 指定列 from 表名2 where 条件);

内层查询的结果作为外层的过滤条件,把多条语句合并为一句

子查询可以无限嵌套,层数过多会影响效率

9.5合并查询

  select * form 表名1 union(union  all )select * from 表名2;

union去重,union all不去重

作用是把两个结果集中合并成一个返回

注意:合并查询时多个查询的查询列表必须匹配!

SQL语句的执行顺序

FROM --> JOIN ON --> WHERE --> GROUP BY --> HAVING --> SELECT --> DISTINCT --> ORDER BY --> ORDER  BY --> LIMIT


http://www.kler.cn/a/419769.html

相关文章:

  • 攻防世界-fileclude-文件包含
  • MySQL篇—通过官网下载linux系统下多种安装方式的MySQL社区版软件
  • Zookeeper集群数据是如何同步的?
  • koa中间件
  • JS实现高效导航——A*寻路算法+导航图简化法
  • SpringBoot+Flowable快速实现工流_动态选择审批人员
  • Hive项目实战:大数据处理与分析
  • 算法:上楼梯(递归)升级版
  • 高原地区分布式光伏电站监测系统解决方案
  • Node.js 中的文件系统(fs)模块详解与代码示例
  • 鸿蒙技术分享:Navigation页面容器封装-鸿蒙@fw/router框架源码解析(三)
  • 人体热释电传感器
  • 利用OpenAI、LangChain和Streamlit进行智能数据分析和可视化
  • MATLAB - ROS2 ros2genmsg 生成自定义消息(msg/srv...)
  • SpringBoot 驱动在线家具商城设计与实现的深度探索
  • C++/Cli里重载winform的WndProc和ProcessCmdKey
  • springboot vue 开源 会员收银系统 (12)购物车关联服务人员 订单计算提成
  • python学习笔记12 python中的函数(上)
  • 深度学习7 梯度下降优化、过拟合、手机价格预测
  • 机器学习——生成对抗网络(GANs):原理、进展与应用前景分析
  • The selected directory is not a valid home for Go SDK
  • PostgreSQL17.x创建数据库及数据库信息查看命令
  • 算法刷题Day7: 二叉树前中后遍历
  • 通义灵码 x 函数计算:构建高效开发流程,加速项目交付
  • 「Mac畅玩鸿蒙与硬件40」UI互动应用篇17 - 照片墙布局
  • 后端 Java发送邮件 JavaMail 模版 20241128测试可用