一、数据库的登录与基本使用
1、当你想要登录你的MYSQL数据库时,你可以在cmd中输入以下语句登录MYSQL
mysql -u用户名 -p密码
一般来说,我们都有的用户名是root,密码是123456,(当然你也可以进行修改或者添加数据库)
结果如下:
显示上面的窗口也就说明我们登录进了MYSQL数据库,但是它给了提示,直接输入密码可能不安全,那我们可以在-p之后直接回车,然后再输入密码,这样输入的密码都会显示“ * ”,从而保护你滴小隐私。(注意,上面的语句不分大小写)
2、一些必备的基本语句
show databases ; 显示当前数据库
show table; 显示当前数据库的表
create database A; 创建一个叫A的数据库
use A ; 切换到数据库A
select *from a ; 显示a表的所有内容
desc a ; 显示表a的结构
source path ; 导入path路径的表到数据库中,或者批量执行path路径的语句
select version(); 查看数据库版本号
select database(); 查看当前使用的数据库
以下是运行结果们:
需要注意的是,MYSQL语句必须以英文的分号结尾才可以执行,否则结果如下:
它就会一直等你输入那个分号。
二、DQL简单查询语句
1、基础查询
(1)查询一个字段时:select 字段名 from 表名;
(2)查询多个字段时只需在字段间加逗号:select 字段名1,字段名2 from 表名;
(3)查询所有字段直接select *即可。
(4)给查询的列起别名:select 字段名 as 别名 from 表名;
注意:需要明确的是:通过select语句进行的查询所展示的结果并不是对表修改后显示的结果,即select语句只负责查询,不修改表中任何数据。
此外,在起别名的时候,如果想使用中文或者空格时,最高用单引号将其括起。
2、条件查询
就跟C++、java、python的条件语句一样,条件查询是指通过某些限定条件对所有数据进行筛选,最终得出需要的数据。
基本语句:
select 字段名 from 表名 where 条件
一些基本的条件有:
= | 等于 |
!=或者<> | 不等于 |
> 或者 < 或者 >= 或者 <= | 大于、小于、大于等于、小于等于 |
between A and B | 在A和B之间 |
is null或者is not null | 为空或者不为空 |
and或者or或者in或者not in | 和、或、包含、不包含(and优先级最高) |
not | 取非 |
like | 模糊查询,支持%和下划线匹配,%可以匹配任意个字符,一个下划线仅匹配一个字符 |
这里我展示一些不太熟悉的:
3、模糊查询
就是上面说的like,可以使用%或者_匹配。
4、字段排序
select 字段名1,字段名2 from 表名 order by 字段名1
上面这句话的意思是按照字段名1进行升序排列,MYSQL默认是升序排列,也就是asc,如果想要降序排列,可以在最后加上desc。
另外我们也可以对多个字段进行排序:
select 字段名1,字段名2 from 表名 order by 字段名1,字段名2 desc;
上面这句话指的是,按照字段名1升序、字段名2降序排列(字段名1一样的情况下按照字段2 排列)。
另外还需要提到一种排列方式,根据字段位置排序:
select 字段名1,字段名2 from 表名 order by 2;
指的是按照第二列排序。
5、数据处理函数
Lower | 转换小写 |
Upper | 转换大写 |
substr | 取子串(substr(s,start,end)) |
length | 取长度 |
trim | 去空格 |
str_to_date | 将字符串转换为日期 |
date_format | 格式化日期 |
format | 设置千分位 |
round | 四舍五入 |
rand() | 生成随机数(0~1) |
ifnull | 可以将null转换成一个具体的值 |
Case…when..then..else..end | 当when时候,then怎么办,否则else,怎么办,end |
(1)单行处理函数:它的特点是,一个输入对应一个输出。
用法:
select lower(字段名1) as 字段名1 from 表
效果如图:
这里需要注意的一点是,我们经常在函数后面加上as,为这个操作起别名,否则显示出来的就是刚刚函数的名字。
还有就是空处理函数ifnull,只要有null参与数学运算,结果都为null,为了避免这种情况发生就要先使用该函数进行处理,如果处理的位置为null,那么当做0处理。
(2)多行处理函数(分组函数):它的特点是,多个输入对应一个输出。使用前必须进行分组,如果不分组,那么默认整张表为1组(分组概念在下面)
Count | 计数 |
sum | 求和 |
avg | 平均值 |
max | 最大值 |
min | 最小值 |
注意:分组函数不可以直接使用在where子句中,而是应该使用group by;所有的分组函数可以组合一起使用。、
6、分组查询
语句格式:select 字段名1,字段名2 from 表名 group by 字段名2
语法意思就是将那一组数组按照字段名2分组。并且我们可以在group by 之后加上having语句进行再筛选。
(注:单表查询顺序:from->where->group by->having->select->order by;)
7、distinct语句。
使用distinct语句可以去除重复记录,使用方式是:
select distinct 字段名 from 表
上面的语句的意思是除去字段名中重复的部分,如果对身份证号id做出去重,那么则是筛选掉重复的人员数据。
也可以后面接多个字段,那么它的意思变成了,将这些字段全部一样的部分去掉,比如我们对name和家庭住址同时使用distinct,那么就会将这两个都重复的数据去掉了,这样防止因重复而去除错误数据的可能。
8、内连接
下面我们将进行多表查询,这部分是重点。内连接是从结果表中删除与其他被
连接表中没有匹配行的所有行。
(1)等值连接
这部分很简单,就是将相等的部分进行连接。
select
A.a , B.b
from
A a , B b
where
A.a = B.b 这是SQL92写法,不使用
select
A.a , B.b
from
A a
join
B b
on
A.a = B.b 一般使用该SQL99
where
限制条件
我们只讲解SQL99的语法部分。
我们一般分别选取A表的a列和B表的b列,所以select后接那两句,然后我们从A表中选a,在加入(join)B表的b,筛选条件是 A.a = B.b。
(2)非等值连接
大概就是on后面的语句不是那种“=”,就叫不等值。
select
A.a , B.b
from
A a
join
B b
on
A.a between 1 and 2;
方法和等值连接几乎一样,区别就是=和!=。
(3)自连接
所谓自连接,就是将当我们需要一张表的两个部分时,需要将这张表的两个部分进行连接。所以就要将当前这张表A和本身A连接。
9、外连接
和内连接的区别:内连接的表都是主体,相互之间没有主次之分。而外连接通过join指定left和right,指定左右连接,从而确定主次,主表内容即使没有查到也会全部显示。
(注:内外连接其实需要在join的左边加上inner和outter,但是都是可以省略的,加上可以让可读性更强)
10、多表连接
多表连接就是两个以上的表进行连接,实现方式很简单,只是在join on后面再加join on。
未完待续.......................