在mysql中用int类型存储IP

本文介绍了MySQL中用于将IP地址转换为十进制数字和将其转换回IP地址的两个函数:INET_ATON()和INET_NTOA()。通过示例展示了如何使用这些函数,并解释了它们在存储IP地址时采用二进制形式的原因。

原创地址:http://www.phpv5.com/blog/archives/313

    这篇文章没什么技术含量, 主要介绍两个mysql函数,  INET_ATON() 将IP转为十进制数字, INET_NTOA()将数字转换为IP。

    先来看IP的结构, 127.0.0.1  ,学计算机的对2的N次方比较敏感,一看就猜到是由 4个8位的二进制数字组成, 对, 就是这样!也就是说IP转换成二进制可以这样: 

1 selectconcat(bin(127),lpad(bin(0),8,0),lpad(bin(0),8,0),lpad(bin(1),8,0));

    把每一位的前边补0, 然后拼接起来,得到这样的结果: 1111111000000000000000000000001 

    系统的INET_ATON()函数也是这么算的,不信可以对比一下结果:

1 selectbin(inet_aton('127.0.0.1'));

    得到的结果也是这样:  1111111000000000000000000000001 

    所以得出结论: INET_ATON() 就是把IP的每一段转为二进制拼接起来,然后将这个32位的二进制数字转为10进制

示例:

1 selectINET_ATON('127.0.0.1');  --转为数字
2 selectINET_NTOA(2130706433); --转为IP

    为什么这么存储呢? 

    有人说节省空间, 也对, 不过比较蛋疼, 现在的硬盘那么便宜在乎这点空间? 

    更为合理的解释是, 方便查询, 比如要查某一网段的所有IP就可以 :

1 select* from table where ip between inet_aton('192.168.0.1') and inet_aton('192.168.0.255');

<think>嗯,用户想了解MySQL的日常使用,我需要从基础开始介绍,确保内容结构清晰。首先,应该先解释什么是MySQL,它的特点和适用场景,这样用户能有个整体的认识。接下来,安装和配置是入门的第一步,可能需要提到不同操作系统下的安装方法,比如在Ubuntu用apt,CentOS用yum,macOS用Homebrew,Windows用安装包。不过可能不需要详细步骤,但给出命令示例会有帮助。 然后是基础操作,用户可能需要知道如何启动和停止服务,这里可以用systemctl命令示例。连接到数据库的mysql命令,以及设置root密码这些基本安全措施也很重要。创建数据库和用户权限部分,CREATE DATABASE和CREATE USER语句是必须的,授权命令GRANT也要说明清楚,可能还要提到FLUSH PRIVILEGES。 接下来是数据表操作,创建表的语法,包括字段类型、主键、自增等,这部分需要举例说明,比如创建一个用户表。CRUD操作(增删改查)是日常使用中最频繁的,要分别给出INSERT、SELECT、UPDATE、DELETE的示例,尤其是WHERE子句的应用,这对过滤数据很重要。 数据类型方面,用户需要了解常用的类型,如INT、VARCHAR、TEXT、DATE、DECIMAL等,还有主键、外键的概念,以及索引的作用,可以提到使用CREATE INDEX来优化查询速度。 进阶部分应该包括事务处理,用START TRANSACTION和COMMIT/ROLLBACK来保证数据一致性。存储过程和触发器的简单示例能帮助用户了解自动化操作。备份与恢复是维护的重要环节,mysqldump命令和mysql恢复的示例必不可少。性能优化方面,EXPLAIN和索引的使用需要强调,还有避免SELECT *的建议。 安全方面,修改默认端口、限制IP访问、定期备份都是关键点,可能还要提到SSL加密,但用户可能日常使用中接触较少,简单提及即可。最后推荐图形化工具,如Workbench、Navicat、phpMyAdmin和DBeaver,方便用户选择适合自己的工具。 需要检查所有行内数学表达式是否用$...$格式,比如版本号可能不需要,但如果有公式的话要注意。独立公式的话,可能MySQL中用不到太多数学表达式,但如果有举例的计算,比如索引的选择性公式,需要用$$...$$。同时确保使用中文,语法正确,结构清晰,分点说明,帮助用户逐步掌握MySQL的日常使用。</think>以下是对 MySQL 日常使用的中文介绍,按功能模块分步说明: --- ### 一、MySQL 基础概念 $$ \text{MySQL = 开源关系型数据库 + 高可靠性 + 易扩展性} $$ - **C/S架构**:通过客户端连接服务端进行操作 - **SQL兼容**:支持标准SQL语法,如`SELECT`, `INSERT`, `UPDATE`, `DELETE` - **存储引擎**:常用 InnoDB(支持事务)和 MyISAM(读密集型场景) --- ### 二、安装与配置 ```bash # Ubuntu 安装示例 $ sudo apt-get update $ sudo apt-get install mysql-server ``` - **启动服务**:`sudo systemctl start mysql` - **安全初始化**:`sudo mysql_secure_installation` - **配置文件**:`/etc/mysql/my.cnf`(Linux)或 `my.ini`(Windows) --- ### 三、基础操作 #### 1. 连接数据库 ```sql $ mysql -u root -p # 输入密码进入命令行 ``` #### 2. 创建数据库 ```sql CREATE DATABASE shop_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` #### 3. 用户权限管理 ```sql CREATE USER 'dev_user'@'%' IDENTIFIED BY 'StrongP@ss123!'; GRANT SELECT, INSERT ON shop_db.* TO 'dev_user'@'%'; FLUSH PRIVILEGES; # 刷新权限 ``` --- ### 四、数据表操作 #### 1. 创建表 ```sql CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, email VARCHAR(100) CHECK (email LIKE '%@%'), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB; ``` #### 2. CRUD 操作 - **插入数据**: ```sql INSERT INTO users (username, email) VALUES ('john_doe', 'john@example.com'); ``` - **查询数据**: ```sql SELECT * FROM users WHERE id > 100 LIMIT 10; ``` - **更新数据**: ```sql UPDATE users SET email = 'new@example.com' WHERE id = 5; ``` - **删除数据**: ```sql DELETE FROM users WHERE last_login < '2023-01-01'; ``` --- ### 五、数据类型与约束 | 类型 | 示例 | 说明 | |--------------|---------------------|--------------------------| | `INT` | `age INT` | 整型 | | `VARCHAR(n)` | `name VARCHAR(20)` | 可变长度字符串 | | `DECIMAL` | `price DECIMAL(8,2)`| 精确小数 | | `ENUM` | `status ENUM('Y','N')` | 枚举值 | --- ### 六、进阶功能 #### 1. 事务处理 ```sql START TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE user_id = 1; UPDATE accounts SET balance = balance + 100 WHERE user_id = 2; COMMIT; # 或 ROLLBACK 回滚 ``` #### 2. 索引优化 ```sql CREATE INDEX idx_email ON users(email); # 加速查询 EXPLAIN SELECT * FROM users WHERE email = 'test@example.com'; # 分析执行计划 ``` #### 3. 备份与恢复 ```bash # 备份整个数据库 $ mysqldump -u root -p shop_db > backup.sql # 恢复数据 $ mysql -u root -p shop_db < backup.sql ``` --- ### 七、日常维护建议 1. **定期备份**:使用 `crontab` 设置自动备份任务 2. **慢查询监控**:配置 `slow_query_log` 记录性能瓶颈 3. **版本升级**:关注官方安全通告,及时打补丁 4. **权限最小化**:遵循最小权限原则分配用户权限 --- ### 八、常用工具推荐 - **MySQL Workbench**:官方图形化管理工具 - **phpMyAdmin**:Web端管理界面 - **Percona Toolkit**:高级运维工具集 $$ \text{提示:日常操作务必先在测试环境验证,再上生产环境!} $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值