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使用
作用:获取一表前几条或中间某几行数据