ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 认识 `MySQL` --- ```php # 创建user表 CREATE TABLE `user` ( `uid` int(11) unsigned NOT NULL AUTO\_INCREMENT COMMENT '用户ID', `phone` varchar(11) NOT NULL COMMENT '手机号', `name` varchar(50) NOT NULL COMMENT '昵称', `sex` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '性别 1男 2女 0未知', `age` int(3) unsigned NOT NULL DEFAULT '1' COMMENT '年龄', `status` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态 1开启 0关闭', PRIMARY KEY (`uid`) ) ENGINE=MyISAM AUTO\_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='用户表'; ``` ## 一、数据类型 ### 1、`MySQL` 数值型 **类型**|**大小**|**范围(有符号)**|**范围(无符号)**|**用途** ---|---|---|---|--- TINYINT (tinyint)|1字节|(-128,127)|(0,255)|小整数值 SMALLINT (smallint)|2字节|(-32 768,32 767)|(0,65 535)|大整数值 MEDIUMINT (mediumint)|3字节|(-8388608,8388607)|(0,16777215)|大整数值 INT或INTEGER (int)|4字节|(-2147483648,2147483647)|(0,4294967295)|大整数值 BIGINT (bigint)|8字节|(-9223372036854775808,9223372036854775807)|(0,18446744073709551615)|极大整数值 FLOAT (float)|4字节|(-3.402823466E+38,-1.175494351E-38),0,(1.175494351E-38,3.402 823466351E+38)|0,(1.175494351E-38,3.402823466E+38)|单精度 浮点数值 DOUBLE (double)|8字节|(-1.7976931348623157E+308,-2.2250738585072014E-308),0,(2.2250738585072014E-308,1.7976931348623157E+308)|0,(2.2250738585072014E-308,1.7976931348623157E+308)|双精度 浮点数值 DECIMAL (decimal)|对DECIMAL(M,D),如果M>D,为M+2否则为D+2|依赖于M和D的值|依赖于M和D的值|小数值 ### 2、`MySQL` 日期/时间型 **类型**|**大小**|**范围**|**格式**|**用途** ---|---|---|---|--- DATE (data)|3字节|1000-01-01/9999-12-31|YYYY-MM-DD|日期值 TIME (time)|3字节|-838:59:59'/'838:59:59|HH:MM:SS|时间值或持续时间 YEAR (year)|1字节|1901/2155|YYYY|年份值 DATETIME (datetime)|8字节|1000-01-01 00:00:00/9999-12-31 23:59:59|YYYY-MM-DD HH:MM:SS|混合日期和时间值 TIMESTAMP (timestamp)|3字节|1970-01-01 00:00:00/2038-1-19 11:14:07|YYYYMMDD HHMMSS|混合日期和时间值,时间戳 ### 3、`MySQL` 字符串型 **类型**|**大小**|**用途** ---|---|--- CHAR (char)|0-255字节|定长字符串 VARCHAR (varchar)|0-65535字节|变长字符串 TINYBLOB (tinyblob)|0-255字节|不超过 255 个字符的二进制字符串 TINYTEXT (tinytext)|0-255字节|短文本字符串 BLOB (blob)|0-65535字节|二进制形式的长文本数据 TEXT (text)|0-65535字节|长文本数据 MEDIUMBLOB (mediumblob)|0-16777215字节|二进制形式的中等长度文本数据 MEDIUMTEXT (mediumtext)|0-16777215字节|中等长度文本数据 LONGBLOB (longblob)|0-4294967295字节|二进制形式的极大文本数据 LONGTEXT (longtext)|0-4294967295字节|极大文本数据 ## 二、增删查改 ### 1、插入数据 * `MySQL` 表中使用 `INSERT INTO` 语句来插入数据 ```php // 指定字段名 INSERT INTO `user` (`uid`,`phone`,`name`,`sex`,`age`,`status`) VALUES (1,'18000001111','欧阳克',1,18,1); // 未指定字段名 INSERT INTO `user` VALUES (2,'18000002222','黄蓉',1,16,1); ``` ### 2、查询数据 * `MySQL` 数据库使用 `SELECT` 语句来查询数据 ```php // 无条件查询 SELECT * FROM `user`; // 有条件查询 SELECT * FROM `user` WHERE `uid`=1; // 指定字段返回, * 查询全部字段 SELECT `phone`,`name` FROM `user` WHERE `uid`=1; ``` ### 3、修改数据 * `MySQL` 数据库使用 `UPDATE` 命令来修改数据 ```php // 无条件修改,会修改全表,不要这样操作 UPDATE `user` SET `name`='郭靖',`age`=20,`phone`='18000003333'; // 有条件修改 UPDATE `user` SET `name`='郭靖',`age`='20',`phone`='18000003333' WHERE `uid`=1; ``` ### 4、删除数据 * `MySQL` 数据库使用 `DELETE` 命令来删除数据 ```php // 无条件删除,会删除全表,不要这样操作 DELETE FROM `user`; // 有条件删除 DELETE FROM `user` WHERE `uid`=1; ``` ## 三、`MySQL` 子句 > 方便下面测试,我们先增加一些假数据 ```php INSERT INTO `user` VALUES ('1','13311111111','欧阳克','1','18','1'); INSERT INTO `user` VALUES ('2','13322222222','黄蓉','2','16','1'); INSERT INTO `user` VALUES ('3','13333333333','郭靖','1','20','1'); INSERT INTO `user` VALUES ('4','13344444444','杨康','1','22','1'); INSERT INTO `user` VALUES ('6','13355555555','穆念慈','2','19','1'); INSERT INTO `user` VALUES ('7','13366666666','黄药师','1','50','1'); INSERT INTO `user` VALUES ('8','13377777777','欧阳锋','1','51','1'); INSERT INTO `user` VALUES ('9','13388888888','段智兴','1','52','1'); INSERT INTO `user` VALUES ('10','13399999999','洪七公','1','56','1'); INSERT INTO `user` VALUES ('11','13300000000','王重阳','1','60','1'); INSERT INTO `user` VALUES ('12','13411111111','周伯通','1','57','1'); INSERT INTO `user` VALUES ('13','13422222222','郭啸天','1','43','1'); INSERT INTO `user` VALUES ('14','13433333333','李萍','2','37','1'); INSERT INTO `user` VALUES ('15','13455555555','杨铁心','1','42','1'); INSERT INTO `user` VALUES ('16','13466666666','包惜弱','2','36','1'); INSERT INTO `user` VALUES ('17','13477777777','完颜洪烈','1','55','1'); INSERT INTO `user` VALUES ('18','13488888888','柯镇恶','1','62','1'); INSERT INTO `user` VALUES ('19','13499999999','朱聪','1','58','1'); INSERT INTO `user` VALUES ('20','13400000000','韩宝驹','1','54','1'); INSERT INTO `user` VALUES ('21','13511111111','南希仁','1','52','1'); ``` ### 1、`WHERE` 条件子句 * (查询、修改、删除)可以使用 `WHERE` 命令来执行条件 * `WHERE` 子句类似于程序语言中的 if 条件,根据 `MySQL` 表中的字段值来读取指定的数据 ```php // 字段uid等于1的用户,会被查询出来 SELECT * FROM `user` WHERE `uid` = 1; ``` > 除了 = 号,还有其它操作符 **操作符**|**描述**|**实例** ---|---|--- `=`|等号,检测两个值是否相等,如果相等返回true|(A = B) 返回false `<>` `!=`|不等于,检测两个值是否相等,如果不相等返回true|(A != B) 返回 true `>`|大于号,检测左边的值是否大于右边的值,如果左边的值大于右边的值返回true|(A > B) 返回false `<`|小于号,检测左边的值是否小于右边的值,如果左边的值小于右边的值返回true|(A < B) 返回 true `>=`|大于等于号,检测左边的值是否大于或等于右边的值,如果左边的值大于或等于右边的值返回true|(A >= B) 返回false `<=`|小于等于号,检测左边的值是否小于于或等于右边的值,如果左边的值小于或等于右边的值返回true|(A <= B) 返回 true ```php // 不等于 SELECT * FROM `user` WHERE `uid` <> 10; // 大于 SELECT * FROM `user` WHERE `uid` > 10; // 大于等于号 SELECT * FROM `user` WHERE `uid` >= 10; // 小于 SELECT * FROM `user` WHERE `age` < 50; // 小于等于 SELECT * FROM `user` WHERE `age` <= 50; ``` ### 2、`ORDER BY` 排序子句 * (查询)可以使用 `ORDER BY` 命令进行数据结果排序 ```php // 默认正序 SELECT * from `user` ORDER BY `age` ASC; // 倒序查询 SELECT * from `user` ORDER BY `age` DESC; ``` ### 3、`LIMIT` 分页子句 * (查询)可以使用 `LIMIT` 命令进行分页显示 ```php // 查询前5条数据 SELECT * FROM `user` LIMIT 5; // 查询从第1条开始,往后查询出10条 SELECT * FROM `user` LIMIT 0,10; // 查询从第6条开始,往后查询出10条 SELECT * FROM `user` LIMIT 5,10; ``` > 备:子句可以在一起使用 ```php SELECT `uid`,`phone`,`name` FROM `user` WHERE `uid` <> 10 ORDER BY `age` DESC LIMIT 5,10; ``` ### 4、`LIKE` 条件子句 * (查询、修改、删除)可以使用 `LIKE` 命令进行模糊查询,要配合 `WHRER` * `%` 匹配任意多个字符 * `\_` 匹配任意一个字符 ```php // 匹配右边任意多个字符 SELECT * FROM `user` WHERE `name` LIKE '欧%'; // 匹配左边任意多个字符 SELECT * FROM `user` WHERE `phone` LIKE '%22'; // 匹配两边任意多个字符 SELECT * FROM `user` WHERE `phone` LIKE '%1%'; // 匹配右边任意一个字符 SELECT * FROM `user` WHERE `name` LIKE '欧_'; // 匹配左边任意一个字符 SELECT * FROM `user` WHERE `phone` LIKE '_22'; // 匹配两边任意一个字符 SELECT * FROM `user` WHERE `phone` LIKE '_1_'; ``` ### 5、`IS NULL` 和 `IS NOT NULL` 条件子句 * (查询、修改、删除)可以使用 `IS NULL` 和 `IS NOT NULL` 命令进行查询,要配合 `WHRER` * `IS NULL` 当列的值是 `NULL` ,此运算符返回 true * `IS NOT NULL` 当列的值不为 `NULL` ,运算符返回 true ```php // 查询name为空的数据 SELECT * FROM `user` WHERE `name` IS NULL; // 查询name不为空的数据 SELECT * FROM `user` WHERE `name` IS NOT NULL; ``` ### 6、`IN` 和 `NOT IN` 条件子句 * (查询、修改、删除)可以使用 `IN` 和 `NOT IN` 命令进行查询,要配合 `WHRER` ```php // 查询IN里面的数据 SELECT * FROM `user` WHERE `name` IN ('欧阳克','黄蓉'); // 查询去除IN里面的数据 SELECT * FROM `user` WHERE `name` NOT IN ('欧阳克','黄蓉'); ``` ## 四、组合条件 ### 1、