sumingyi

mysql基础(1/3)

一、表的定义

表是一种结构化的文件,可以用来存储特定类型的数据,如:学生信息、课程信息等,都可以放到表中,另外表都有特定的名称,而且不能重复。表中有以下几个概念:列、行、主键。

1.列(字段) 列,通常叫做字段,每个字段都包含:字段名称、字段数据类型、字段约束、字段长度;

2.行(记录) 行,通常叫做表中的记录。表中的数据是按行(记录)存储的,表里可以有0条或多条记录;

3.主键 主键,主键是由列构成的,表中的每一行通常都有一个标识,主键可以由一个字段戒多个字段构成,一个字段构的主键称为单一主键,多个字段构成的主键称为复合主键,主键通常是不能修改的。

二、SQL分类

DQL语句数据查询语言select
DML语句 数据操作语言 insert delete update
DDL语句 数据库定义语言 create drop alter
TCL语句 事务控制语言 commit rollback

三、常用命令

查看MySQL版本mysql --version mysql -V
查看当前使用数据库 select database ();
查看MySQL数据库版本 select version();
创建数据库 create database 数据库名称;
终止一条语句 \c
查看和指定现有的数据库 show databases;
指定当前缺省数据库 use bjpowernode;
查看当前数据库中的表 show tables;
查看其它数据库中的表 show tables from 数据库名称;
查看表结构 desc 表名称;
查看表的创建语句 show create table 表名称 ;

四、条件查询

运算符说明
= 等于
<>或!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于
between..and... 两个值之间
is null 为null
and 并且
or 或者
in 包含
not not可以取非,主要用在is或in
like like为模糊查询,支持%或_匹配

数据排序asc、desc

含义 排序采用 order by 子句,order by 后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔,order by默认采用升序(asc),如果存在 where 子句,那么 order by 必须放到where 询句后面。

五、处理函数(单行处理)

1.数据处理函数(单行处理函数)

Lower转换小写
upper 转换大写
substr 取子串(substr(被截取的字符串,起始下标,截取的长度))
length 取长度
trim 去空格
str_to_date 将字符串转换成日期
date_format 格式化日期
format 设置干分位
round 四舍五入
rand() 生成随机数
ifnull 可以将null转换成一个具体值

str_to_date函数:将字符串转换为日期 作用:将‘日期字符串’ 转换为 ‘日期类型’数据

用法:str_to_date('日期字符串',‘日期格式’)

日期字符串:日期格式的字符串

日期格式:告知MySQL输入日期字符串的格式是什么

序号格式符功能 格式符功能
1 %Y 代表四年的年份   %y 代表两位的年份
2 %m 代表月,格式(01..12)   %c 代表月,格式(1...12)
3 %d 代表日      
4 %H 代表24小时制   %h 代表12小时制
5 %i 代表分钟,格式(00...59)      
6 %S或%s 代表秒,格式(00..59)      

case..when..then..else..end 匹配工作岗位,当MANAGER时,薪水上调10%,当为SALESMAN时,薪水上调50%,其他岗位薪水不变

 select ename,sal,job,
    (case job
        when 'MANAGER' then sal*1.1
        when 'SALESMAN' then sal*1.5
    else sal
    end) as newsal
 from
    emp;

六、分组函数/聚合函数/多行处理函数

1.常见函数

sum求和
avg 取平均
max 取最大值
min 取最小值
count 取得记录数

单行/多行处理函数

单行处理函数:一行输入对应一行输出

多行处理函数:多行输入对应一行输出

注:

1、分组函数自动忽略控制,不需要手动增加where条件排除空值;

2、分组函数不能直接使用在where关键字后面;

 

where与having区别 1)where和having都是为了完成数据的过滤,他们后面都是添加条件

2)where是在group by之前完成过滤

3)having是在group by之后完成过滤

七、select语句总结

一个完整的SQL语句如下:

 select
    xxxx
 from
    xxxx
 where
    xxxx
 group by
    xxxx
 having
    xxxx
 order by
    xxxx

1)from将硬盘上的表文件加载到内存

2)where将符合条件的数据进行摘取出来,生成一张新的临时表

3)group by根据列中的数据种类,将当前临时表划分成若干个新的临时表

4)having可以过滤掉group by生成的不符合条件的临时表

5)select对当前临时表进行整列读取

6)order by对select生成的临时表,进行重新排序,生成新的临时表

7)limit对最终生成的临时表的数据行,进行截取

 


翻篇

二、连接查询/跨表查询

在实际开发中,数据往往不是存放一张表中,而是同时存储在多张表中,这些表与表存在着关系,我们在检索数据的时候往往需要多张表联合起来检索,这种多表联合检索被称为连表查询或跨表查询

1.笛卡尔积现象 含义:若两张表进行连接查询的时候没有任何条件限制,最终的查询结果总数是两张表记录的成绩,该现象称为笛卡尔积现象。

 

连接查询

 

年代分类

SQL92语法

语法结构:select xxx from A 表名,B表名 where 表连接条件 and 数据查询条件;

SQL99语法

语法结构:select xxx from A 表名 join B 表名 on 表的连接条件;

连接方式分类

内连接

定义:只连接匹配的行,即A表与B表相连接,能将匹配的记录查询出来

  • 等值连接

  • 非等值连接

  • 自连接

外连接

定义:A表和B表能够完全匹配的记录查询出来之外,将其中一张表的记录无条件的完全查询出来,对方表没有匹配的记录时,会自动模拟出null值与之匹配;

左外连接

定义:包含左边表的全部行(不管右边的表中是否存在与他们匹配的行),以及右边表中全部匹配的行。

右外连接

定义:包含右边表的全部行(不管右边的表中是否存在与他们匹配的行),以及左边表中全部匹配的行。

三、子查询

定义:select 语句嵌套select语句被称为子查询;

注意:select子句可出现在select、from、where关键字后面

四、union合并(相加集合)

定义:将查询的结果集合并

注意:合并结果集的时候,查询字段个数必须相同;

五、limit使用

作用:获取一表前几条或中间某几行数据

用法:limit起始下标m,长度n

posted on 2023-09-19 17:31  苏易  阅读(6)  评论(0编辑  收藏  举报

导航