- 开发无止境 -
Data: 2019-02-10 02:10:55Form: JournalClick: 13
MySQL
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的值 | 小数值 |
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 | 混合日期和时间值,时间戳 |
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字节 | 极大文本数据 |
# 创建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='用户表';
MySQL
表中使用 INSERT INTO
语句来插入数据
// 指定字段名
INSERT INTO `user` (`uid`,`phone`,`name`,`sex`,`age`,`status`)
VALUES
(1,'18000001111','欧阳克',1,18,1);
// 未指定字段名
INSERT INTO `user`
VALUES
(2,'18000002222','黄蓉',1,16,1);
MySQL
数据库使用 SELECT
语句来查询数据
// 无条件查询
SELECT * FROM `user`;
// 有条件查询
SELECT * FROM `user` WHERE `uid`=1;
// 指定字段返回, * 查询全部字段
SELECT `phone`,`name` FROM `user` WHERE `uid`=1;
MySQL
数据库使用 UPDATE
命令来修改数据
// 无条件修改,会修改全表,不要这样操作
UPDATE `user` SET
`name`='郭靖',`age`=20,`phone`='18000003333';
// 有条件修改
UPDATE `user` SET
`name`='郭靖',`age`='20',`phone`='18000003333' WHERE `uid`=1;
MySQL
数据库使用 DELETE
命令来删除数据
// 无条件删除,会删除全表,不要这样操作
DELETE FROM `user`;
// 有条件删除
DELETE FROM `user` WHERE `uid`=1;
MySQL
子句方便下面测试,我们先增加一些假数据
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');
WHERE
条件子句WHERE
命令来执行条件WHERE
子句类似于程序语言中的 if 条件,根据 MySQL
表中的字段值来读取指定的数据
// 字段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 |
// 不等于
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;
ORDER BY
排序子句ORDER BY
命令进行数据结果排序
// 默认正序
SELECT * from `user` ORDER BY `age` ASC;
// 倒序查询
SELECT * from `user` ORDER BY `age` DESC;
LIMIT
分页子句LIMIT
命令进行分页显示
// 查询前5条数据
SELECT * FROM `user` LIMIT 5;
// 查询从第1条开始,往后查询出10条
SELECT * FROM `user` LIMIT 0,10;
// 查询从第6条开始,往后查询出10条
SELECT * FROM `user` LIMIT 5,10;
备:子句可以在一起使用
SELECT `uid`,`phone`,`name` FROM `user` WHERE `uid` <> 10 ORDER BY `age` DESC LIMIT 5,10;
LIKE
条件子句LIKE
命令进行模糊查询,要配合 WHRER
%
匹配任意多个字符_
匹配任意一个字符
// 匹配右边任意多个字符
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_';
IS NULL
和 IS NOT NULL
条件子句IS NULL
和 IS NOT NULL
命令进行查询,要配合 WHRER
IS NULL
当列的值是 NULL
,此运算符返回 trueIS NOT NULL
当列的值不为 NULL
,运算符返回 true
// 查询name为空的数据
SELECT * FROM `user` WHERE `name` IS NULL;
// 查询name不为空的数据
SELECT * FROM `user` WHERE `name` IS NOT NULL;
IN
和 NOT IN
条件子句IN
和 NOT IN
命令进行查询,要配合 WHRER
// 查询IN里面的数据
SELECT * FROM `user` WHERE `name` IN ('欧阳克','黄蓉');
// 查询去除IN里面的数据
SELECT * FROM `user` WHERE `name` NOT IN ('欧阳克','黄蓉');