• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
没有了

MySQL常用语句

Data: 2019-02-10 02:10:55Form: JournalClick: 13

# MySQL


# 一、数据类型

# 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字节 极大文本数据

# 二、创建数据表

# 创建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 表中使用 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);

# 2、查询数据

  • MySQL 数据库使用 SELECT 语句来查询数据
// 无条件查询
SELECT * FROM `user`;
// 有条件查询
SELECT * FROM `user` WHERE `uid`=1;
// 指定字段返回, * 查询全部字段
SELECT `phone`,`name` FROM `user` WHERE `uid`=1;

# 3、修改数据

  • MySQL 数据库使用 UPDATE 命令来修改数据
// 无条件修改,会修改全表,不要这样操作
UPDATE `user` SET
`name`='郭靖',`age`=20,`phone`='18000003333';
// 有条件修改
UPDATE `user` SET
`name`='郭靖',`age`='20',`phone`='18000003333' WHERE `uid`=1;

# 4、删除数据

  • 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');

# 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;

# 2、ORDER BY 排序子句

  • (查询)可以使用 ORDER BY 命令进行数据结果排序
// 默认正序
SELECT * from `user` ORDER BY `age` ASC;
// 倒序查询
SELECT * from `user` ORDER BY `age` DESC;

# 3、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;

# 4、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_';

# 5、IS NULLIS NOT NULL 条件子句

  • (查询、修改、删除)可以使用 IS NULLIS NOT NULL 命令进行查询,要配合 WHRER
  • IS NULL 当列的值是 NULL ,此运算符返回 true
  • IS NOT NULL 当列的值不为 NULL ,运算符返回 true
// 查询name为空的数据
SELECT * FROM `user` WHERE `name` IS NULL;
// 查询name不为空的数据
SELECT * FROM `user` WHERE `name` IS NOT NULL;

# 6、INNOT IN 条件子句

  • (查询、修改、删除)可以使用 INNOT IN 命令进行查询,要配合 WHRER
// 查询IN里面的数据
SELECT * FROM `user` WHERE `name` IN ('欧阳克','黄蓉');
// 查询去除IN里面的数据
SELECT * FROM `user` WHERE `name` NOT IN ('欧阳克','黄蓉');
Name:
<提交>