由于工作的需要,最近不得不广泛学习一些前端、后台的知识,为了以后复习整理方便,也希望能给一些需要对这方面有所了解的朋友们一点点帮助,特将最近的学习笔记上传,小白上路,请各路大仙支持,如有不妥请指正!(学习内容来源于CCtalk云和数据 H5191201ZK(下午)课程,张老师讲得非常详细!)
用到的软件是MySQL和Navicat,编译器能用都行,我目前使用的是Visual Studio Code
#2020-04-09 23:14
<-- MySQL 基本操作 -->
//重点说明
/*对表名的操作均需要对其使用反引号``*/
<-- 数据库操作 -->
使用数据库
use masql;
创建数据库
create database 数据库名;
例如:创建auto数据库
create database auto;
显示所有数据库
show databases;
删除数据库
drop database 数据库名;
例如:删除auto数据库
drop database auto;
使用数据库
use 数据库名;
查询当前连接数据库
select database();
显示当前连接数据库所有表
show tables;
<-- 数据库表操作 -->
创建表
创建单个数据
create table 表名(字段名 类型(长度));
例如:创建auto数据库
create table class(id int(20));
创建多个数据
create table 表名(字段名 类型(长度) ,字段名 类型(长度),......)
(增)表内数据插入 //插入现有字段下单独的一行数据,不能对没有的字段进行设置
insert into 表名(字段名1,字段名2,...,字段名n)values(值1,值2,...,值n),(值1,值2,...,值n);
//在已有字段名下添加
insert into 表名 value(值1,值2,...,值n),(值1,值2,...,值n);
/*decimal(n,m)表示数值中共有n位数,其中整数n-m位,小数m位*/
(删)删除表
drop table 表名;
删除当前表中指定数据
delete from 表名 where 表达式;
例如:删除当前表中id为3的数据
delete from `neo-7n-0-002-gps` where id=3;
(改)更改表中数据
opdate 表名 set 字段=新值1,...新值n where 条件;
例如:更改id为1的longitude值为104.564234
update `neo-7n-0-002-gps` set longitude=104.564234 where id=1;
在已有的数据库表中添加表中字段
alter table 表名 add 字段名 类型(长度);
修改字段(修改字段名、字段类型、长度)
修改字段名:
alter table 表名 change 旧字段名 新字段名
修改字段类型
alter table 表名 modify 字段名 字段类型(字段长度)
删除字段
alter table 表名 drop 字段名
(查)显示表信息
desc 表名 /*或者*/ show cowlmns from 表名
查询所有数据(基本语句格式(列))
select 字段1,字段2,...,字段n from 表名;
例如:查询id列
select id from `neo-7n-0-002-gps`;
如果查询当前表中所有数据(使用通配符*表示所有)
select * from 表名;
查询前几行数据
select * from 表名 order by 字段名 limit 限制条件;
例如:按照id查询neo-7n-0-002-gps表中前四个数据
select * from `neo-7n-0-002-gps` order by id limit 0,4; //0代表起始行但不包含起始行,4代表结束行,包含当前行
/*增加说明*/
where 用来筛选数据(条件查询)
select * from 表名 where 表达式;
where语句后面可以跟多个条件,从而显示查询的数据,多个条件之间使用and或者or连接
select * from 表名 where 表达式1 and (表达式2 or 表达式3);
group by 用来分类汇总
后面跟着要汇总的字段,可以跟多个字段,中间以逗号分隔
例如:
group by id表示按照id进行数据分类汇总
//常用的汇总
count(*或者字段) 按照记录或者字段统计记录数 //count(*)包含所有的数据 count(字段)会忽略null的字段
例如:统计id的记录数
select id,count(*) as num from `neo-7n-0-002-gps` group by id; //以指定别名num查询,通过id进行分组
sum(字段) 对字段进行求和
avg(字段) 对字段求均值
max(字段) 求字段中的最大值
min(字段) 求字段中的最小值
having 用来筛选分类汇总结果 /*只能以指定别名操作*/
一般和group by配合使用,表示在得到分类汇总的基础上,进一步筛选记录
having后面只能是汇总的字段或者聚合的函数
例如:通过id进行分组,对latitude指定别名lat,并在分类基础上筛选latitude大于30.124536的数据
select id,count(*),max(latitude) as lat from `neo-7n-0-002-gps` group by id having lat>30.124536;
order by 用来排序(有升序和降序两种排列方式)
desc 表示降序 asc表示升序(可省略,默认升序)
例如:按照id进行降序排列
select * from `neo-7n-0-002-gps` order by id desc;
//如果数据类型是int类型排序直接比较大小,如果是字符串,里面有数字或者字母,会按照字符串的顺序进行排序
order by需要在where后面,limit前面
如果后台指定多个排序字段,中间可以逗号分隔
select * from `neo-7n-0-002-gps` order by id desc,longitude desc;
limit 用来取出指定的记录数
取得一定范围的记录集,此函数通常用分页
用法:
select * from 表名 limit 起始位置,长度;
//如果起始位置为0,那么第二个参数可以作为行或者长度
//如果第一个参数为非0,那么第二个参数代表长度
所以第二个参数综合可以作为长度
eg: select * from `neo-7n-0-002-gps` limit 2; //如果只有一个数字,那么该数字表示长度
/*limit写在查询语句的最后*/
/*指定别名查询*/
select 字段名1 as &quot;新的字段名1&quot;,字段名2 as &quot;新的字段名2&quot;,...,字段名n as &quot;新的字段名n&quot; from 表名;
//指定别名只是为了显示更加直观,并不改变标的字段名
<-- like及in关键字 -->
like 表示相似(类似于contain查询,即模糊查询) //多用于search搜索框
语法:
select * from 表名 where 字段 like &quot;字符及通配符&quot;;
例如:
select * from `neo-7n-0-002-gps` where id like &quot;1&quot; //不加%:查询id为1的数据,等价于where id=1
select * from `neo-7n-0-002-gps` where id like &quot;1%&quot; //字符后加%:检索以1开头的数据
select * from `neo-7n-0-002-gps` where id like &quot;%1%&quot; //字符前后均加%:完全模糊检索,不管1的位置,标准模糊检索格式
in 表示列表中是否包含此类信息 in() 此信息指in括号中的内容
语法:
select * from 表名 where 字段 in(字段值1,字段值2,...,字段值n); //括号中若是字符串,应使用单引号括起来
例如:
select * from `neo-7n-0-002-gps` where id in(1,5,7);
等价于
select * from `neo-7n-0-002-gps` where id=1 or id=5 or id=7;
<-- 多表查询及子查询 -->
查询表中某一列
select 字段1,字段2,...,字段n from 表名;
完整语法:
select 表名.列名1,表名.列名2,...,表名.列名n from 数据库名.表名;
字段的别名,表也可以指定别名
select 别名.列名 from 表名 别名;
select * from 表名;
等效于
==> select 表名.* from 表名;
==> select 别名.* from 表名 别名;
==> select 别名.列名1,别名.列名2,...,别名.列名n from 表名 别名;
多表查询
当当前表满足不了当前的需求,此时就需要进行多表查询
语法:
select 字段1,字段2,...,字段n from 表1,表2,...,表n where 表达式;
例如:
select 字段1,字段2 from 表1,表2 where 表1.字段n=表2.字段n;
等效于:
select 别名1.字段1,别名2.字段2 from 表名1 别名1,表名2 别名2 where 别名1.字段n=别名2.字段n;
//select 别名1.*,别名2.* from 表名1 别名1,表名2 别名2 where 别名1.字段n=别名2.字段n;
select 别名1.字段1,别名2.字段2 from 表名1 别名1 join 表名2 别名2 on 别名1.字段n=别名2.字段n;
//select 别名1.*,别名2.* from 表名1 别名1 join 表名2 别名2 on 别名1.字段n=别名2.字段n;
#2020-04-10 10:11
<-- MySQL字段(数据)类型 -->
大致分为三类
数值
日期/时间
字符串
数值类型
integer smallint decimal numeric
//近似数值的数据类型
float real double precision
关键字 int dec
日期类型
为表示时间和日期的数据类型
dete 日期值 年-月-日
time 时间值或持续时间 时:分:秒
detetime 混合日期和时间值 年-月-日 时:分:秒
year 年份值 年(2020)
timestamp 混合日期或时间值、时间戳 年-月-日 时:分:秒 /*基本用于js中时间计算,例如博文发表于xxx前*/
字符串类型
char 定长字符串 0-255
varchar 变长字符串 0-65535
text 长文本数据 0-65535
longtext 极大文本数据 0-4294967295
blob 二进制长文本数据 0-255
longblob 二进制极大长文本数据 0-4294967295
//其他类型
binary varbinary set eunm |