获得数据库和表信息
1.查看当前选择的数据库:SELECT DATABASE();
(SHOW DATABASES;服务器当前有哪些数据库)
2.查看当前数据库包含哪些表:SHOW TABLES;
3.查看表的索引信息:SHOW INDEX FROM pet;
批处理模式下使用mysql
暂时跳过
常用查询
练习使用数据
注:UNSIGNED (只针对整型,无符号,即为非负),ZEROFILL(补零操作,当插入的数值比定义的属性长度小的时候,会在数值前面进行补零,如下article int(4)当插入2时,插入到表中的是0002)
CREATE TABLE shop (
article INT(4) UNSIGNED ZEROFILL DEFAULT '0000' NOT NULL,
dealer CHAR(20) DEFAULT '' NOT NULL,
price DOUBLE(16,2) DEFAULT '0.00' NOT NULL,
PRIMARY KEY(article, dealer)
);
INSERT INTO shop VALUES(1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),(3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
1.查询列的最大值
SELECT MAX(article) from shop;
2.查询列最大值的行信息
方法一:
SELECT * FROM shop WHERE article = (SELECT MAX(article) FROM shop);
方法二:
article按照降序排列,取第一行(LIMIT 1)
SELECT * FROM shop ORDER BY article DESC LIMIT 1;
3.分组(GROUP BY)查询列的最大值
SELECT article,MAX(price) FROM shop GROUP BY article;
4.某字段组间最大值的行(每一组的最大值)
SELECT article, dealer, price
FROM shop s1
WHERE price=(
SELECT MAX(s2.price)
FROM shop s2
WHERE s1.article = s2.article);
5.使用用户变量
查询价格最高或最低的物品
方法一:
SELECT * FROM shop WHERE price = @min_price or price = @max_price;
方法二:
SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;
6.使用外键
7.根据两个键来查询
方法一:
SELECT * FROM shop WHERE price = '3.45' or article = '0002';
更加有效的方式:
注:UNION(用于合并两个或多个 SELECT 语句的结果集),UNION ALL(默认地,UNION 操作符选取不同的值。允许重复的值,使用 UNION ALL)
SELECT * FROM shop WHERE price = '3.45'
UNION
SELECT * FROM shop WHERE article = '0002';
8.根据天计算访问量:
练习数据
CREATE TABLE t1 (year YEAR(4), month INT(2) UNSIGNED ZEROFILL,day INT(2) UNSIGNED ZEROFILL);
INSERT INTO t1 VALUES(2000,1,1),(2000,1,20),(2000,1,30),(2000,2,2),(2000,2,23),(2000,2,23);
注:bit_or:二进制数按位或,bit_and:二进制数按位与,bit_count:二进制1的个数
SELECT year,month,BIT_COUNT(BIT_OR(1<<day)) AS days FROM t1 GROUP BY year,month;
9.AUTO_INCREMENT的使用
其会在新记录插入表中生成一个唯一的数字
可以通过AUTO_INCREMENT属性为新的行产生唯一的标识
可以定义AUTO_INCREMENT主键
可以通过LAST_INSERT_ID()函数查询刚刚最新的AUTO_INCREMENT值
网友评论