前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据分析篇 | Pandas 时间序列 - 日期时间索引

数据分析篇 | Pandas 时间序列 - 日期时间索引

作者头像
龙哥
发布于 2019-12-22 10:49:18
发布于 2019-12-22 10:49:18
5.6K00
代码可运行
举报
文章被收录于专栏:Python绿色通道Python绿色通道
运行总次数:0
代码可运行

部字符串索引切片 vs. 精准匹配精确索引截断与花式索引日期/时间组件

DatetimeIndex 主要用作 Pandas 对象的索引。DatetimeIndex 类为时间序列做了很多优化:

  • 预计算了各种偏移量的日期范围,并在后台缓存,让后台生成后续日期范围的速度非常快(仅需抓取切片)。
  • 在 Pandas 对象上使用 shifttshift 方法进行快速偏移。
  • 合并具有相同频率的重叠 DatetimeIndex 对象的速度非常快(这点对快速数据对齐非常重要)。
  • 通过 yearmonth 等属性快速访问日期字段。
  • snap 等正则函数与超快的 asof 逻辑。

DatetimeIndex 对象支持全部常规 Index 对象的基本用法,及一些列简化频率处理的高级时间序列专有方法。

参阅:重置索引 注意:Pandas 不强制排序日期索引,但如果日期没有排序,可能会引发可控范围之外的或不正确的操作。

DatetimeIndex 可以当作常规索引,支持选择、切片等方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [94]: rng = pd.date_range(start, end, freq='BM')

In [95]: ts = pd.Series(np.random.randn(len(rng)), index=rng)

In [96]: ts.index
Out[96]: 
DatetimeIndex(['2011-01-31', '2011-02-28', '2011-03-31', '2011-04-29',
               '2011-05-31', '2011-06-30', '2011-07-29', '2011-08-31',
               '2011-09-30', '2011-10-31', '2011-11-30', '2011-12-30'],
              dtype='datetime64[ns]', freq='BM')

In [97]: ts[:5].index
Out[97]: 
DatetimeIndex(['2011-01-31', '2011-02-28', '2011-03-31', '2011-04-29',
               '2011-05-31'],
              dtype='datetime64[ns]', freq='BM')

In [98]: ts[::2].index
Out[98]: 
DatetimeIndex(['2011-01-31', '2011-03-31', '2011-05-31', '2011-07-29',
               '2011-09-30', '2011-11-30'],
              dtype='datetime64[ns]', freq='2BM')

局部字符串索引

能解析为时间戳的日期与字符串可以作为索引的参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [99]: ts['1/31/2011']
Out[99]: 0.11920871129693428

In [100]: ts[datetime.datetime(2011, 12, 25):]
Out[100]: 
2011-12-30    0.56702
Freq: BM, dtype: float64

In [101]: ts['10/31/2011':'12/31/2011']
Out[101]: 
2011-10-31    0.271860
2011-11-30   -0.424972
2011-12-30    0.567020
Freq: BM, dtype: float64

Pandas 为访问较长的时间序列提供了便捷方法,年月字符串均可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [102]: ts['2011']
Out[102]: 
2011-01-31    0.119209
2011-02-28   -1.044236
2011-03-31   -0.861849
2011-04-29   -2.104569
2011-05-31   -0.494929
2011-06-30    1.071804
2011-07-29    0.721555
2011-08-31   -0.706771
2011-09-30   -1.039575
2011-10-31    0.271860
2011-11-30   -0.424972
2011-12-30    0.567020
Freq: BM, dtype: float64

In [103]: ts['2011-6']
Out[103]: 
2011-06-30    1.071804
Freq: BM, dtype: float64

DatetimeIndexDateFrame 也支持这种切片方式。局部字符串是标签切片的一种形式,这种切片也包含截止时点,即,与日期匹配的时间也会包含在内:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [104]: dft = pd.DataFrame(np.random.randn(100000, 1), columns=['A'],
   .....:                    index=pd.date_range('20130101', periods=100000, freq='T'))
   .....: 

In [105]: dft
Out[105]: 
                            A
2013-01-01 00:00:00  0.276232
2013-01-01 00:01:00 -1.087401
2013-01-01 00:02:00 -0.673690
2013-01-01 00:03:00  0.113648
2013-01-01 00:04:00 -1.478427
...                       ...
2013-03-11 10:35:00 -0.747967
2013-03-11 10:36:00 -0.034523
2013-03-11 10:37:00 -0.201754
2013-03-11 10:38:00 -1.509067
2013-03-11 10:39:00 -1.693043

[100000 rows x 1 columns]

In [106]: dft['2013']
Out[106]: 
                            A
2013-01-01 00:00:00  0.276232
2013-01-01 00:01:00 -1.087401
2013-01-01 00:02:00 -0.673690
2013-01-01 00:03:00  0.113648
2013-01-01 00:04:00 -1.478427
...                       ...
2013-03-11 10:35:00 -0.747967
2013-03-11 10:36:00 -0.034523
2013-03-11 10:37:00 -0.201754
2013-03-11 10:38:00 -1.509067
2013-03-11 10:39:00 -1.693043

[100000 rows x 1 columns]

下列代码截取了自 1 月 1 日凌晨起,至 2 月 28 日午夜的日期与时间。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [107]: dft['2013-1':'2013-2']
Out[107]: 
                            A
2013-01-01 00:00:00  0.276232
2013-01-01 00:01:00 -1.087401
2013-01-01 00:02:00 -0.673690
2013-01-01 00:03:00  0.113648
2013-01-01 00:04:00 -1.478427
...                       ...
2013-02-28 23:55:00  0.850929
2013-02-28 23:56:00  0.976712
2013-02-28 23:57:00 -2.693884
2013-02-28 23:58:00 -1.575535
2013-02-28 23:59:00 -1.573517

[84960 rows x 1 columns]

下列代码截取了包含截止日期及其时间在内的日期与时间。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [108]: dft['2013-1':'2013-2-28']
Out[108]: 
                            A
2013-01-01 00:00:00  0.276232
2013-01-01 00:01:00 -1.087401
2013-01-01 00:02:00 -0.673690
2013-01-01 00:03:00  0.113648
2013-01-01 00:04:00 -1.478427
...                       ...
2013-02-28 23:55:00  0.850929
2013-02-28 23:56:00  0.976712
2013-02-28 23:57:00 -2.693884
2013-02-28 23:58:00 -1.575535
2013-02-28 23:59:00 -1.573517

[84960 rows x 1 columns]

下列代码指定了精准的截止时间,注意此处的结果与上述截取结果的区别:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [109]: dft['2013-1':'2013-2-28 00:00:00']
Out[109]: 
                            A
2013-01-01 00:00:00  0.276232
2013-01-01 00:01:00 -1.087401
2013-01-01 00:02:00 -0.673690
2013-01-01 00:03:00  0.113648
2013-01-01 00:04:00 -1.478427
...                       ...
2013-02-27 23:56:00  1.197749
2013-02-27 23:57:00  0.720521
2013-02-27 23:58:00 -0.072718
2013-02-27 23:59:00 -0.681192
2013-02-28 00:00:00 -0.557501

[83521 rows x 1 columns]

截止时间是索引的一部分,包含在截取的内容之内:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [110]: dft['2013-1-15':'2013-1-15 12:30:00']
Out[110]: 
                            A
2013-01-15 00:00:00 -0.984810
2013-01-15 00:01:00  0.941451
2013-01-15 00:02:00  1.559365
2013-01-15 00:03:00  1.034374
2013-01-15 00:04:00 -1.480656
...                       ...
2013-01-15 12:26:00  0.371454
2013-01-15 12:27:00 -0.930806
2013-01-15 12:28:00 -0.069177
2013-01-15 12:29:00  0.066510
2013-01-15 12:30:00 -0.003945

[751 rows x 1 columns]

0.18.0 版新增

DatetimeIndex 局部字符串索引还支持多层索引 DataFrame

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [111]: dft2 = pd.DataFrame(np.random.randn(20, 1),
   .....:                     columns=['A'],
   .....:                     index=pd.MultiIndex.from_product(
   .....:                         [pd.date_range('20130101', periods=10, freq='12H'),
   .....:                          ['a', 'b']]))
   .....: 

In [112]: dft2
Out[112]: 
                              A
2013-01-01 00:00:00 a -0.298694
                    b  0.823553
2013-01-01 12:00:00 a  0.943285
                    b -1.479399
2013-01-02 00:00:00 a -1.643342
...                         ...
2013-01-04 12:00:00 b  0.069036
2013-01-05 00:00:00 a  0.122297
                    b  1.422060
2013-01-05 12:00:00 a  0.370079
                    b  1.016331

[20 rows x 1 columns]

In [113]: dft2.loc['2013-01-05']
Out[113]: 
                              A
2013-01-05 00:00:00 a  0.122297
                    b  1.422060
2013-01-05 12:00:00 a  0.370079
                    b  1.016331

In [114]: idx = pd.IndexSlice

In [115]: dft2 = dft2.swaplevel(0, 1).sort_index()

In [116]: dft2.loc[idx[:, '2013-01-05'], :]
Out[116]: 
                              A
a 2013-01-05 00:00:00  0.122297
  2013-01-05 12:00:00  0.370079
b 2013-01-05 00:00:00  1.422060
  2013-01-05 12:00:00  1.016331

0.25.0 版新增

字符串索引切片支持 UTC 偏移。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [117]: df = pd.DataFrame([0], index=pd.DatetimeIndex(['2019-01-01'], tz='US/Pacific'))

In [118]: df
Out[118]: 
                           0
2019-01-01 00:00:00-08:00  0

In [119]: df['2019-01-01 12:00:00+04:00':'2019-01-01 13:00:00+04:00']
Out[119]: 
                           0
2019-01-01 00:00:00-08:00  0

切片 vs. 精准匹配

0.20.0 版新增。

基于索引的精度,字符串既可用于切片,也可用于精准匹配。字符串精度比索引精度低,就是切片,比索引精度高,则是精准匹配。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [120]: series_minute = pd.Series([1, 2, 3],
   .....:                           pd.DatetimeIndex(['2011-12-31 23:59:00',
   .....:                                             '2012-01-01 00:00:00',
   .....:                                             '2012-01-01 00:02:00']))
   .....: 

In [121]: series_minute.index.resolution
Out[121]: 'minute'

下例中的时间戳字符串没有 Series 对象的精度高。series_minute,时间戳字符串只到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [122]: series_minute['2011-12-31 23']
Out[122]: 
2011-12-31 23:59:00    1
dtype: int64

精度为分钟(或更高精度)的时间戳字符串,给出的是标量,不会被当作切片。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [123]: series_minute['2011-12-31 23:59']
Out[123]: 1

In [124]: series_minute['2011-12-31 23:59:00']
Out[124]: 1

索引的精度为秒时,精度为分钟的时间戳返回的是 Series

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [125]: series_second = pd.Series([1, 2, 3],
   .....:                           pd.DatetimeIndex(['2011-12-31 23:59:59',
   .....:                                             '2012-01-01 00:00:00',
   .....:                                             '2012-01-01 00:00:01']))
   .....: 

In [126]: series_second.index.resolution
Out[126]: 'second'

In [127]: series_second['2011-12-31 23:59']
Out[127]: 
2011-12-31 23:59:59    1
dtype: int64

用时间戳字符串切片时,还可以用 [] 索引 DataFrame

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [128]: dft_minute = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]},
   .....:                           index=series_minute.index)
   .....: 

In [129]: dft_minute['2011-12-31 23']
Out[129]: 
                     a  b
2011-12-31 23:59:00  1  4

警告:字符串执行精确匹配时,用 [] 按列,而不是按行截取 DateFrame ,参阅索引基础。如,dft_minute ['2011-12-31 23:59'] 会触发 KeyError,这是因为 2012-12-31 23:59与索引的精度一样,但没有叫这个名字的列。

为了实现精准切片,要用 .loc 对行进行切片或选择。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [130]: dft_minute.loc['2011-12-31 23:59']
Out[130]: 
a    1
b    4
Name: 2011-12-31 23:59:00, dtype: int64

注意,DatetimeIndex 精度不能低于日。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [131]: series_monthly = pd.Series([1, 2, 3],
   .....:                            pd.DatetimeIndex(['2011-12', '2012-01', '2012-02']))
   .....: 

In [132]: series_monthly.index.resolution
Out[132]: 'day'

In [133]: series_monthly['2011-12']  # 返回的是 Series
Out[133]: 
2011-12-01    1
dtype: int64

精确索引

正如上节所述,局部字符串依靠时间段的精度索引 DatetimeIndex,即时间间隔与索引精度相关。反之,用 Timestampdatetime 索引更精准,这些对象指定的时间更精确。注意,精确索引包含了起始时点。

就算没有显式指定,Timestampdatetime 也支持 hoursminutesseconds,默认值为 0。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [134]: dft[datetime.datetime(2013, 1, 1):datetime.datetime(2013, 2, 28)]
Out[134]: 
                            A
2013-01-01 00:00:00  0.276232
2013-01-01 00:01:00 -1.087401
2013-01-01 00:02:00 -0.673690
2013-01-01 00:03:00  0.113648
2013-01-01 00:04:00 -1.478427
...                       ...
2013-02-27 23:56:00  1.197749
2013-02-27 23:57:00  0.720521
2013-02-27 23:58:00 -0.072718
2013-02-27 23:59:00 -0.681192
2013-02-28 00:00:00 -0.557501

[83521 rows x 1 columns]

不用默认值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [135]: dft[datetime.datetime(2013, 1, 1, 10, 12, 0):
   .....:     datetime.datetime(2013, 2, 28, 10, 12, 0)]
   .....: 
Out[135]: 
                            A
2013-01-01 10:12:00  0.565375
2013-01-01 10:13:00  0.068184
2013-01-01 10:14:00  0.788871
2013-01-01 10:15:00 -0.280343
2013-01-01 10:16:00  0.931536
...                       ...
2013-02-28 10:08:00  0.148098
2013-02-28 10:09:00 -0.388138
2013-02-28 10:10:00  0.139348
2013-02-28 10:11:00  0.085288
2013-02-28 10:12:00  0.950146

[83521 rows x 1 columns]

截断与花式索引

truncate() 便捷函数与切片类似。注意,与切片返回的是部分匹配日期不同, truncate 假设 DatetimeIndex 里未标明时间组件的值为 0。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [136]: rng2 = pd.date_range('2011-01-01', '2012-01-01', freq='W')

In [137]: ts2 = pd.Series(np.random.randn(len(rng2)), index=rng2)

In [138]: ts2.truncate(before='2011-11', after='2011-12')
Out[138]: 
2011-11-06    0.437823
2011-11-13   -0.293083
2011-11-20   -0.059881
2011-11-27    1.252450
Freq: W-SUN, dtype: float64

In [139]: ts2['2011-11':'2011-12']
Out[139]: 
2011-11-06    0.437823
2011-11-13   -0.293083
2011-11-20   -0.059881
2011-11-27    1.252450
2011-12-04    0.046611
2011-12-11    0.059478
2011-12-18   -0.286539
2011-12-25    0.841669
Freq: W-SUN, dtype: float64

花式索引返回 DatetimeIndex, 但因为打乱了 DatetimeIndex 频率,丢弃了频率信息,见 freq=None

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
In [140]: ts2[[0, 2, 6]].index
Out[140]: DatetimeIndex(['2011-01-02', '2011-01-16', '2011-02-13'], dtype='datetime64[ns]', freq=None)

日期/时间组件

以下日期/时间属性可以访问 TimestampDatetimeIndex

属性

说明

year

datetime 的年

month

datetime 的月

day

datetime 的日

hour

datetime 的小时

minute

datetime 的分钟

second

datetime 的秒

microsecond

datetime 的微秒

nanosecond

datetime 的纳秒

date

返回 datetime.date(不包含时区信息)

time

返回 datetime.time(不包含时区信息)

timetz

返回带本地时区信息的 datetime.time

dayofyear

一年里的第几天

weekofyear

一年里的第几周

week

一年里的第几周

dayofweek

一周里的第几天,Monday=0, Sunday=6

weekday

一周里的第几天,Monday=0, Sunday=6

weekday_name

这一天是星期几 (如,Friday)

quarter

日期所处的季节:Jan-Mar = 1 等

days_in_month

日期所在的月有多少天

is_month_start

逻辑判断是不是月初(由频率定义)

is_month_end

逻辑判断是不是月末(由频率定义)

is_quarter_start

逻辑判断是不是季初(由频率定义)

is_quarter_end

逻辑判断是不是季末(由频率定义)

is_year_start

逻辑判断是不是年初(由频率定义)

is_year_end

逻辑判断是不是年末(由频率定义)

is_leap_year

逻辑判断是不是日期所在年是不是闰年

参照 .dt 访问器 一节介绍的知识点,Series 的值为 datetime 时,还可以用 .dt 访问这些属性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python绿色通道 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
14.MySQL(二) 数据之表操作表内容操作Mysql 连接事务外键
数据之表操作 1.创建表 语法:CREATE TABLE table_name (column_name column_type); create table student( -> id INT NOT NULL AUTO_INCREMENT, -> name CHAR(32) NOT NULL, -> age INT NOT NULL, -> regiiter_date DATE, -> PRIMARY KEY(id) -> ); a
zhang_derek
2018/04/11
3.3K0
14.MySQL(二)
		数据之表操作表内容操作Mysql 连接事务外键
MYSQL库,表,记录的基本操作
  mysql – 用户权限相关数据   test – 用于用户测试数据   information_schema – MySQL本身架构相关数据
全栈程序员站长
2022/07/21
1.7K0
MYSQL库,表,记录的基本操作
MySQL单表&约束&事务
需求: 1 查询员工的总数 2 查看员工总薪水、最高薪水、最小薪水、薪水的平均值 3 查询薪水大于4000员工的个数 4 查询部门为’教学部’的所有员工的个数 5 查询部门为’市场部’所有员工的平均薪水
用户5513909
2023/04/25
1.3K0
MySQL单表&约束&事务
MySQL常用基础 - 小白必看
2、create database if not exists 数据库名 (判断数据库是否存在,不存在则创建)
EXI-小洲
2023/01/09
1.3K0
MySQL常用基础 - 小白必看
MySQL学习笔记2
DQL:查询语句 1. 排序查询 * 语法:order by 子句 * order by 排序字段1 排序方式1 , 排序字段2 排序方式2... * 排序方式: * ASC:升序,默认的。 * DESC:降序。 * 注意: * 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。 2. 聚合函数:将一列数据作为一个整体,进行纵向的计算。 1. count:计算个数 1. 一般选
Eternity
2022/08/24
6850
【数据库_02】MySQL-约束
一、MySQL查询 1. 聚合函数 ① 统计 * 语法 count(需要统计的字段) * 注意 所有聚合函数都会自动跳过 null,解决方案 count(ifnull(字段,0));或count(*) * 示例 select count(*) from student; ② 最大值 * 语法 max(字段) * 示例 select max(math) from student; ③ 最小
用户8250147
2021/02/04
7470
MySQL常用语句
DDL操作数据库、表 1. 操作数据库:CRUD 创建(Create) 创建数据库:
一点博客
2019/07/24
7960
MySQL约束课堂笔记
张哥编程
2024/12/19
1610
MySQL的库表详细操作
  关于库的内容,咱们就说这些吧,哈哈,有点少是吧,不是咱们的重点,来看下面的表操作~~~
changxin7
2022/05/06
1.1K0
MySQL的库表详细操作
Mysql增删改查sql语句练习
Mysql增删改查sql语句练习 关于数据库的一些操作: 进入mysql 命令行: mysql -uroot –p 查看所有数据库: show databases; 创建数据库: create database wg charset utf8; 删除数据库: drop database wg; 选择数据库: use databases; 查看所有表: show tables; 查看创建数据库的语句:show create database databasename; 查看创建表的语句:show create table tablename; 查看表结构:desc tablename; 增: mysql> use wg; mysql> create table students( id int auto_increment primary key,name varchar(10) not null,sex varchar(12),address varchar(50),phone int not null unique); #自增长 auto_increment #非空 not null #默认值 default ‘xx’ #唯一 unique #指定字符集 charset #主键 primary key mysql> create table scores(id int auto_increment primary key,s_id int not null,grade float not null); 数据: mysql> insert into student (id,name,sex,phone) values(122,’wg’,’男’,’110’); mysql> insert into students values(111,’wg’,’121’,’dd’) ; 删: mysql> drop table tablename; mysql> truncate tablename; 快速删除表数据,自增长id从头在来,快速,从磁盘直接删除,不可恢复 mysql> delete from student; 删除整个表的数据,自增长继续 改: mysql> alter table oldtable rename newtable; 改表名 mysql> alter table scores modify s_id varchar(20);
全栈程序员站长
2022/07/25
2.2K0
Mysql增删改查sql语句练习
【MySQL】008-表的约束
说明链接:https://blog.csdn.net/u014743697/article/details/54136092
訾博ZiBo
2025/01/06
990
MySQL高级面试篇之索引详解大全
  索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据。对于索引,会保存在额外的文件中。
用户5224393
2019/08/13
6430
MySQL进阶之索引
索引是对数据库表中一个或多个列(例如,employee 表的姓名 (name) 列)的值进行排序的结构。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。
测试小兵
2019/11/19
4570
【MySQL】SQL语句查询、约束、备份与恢复
SELECT * FROM product ORDER BY price DESC;
陶然同学
2023/02/24
2K0
【MySQL】SQL语句查询、约束、备份与恢复
MySQL基础笔记
MySQL基础 一、数据库的基本概念 1.为什么要学数据库? 之前我们如果想将一些数据实现永久化存储,可以怎么做呢?没错。使用IO流的技术将数据保存到本地文件中 但是接下来我有这样一个需求:将下面的user.txt文件中的王五年龄修改为35 张三 23 男 李四 24 男 王五 25 女 赵六 26 女 周七 27 男 我们要如何实现呢? 可以采用字符缓冲流,将每一行数据读取出来,封装为User对象。将多个User对象保存到集合中 然后遍历集合,将王五对象的年龄修改为35,再重新将集合中的对象信息写
楠羽
2022/11/18
2.8K0
MySQL基础笔记
盘点MySQL慢查询的12个原因
日常开发中,我们经常会遇到数据库慢查询。那么导致数据慢查询都有哪些常见的原因呢?今天田螺哥就跟大家聊聊导致MySQL慢查询的12个常见原因,以及对应的解决方法。
捡田螺的小男孩
2023/02/24
1.5K0
盘点MySQL慢查询的12个原因
MySQL总结
2.alter table t1 modify name char(3); 修改类型
changxin7
2019/09/12
2K0
MySQL总结
My SQL常用操作汇总
写这篇随笔的目的是我发现了在上一篇关于My SQL的随笔中存在一些不严谨的代码问题,在这里再次简单的总结一下并加以改进,以代码为主。 # !每行命令必须以分号(;)结尾 先通过命令行进入数据库客户端 mysql -h服务端ip地址 -P(大写)服务端使用的端口,一般为3306 -p(小写) 回车之后输入密码,进入 显示所有数据库 show databases; 创建数据库并设置编码   - 数据库创建时可以设置字符集以及排序规则   - 字符集一般使用utf8的,排序规则一般使用忽略大
汪凡
2018/05/29
9550
MySQL[一]
1·什么是MySQL丶Oracle丶SQLite丶Access丶MS SQL Server等?
Wyc
2018/09/11
8830
12个MySQL慢查询的原因分析「建议收藏」
很多时候,我们的慢查询,都是因为没有加索引。如果没有加索引的话,会导致全表扫描的。因此,应考虑在 where 的条件列,建立索引,尽量避免全表扫描。
全栈程序员站长
2022/11/04
2K0
相关推荐
14.MySQL(二) 数据之表操作表内容操作Mysql 连接事务外键
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档