热门搜索 :
考研考公
您的当前位置:首页正文

mysql笔记2

2023-11-10 来源:东饰资讯网

:  

1mysql -uroot -proot(直接登陆密码进入 这个p就是密码)

 2mysql -u -root -p(进入以后输入密码root 正确登录成功)  3mysqle --username=root --password(5.5可以)  4mysql -hlocalhost -uroot -p

关于退出  1exit  2q  3quit  4mysql -uroot -proot -V(版本信息并退出)

修改默认提示符(>)  mysql -uroot -proot --prompt=name

当出现->怎么办  用分号;

怎么查看当前的状态  s或者status 有相关的编码信息(utf8)

怎样设置my.ini  [mysql]  default-character-set=utf8  [mysqld]  character-set-server=utf-8

创建的数据库在磁盘中的位置查看 show variables like ‘%datadir%‘;  我的在c:programdatamysql server 5.5data

数据库几个概念

1什么是数据库:   就是存储数据的仓库,为了方便数据的存储和管理,将数据 按照特定的规律存储在磁盘上,通过数据库管理系统有效的 组织和管理存储在数据库中的数据2什么是数据库系统:   数据库系统和数据库不是一个概念,数据库系统(DBS)比数据 库大很多,由数据库,数据库管理系统,应用开发工具构成3什么是数据库管理系统:   DBMS,用来定义数据,管理和维护数据的软件,他是数据库系统 的一种重要组成部分4为什么选择mysql (1)mysql是开源代码的数据库 (2)mysql的跨平台性 (3)开源免费 (4)功能强大方便5什么是sql 结构化查询语言,数据库管理系统通过sql语言来管理数据库中的数据

 

6常用操作

关键字和函数名称大写 数据库名称 表,字段等全部小写

sql语句必须用;分开  修改sql语句   prompt+需要修改的名字   

delimiter修改默认的分隔符    prompt+D 完整日期

prompt+name select user();

当前的用户 select now();

当前时间 引号必须成对出现

输出日志 1 T 磁盘建立的文件目录mysql.txt  此时可以打开进行注释 2 结束日志

 

mysql笔记2

标签:mda   应用   字段   mit   关键字   概念   sql语句   数据   开源代码   

小编还为您整理了以下内容,可能对您也有帮助:

MySQL笔记(简单查询)

用来查询数据库中表的数据。关键字: select 、where 等。

注:查询只是对数据的一种显示,不会对数据库进行修改

1.查询所有数据select * from 表 ; “*” 表示所有列;select id ,name, age, sex, birthday from 表 ; (注:全部字段写法相对于“*”的写法查询效率要高,但写法比较麻烦)

2.查询部分列select 字段1, 字段2……. from 表 ;

3.别名查询(别名作用是方便观看和处理数据)查询时可以给表、列指定别名,关键字:AS

SELECT 字段1 AS 别名1,字段2 AS 别名2……. from 表; 或者 SELECT 字段1 别名1,字段2 别名2……. from 表 ; AS 可以不写

4.清除重复值( 查询指定列并且数据不出现重复 ):SELECT DISTINCT 字段1,字段2...... FORM 表;

5.查询结果进行运算( 注意:参与计算列必须是数值类型 )

5.1与固定值计算:SELECT 列名1+固定值 FROM 表 ;

5.2列与列计算 : SELECT 列1+ 列2 FROM 表;

6.条件查询SELECT * From 表 WHERE 字段 = 值;

MySQL笔记(简单查询)

用来查询数据库中表的数据。关键字: select 、where 等。

注:查询只是对数据的一种显示,不会对数据库进行修改

1.查询所有数据select * from 表 ; “*” 表示所有列;select id ,name, age, sex, birthday from 表 ; (注:全部字段写法相对于“*”的写法查询效率要高,但写法比较麻烦)

2.查询部分列select 字段1, 字段2……. from 表 ;

3.别名查询(别名作用是方便观看和处理数据)查询时可以给表、列指定别名,关键字:AS

SELECT 字段1 AS 别名1,字段2 AS 别名2……. from 表; 或者 SELECT 字段1 别名1,字段2 别名2……. from 表 ; AS 可以不写

4.清除重复值( 查询指定列并且数据不出现重复 ):SELECT DISTINCT 字段1,字段2...... FORM 表;

5.查询结果进行运算( 注意:参与计算列必须是数值类型 )

5.1与固定值计算:SELECT 列名1+固定值 FROM 表 ;

5.2列与列计算 : SELECT 列1+ 列2 FROM 表;

6.条件查询SELECT * From 表 WHERE 字段 = 值;

MySQL的GIS、GEO入门笔记

探索和学习MySQL中GIS相关功能和特性

这里记录了学习和了解MySQL中GIS特性相关内容的过程。

MySQL官方论坛中GIS的举例

测试数据已经导入成功,下面开始对GIS相关函数和GEOHASH进行了解和体验;

mysql中geometry类型的简单使用
MySQL空间数据类型

经纬度信息存储在geometry格式的字段中,该字段必须非空。

MySQL8.0前按照longitude-latitude的顺序存储位置
MySQL8.0前按照longitude-latitude的顺序存储位置
MySQL8.0前按照longitude-latitude的顺序存储位置

插入数据时候可使用如下语句:

MySQL存储geometry信息的方式采用了25bytes,相比WKB的21bytes,多了4bytes的坐标系表示,组成部分如下:

WTF字符串格式说明
select ST_GeomFromText(WTF格式字符串);


WKT(Well-known text)是一种文本标记语言,用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换。通过WTF字符串生成geometry的方法:

点: POINT(x y)
线: LINESTRING(x1 y1, x2 y2, x3 y3...)
多边形: POLYGON((0 0, 10 0, 10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))
多点集: MULTIPOINT(0 0, 20 20, 60 60) 或 MULTIPOINT((0 0),(5 5),(5 0))
多线集: MULTILINESTRING((10 10, 20 20), (15 15, 30 15))
多多边形集: MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))
例如两点一线组成的几何集: GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))

A geometry is syntactically well-formed if it satisfies conditions such as those in this (nonexhaustive) list:

Collections are not empty (except GeometryCollection)

更多内容参见
ST_PointFromText('POINT(X Y)');
ST_LineStringFromText('LINESTRING(0 0,1 1,2 2)');
ST_PolygonFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))');
ST_GeomCollFromText();

更多内容参见

参见
Point(x,y)
LineString((x1,y1),(x2,y2)...)
Polygon(LineString(),LineString()....)

参见
ST_AsText()
ST_AsBinary()
ST_AsWKT()

参见
ST_Dimension(geom) :返回geom的维度(-1,0,1,2)
ST_Envelope(geom) :返回geom的最小外接矩形(MBR)
ST_GeometryType(geom) :返回geom的类型
ST_IsEmpty(geom) :该函数并不能真实的判空,当geom为任何有效的几何值时返回0,无效的几何值返回1;
ST_IsSimple(geom) :当geom无任何异常几何点返回1(如自相交和自切线等),否则返回0
ST_SRID(geom) :返回geom的坐标系ID

参见
ST_X(Point) :获取Point的X值
ST_Y(Point) :获取Point的Y值

参见
ST_StartPoint(linestrng) : 线的起点
ST_EndPoint(linestring) :返回线的最后一个点
ST_IsClosed(linestring或multilinestring) :线是否闭合(若为线,则判断起点与终点是否一致;若为线组,则判断组内每个元素是否符合闭合线)
ST_Length(linestring) :返回线的长度,若入参为线集,则返回集合内所有长度的和
ST_NumPoiints(linestring) :返回点的数量;
ST_PointN(linestring,N) :返回第N个点(从1开始)

参见
具体不在一一列举,主要有计算多边形面积、中心点、最小外接圆,最大内接圆等函数,列举几个可能会用到的:


ST_Area(Poly|mPoly) :返回双精度的面积或面积的和
'ST_Centroid(Poly|mPoly)':返回数学上的中心点
ST_ExteriorRing(Poly) :返回外接圆

参见
ST_Buffer说明
不再列举,主要有:ST_Buffer(不懂干啥用),ST_ConvexHull(geom)凸包,ST_Dfference(g1,g2)比较差异,ST_Intersecton(g1,g2)交叉点,ST_SymDifference(g1,g2)对称差分,ST_Union(g1,g2)连接、合并等。

检查geometry Objects之间的空间关系的方法。

参见
计算两个Object之间的空间关系的函数,有两个间距离、相交、不相交,包含、相等、相切、重叠、接触、在内等等空间关系。下面列举几个可能会常用的方法:
ST_Contains(g1,g2) :g1是否完全包含g2
ST_Within(g1,g2) :g1是否包含于g2中
ST_Distance(g1,g2) :返回g1和g2之间的距离,已坐标单位计算的
ST_Equals(g1,g2) :返回g1和g2是否相等

参见
MBRContains(g1,g2) :g1的mbr是否包含g2的mbr
MBRWithin(g1,g2) :g1的mbr是否在g2的mbr内
MBRCoveredBy(g1,g2) :g1的mbr是否被g2的mbr覆盖
MBRCovers(g1,g2) :g1的mbr是否覆盖g2的mbr
MBRDisjoint(g1,g2) :g1的mbr,g2的mbr是否不相交
MBRIntersects(g1,g2) :g1mbr,g2mbr是否相交
MBREqual(g1,g2) :g1的mbr,g2的mbr的外接是否相等
MBREquals(g1,g2) :g1的mbr,g2的mbr的外接是否相等
MBROverlaps(g1,g2) :g1mbr、g2mbr
其他函数请参看原文

GeoHash介绍
GeoHash Wiki百科

MySQL中自带函数 st_geohash(longtude,latitude,max_length) 或 st_geohash(point, max_length) 即可生成某一点的geohash值。

返回一个geohash字符串中的latitude或longitude

返回一个geohash解析出的point数据

官方文档

通过geometry生成一个GeoJSON Object, select st_asgeojson(geometry,max_length,options);

通过GeoJSON生成GeoMetry对象。
ST_GeomFromGeoJSON(jsonstring, [options [, srid]])


具体使用方法参见官方文档

官方文档
MySQL中提供的方便空间运算的函数们

select ST_Distance_Spher(geomPoint1,geomPoint2 [, radius]);
此方法用于计算两点或多个点之间的地球上的距离(是地球球面距离而不是直线距离),返回单位为米,

select ST_IsValid(ST_GeomFromText('LINESTRING(0 0,1 1)'))
判断入参是否是符合地理位置描述的格式。返回1(符合)或者0(不符);

例如:
返回0:
select st_isvalid(st_geomfromtext('linestring(0 0, -0.00 0, 0.0 0)')
返回1:
select st_isvalid(st_geomfromtext('linestring(0 0,1 1)')

select st_astext(st_makeenvelope(pt1, pt2));
返回两点构成的包络。(此计算是基于笛卡尔坐标系而非球面)

例如:
SELECT ST_AsText ( st_makeenvelope ( st_geomfromtext ( 'point(0 0)' ), st_geomfromtext ( 'point(1 1)' ) ) );
返回结果:
POLYGON((0 0,1 0,1 1,0 1,0 0))

效果说明
JS抽稀算法
select st_simplify(geometry, max_distance);
用道格拉斯-普克算法(抽稀函数)简化geometry,并返回与原格式相同格式的结果。

例如,以下点集拟合为直线,步长0.5:
SELECT st_simplify ( st_geomfromtext ( 'LINESTRING(0 0,0 1,1 1,1 2,2 2,2 3,3 3)' ), 0.5 )
返回结果:
LINESTRING(0 0, 0 1, 1 1, 2 3, 3 3)
再如,步长1.0:
SELECT st_simplify ( st_geomfromtext ( 'LINESTRING(0 0,0 1,1 1,1 2,2 2,2 3,3 3)' ), 1.0 )
返回结果:
LINESTRING(0 0, 3 3)

SELECT ST_Validate(geometry);
验证geometry是符合正确的地理位置信息格式。例如 Point(0 0) 是合格的; Linestring(0 0) 是非法的; Linestring(0 0, 1 1) 是合格的

了解了上述MySQL中关于集合对象的功能,下面来实践一下

由上面geohash长度-精度对应表可知,前6位表示±610米左右的误差,这里先查询前六位范围之后再用上述方法精确筛选一次即可:

可将上述查询方法封装为MySQL函数方便和简化程序调用.

该方法是运用了内置的几何关系运算函数 ST_Contains 和 ST_MakeEnvelop 来实现的,0.5对应大概500米左右的范围,具体如下;

链接: https://pan.baidu.com/s/1cW-kv6DIgtYMw5I3bNFzKA

提取码: jagn

MySQL的GIS、GEO入门笔记

探索和学习MySQL中GIS相关功能和特性

这里记录了学习和了解MySQL中GIS特性相关内容的过程。

MySQL官方论坛中GIS的举例

测试数据已经导入成功,下面开始对GIS相关函数和GEOHASH进行了解和体验;

mysql中geometry类型的简单使用
MySQL空间数据类型

经纬度信息存储在geometry格式的字段中,该字段必须非空。

MySQL8.0前按照longitude-latitude的顺序存储位置
MySQL8.0前按照longitude-latitude的顺序存储位置
MySQL8.0前按照longitude-latitude的顺序存储位置

插入数据时候可使用如下语句:

MySQL存储geometry信息的方式采用了25bytes,相比WKB的21bytes,多了4bytes的坐标系表示,组成部分如下:

WTF字符串格式说明
select ST_GeomFromText(WTF格式字符串);


WKT(Well-known text)是一种文本标记语言,用于表示矢量几何对象、空间参照系统及空间参照系统之间的转换。通过WTF字符串生成geometry的方法:

点: POINT(x y)
线: LINESTRING(x1 y1, x2 y2, x3 y3...)
多边形: POLYGON((0 0, 10 0, 10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))
多点集: MULTIPOINT(0 0, 20 20, 60 60) 或 MULTIPOINT((0 0),(5 5),(5 0))
多线集: MULTILINESTRING((10 10, 20 20), (15 15, 30 15))
多多边形集: MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))
例如两点一线组成的几何集: GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))

A geometry is syntactically well-formed if it satisfies conditions such as those in this (nonexhaustive) list:

Collections are not empty (except GeometryCollection)

更多内容参见
ST_PointFromText('POINT(X Y)');
ST_LineStringFromText('LINESTRING(0 0,1 1,2 2)');
ST_PolygonFromText('POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7,5 5))');
ST_GeomCollFromText();

更多内容参见

参见
Point(x,y)
LineString((x1,y1),(x2,y2)...)
Polygon(LineString(),LineString()....)

参见
ST_AsText()
ST_AsBinary()
ST_AsWKT()

参见
ST_Dimension(geom) :返回geom的维度(-1,0,1,2)
ST_Envelope(geom) :返回geom的最小外接矩形(MBR)
ST_GeometryType(geom) :返回geom的类型
ST_IsEmpty(geom) :该函数并不能真实的判空,当geom为任何有效的几何值时返回0,无效的几何值返回1;
ST_IsSimple(geom) :当geom无任何异常几何点返回1(如自相交和自切线等),否则返回0
ST_SRID(geom) :返回geom的坐标系ID

参见
ST_X(Point) :获取Point的X值
ST_Y(Point) :获取Point的Y值

参见
ST_StartPoint(linestrng) : 线的起点
ST_EndPoint(linestring) :返回线的最后一个点
ST_IsClosed(linestring或multilinestring) :线是否闭合(若为线,则判断起点与终点是否一致;若为线组,则判断组内每个元素是否符合闭合线)
ST_Length(linestring) :返回线的长度,若入参为线集,则返回集合内所有长度的和
ST_NumPoiints(linestring) :返回点的数量;
ST_PointN(linestring,N) :返回第N个点(从1开始)

参见
具体不在一一列举,主要有计算多边形面积、中心点、最小外接圆,最大内接圆等函数,列举几个可能会用到的:


ST_Area(Poly|mPoly) :返回双精度的面积或面积的和
'ST_Centroid(Poly|mPoly)':返回数学上的中心点
ST_ExteriorRing(Poly) :返回外接圆

参见
ST_Buffer说明
不再列举,主要有:ST_Buffer(不懂干啥用),ST_ConvexHull(geom)凸包,ST_Dfference(g1,g2)比较差异,ST_Intersecton(g1,g2)交叉点,ST_SymDifference(g1,g2)对称差分,ST_Union(g1,g2)连接、合并等。

检查geometry Objects之间的空间关系的方法。

参见
计算两个Object之间的空间关系的函数,有两个间距离、相交、不相交,包含、相等、相切、重叠、接触、在内等等空间关系。下面列举几个可能会常用的方法:
ST_Contains(g1,g2) :g1是否完全包含g2
ST_Within(g1,g2) :g1是否包含于g2中
ST_Distance(g1,g2) :返回g1和g2之间的距离,已坐标单位计算的
ST_Equals(g1,g2) :返回g1和g2是否相等

参见
MBRContains(g1,g2) :g1的mbr是否包含g2的mbr
MBRWithin(g1,g2) :g1的mbr是否在g2的mbr内
MBRCoveredBy(g1,g2) :g1的mbr是否被g2的mbr覆盖
MBRCovers(g1,g2) :g1的mbr是否覆盖g2的mbr
MBRDisjoint(g1,g2) :g1的mbr,g2的mbr是否不相交
MBRIntersects(g1,g2) :g1mbr,g2mbr是否相交
MBREqual(g1,g2) :g1的mbr,g2的mbr的外接是否相等
MBREquals(g1,g2) :g1的mbr,g2的mbr的外接是否相等
MBROverlaps(g1,g2) :g1mbr、g2mbr
其他函数请参看原文

GeoHash介绍
GeoHash Wiki百科

MySQL中自带函数 st_geohash(longtude,latitude,max_length) 或 st_geohash(point, max_length) 即可生成某一点的geohash值。

返回一个geohash字符串中的latitude或longitude

返回一个geohash解析出的point数据

官方文档

通过geometry生成一个GeoJSON Object, select st_asgeojson(geometry,max_length,options);

通过GeoJSON生成GeoMetry对象。
ST_GeomFromGeoJSON(jsonstring, [options [, srid]])


具体使用方法参见官方文档

官方文档
MySQL中提供的方便空间运算的函数们

select ST_Distance_Spher(geomPoint1,geomPoint2 [, radius]);
此方法用于计算两点或多个点之间的地球上的距离(是地球球面距离而不是直线距离),返回单位为米,

select ST_IsValid(ST_GeomFromText('LINESTRING(0 0,1 1)'))
判断入参是否是符合地理位置描述的格式。返回1(符合)或者0(不符);

例如:
返回0:
select st_isvalid(st_geomfromtext('linestring(0 0, -0.00 0, 0.0 0)')
返回1:
select st_isvalid(st_geomfromtext('linestring(0 0,1 1)')

select st_astext(st_makeenvelope(pt1, pt2));
返回两点构成的包络。(此计算是基于笛卡尔坐标系而非球面)

例如:
SELECT ST_AsText ( st_makeenvelope ( st_geomfromtext ( 'point(0 0)' ), st_geomfromtext ( 'point(1 1)' ) ) );
返回结果:
POLYGON((0 0,1 0,1 1,0 1,0 0))

效果说明
JS抽稀算法
select st_simplify(geometry, max_distance);
用道格拉斯-普克算法(抽稀函数)简化geometry,并返回与原格式相同格式的结果。

例如,以下点集拟合为直线,步长0.5:
SELECT st_simplify ( st_geomfromtext ( 'LINESTRING(0 0,0 1,1 1,1 2,2 2,2 3,3 3)' ), 0.5 )
返回结果:
LINESTRING(0 0, 0 1, 1 1, 2 3, 3 3)
再如,步长1.0:
SELECT st_simplify ( st_geomfromtext ( 'LINESTRING(0 0,0 1,1 1,1 2,2 2,2 3,3 3)' ), 1.0 )
返回结果:
LINESTRING(0 0, 3 3)

SELECT ST_Validate(geometry);
验证geometry是符合正确的地理位置信息格式。例如 Point(0 0) 是合格的; Linestring(0 0) 是非法的; Linestring(0 0, 1 1) 是合格的

了解了上述MySQL中关于集合对象的功能,下面来实践一下

由上面geohash长度-精度对应表可知,前6位表示±610米左右的误差,这里先查询前六位范围之后再用上述方法精确筛选一次即可:

可将上述查询方法封装为MySQL函数方便和简化程序调用.

该方法是运用了内置的几何关系运算函数 ST_Contains 和 ST_MakeEnvelop 来实现的,0.5对应大概500米左右的范围,具体如下;

链接: https://pan.baidu.com/s/1cW-kv6DIgtYMw5I3bNFzKA

提取码: jagn

MySQL是怎样运行的读书笔记

《MySQL是怎样运行的:从根儿上理解 MySQL》是一本MySQL的底层运行原理的书。关于底层运行原理4个字怎么理解呢,我的理解是专注于介绍 MySQL 的 innoDB的底层存储细节,并以此为基础延伸到分析MySQL 实际应用中的特性。

相比极客时间里面的《MySQL 实战45讲》,我觉得这本书更像电视剧《一代宗师》里面讲到的里子而非面子,更聚焦于事情的本质而非表象,所以非常推荐大家耐心阅读。我是3.28号收到的书,在上下班的路上断断续续完成了阅读(这就是上下班需要花3个小时的好处),所谓的断断续续就是每个点都了解了,但是没有串成线形成面。今天刚好周六就抽了一下午加一晚上把所有的内容从头到位又串联了一次,整体下来差不多花了两周时间才消化完。

为啥对 MySQL突然来了兴趣呢,缘于2021年底以来公司内部组织了两场分享,当时听完分享后针对分享的PPT消化了一波,但是总感觉不得劲。虽然理解了分享中部分场景但却无法理解背后的原理,所以断断续续在网上搜集些介绍 MySQL 的书籍就发现了这本书,阅读后再重新回顾之前的分享,感觉突然开窍了。

梳理了下整个书本的内容,按照个人的理解给出阅读的建议,首先这部分的内容其实挺多的,但是建议聚焦于几条核心的线:innoDB的数据存储,索引的设计和应用,redo/undo 日志以及 mvcc 的原理。

关于 innoDB 的存储,这部分建议阅读章节: 从一条记录说起—— InnoDB 记录结构、盛放记录的大盒子 —— InnoDB 数据页结构、 调节磁盘和CPU的矛盾 —— InnoDB 的 Buffer Pool》。这三个章节按照数据存储由微观到宏观的顺序进行讲解:单条记录的存储结构、页维度的存储结构、Buffer Pool 的存储结构等。

索引的设计和应用,这部分阅读建议建立在innoDB的存储相关章节已经完成阅读的基础上,相关章节包括: 快速查询的秘籍 —— B+ 树索引、 好东西也得先学会怎么用 —— B+ 树索引的使用。这两个章节介绍索引的存储结构以及实际应用,跟日常工作比较有强关联性。

redo/undo 日志以及 mvcc 的原理,这部分建议阅读章节: 说过的话就一定要办到 —— redo 日志(上)、 说过的话就一定要办到 —— redo 日志(下)、 后悔了怎么办 —— undo 日志 (上)、 后悔了怎么办 —— undo 日志 (下)、 一条记录的多幅面孔 —— 事务的隔离级别与MVCC。这几个章节主要是为了讲清楚 MVCC 的底层实现原理。

最后推荐对 MySQL 有兴趣的同学可以买来翻翻看,收获肯定是有的。

【数据库笔记】MySQL读取表前/后10条数据

select * FROM 表名 ORDER BY 字段 asc

select * FROM 表名 ORDER BY 字段 asc LIMIT 10

select * FROM 表名 ORDER BY 字段 desc LIMIT 10

Top