MySQL自学进行时
1.导入数据
(1)建一个空库
create database 库名;
(2)建一个空表
create table 表名;
#重建就先删除在建
删表
drop table 表名;
删表内容
truncate table 表名(自增列从零开始计算)
delete table 表名(自增列从删之前的值开始继续)
(3)使用命令行批量导入
load data infile '文件地址'
into table 表名
[character set gbk]#制定某种字符集,数据乱码可以设置该关键词修正
[fields terminated by '\t']#指定字段之间的分隔符,默认tab制表符
[escaped by '/']#用于指定转义符,默认\
[lines terminated by '\n']#用于指定行之间的分隔符,默认为换行符\n
[ignore n lines]#用于指定跳过的行数,如果原始数据中前n行不是数据内容,则可以选择该关键字实现跳过
实践操作:
CREATE DATABASE trin;#创建库
USE trin;
#DROP TABLE sec_buildings;
CREATE TABLE sec_buildings(
NAME VARCHAR(20),#名字
TYPE VARCHAR(10),#户型
size DECIMAL(10,2),#大小
region VARCHAR(10),#房源位置
FLOOR VARCHAR(20),#楼层数
direction VARCHAR(20),#朝向
tot_amt INT,#总价
built_date VARCHAR(20),#建成日期
price_unit INT#单位价格
);#创建空表
DESC sec_buildings;
LOAD DATA INFILE 'E:/sec_buildings.csv'
INTO TABLE sec_buildings
CHARACTER SET gbk
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;#导入数据
#TRUNCATE TABLE sec_buildings;
SELECT * FROM sec_buildings;#查询导入的所有信息
单表查询:
1.select
①查询所有字段信息
USE trin;
SELECT *
FROM sec_buildings;
②查询二手房的小区名称、户型、面积、单价和总价
SELECT NAME,TYPE,size,tot_amt,price_unit
FROM sec_buildings
2.from
3.where
①查询所有阳台朝西的二手房信息
SELECT *
FROM sec_buildings
WHERE direction = '朝西';
②查询2014年新建的浦东、徐汇、静安、黄埔和长宁二手房信息
SELECT *
FROM sec_buildings
WHERE built_date = '2014年建'
AND region IN ('浦东','徐汇','静安','黄埔','长宁');
③查询黄浦区房价在5500万元以上的二手房名称、户型、面积、朝向和楼层
SELECT `name`,`type`,`size`,`direction`,`floor`
FROM sec_buildings
WHERE `tot_amt`>5500 AND `region` = '黄浦';
④查询浦东面积在60-70平方米之间的二手房名称、类型、面积和总价
SELECT `name`,`type`,`size`,`tot_amt`
FROM sec_buildings
WHERE region = '浦东' AND `size` BETWEEN 60 AND 70;
⑤查询小区名称中包含“新天地”字样的二手房信息
SELECT *
FROM sec_buildings
WHERE NAME LIKE '%新天地%';
4.group by
用于集合(或统计)时的分组操作,通常与聚合函数搭配使用
统计函数(常用):count、sum、avg、min、max
①查询各行政区域下二手房的数量、总的可居住面积、平均价格、最大总价格和最小单价
SELECT region,
COUNT(*) AS counts,
SUM(size) AS sum_zize,
AVG(tot_amt) AS avg_tot_amt,
MAX(tot_amt) AS max_tot_amt,
MIN(price_unit) AS min_price
FROM sec_buildings
GROUP BY region;
5.having
①按照地区、户型、楼层和朝向分组统计黄浦区与浦东区二手房的平均单价和总数量,并筛选出平均单价超过100000元的记录
SELECT
region,
TYPE,
FLOOR,
direction,
AVG(`price_unit`) AS avg_price,
COUNT(*) AS counts
FROM
sec_buildings
WHERE region IN ('黄浦', '浦东')
GROUP BY region,TYPE,FLOOR,direction
HAVING avg_price >100000;
6.order by
排序关键字
①按面积降序,总价升序的方式查询所有2室2厅的二手房信息(返回小区名称、面积、总价、单价、区域和朝向)
SELECT
`name`,
`size`,
`tot_amt`,
`price_unit`,
`region`,
`direction`
FROM
sec_buildings
WHERE `type`='2室2厅'
ORDER BY size DESC,`tot_amt` ASC;
②按照地区、户型、楼层和朝向分组统计黄浦区与浦东区二手房的平均单价和平均面积,并按平均面积升序,平均单价降序排序
SELECT
`region`,
`type`,
`floor`,
`direction`,
AVG(`price_unit`) AS avg_price,
AVG(`size`) AS avg_size
FROM
sec_buildings
WHERE `region` IN ('黄浦', '浦东')
GROUP BY `region`,`type`,`floor`,`direction`
ORDER BY avg_size,avg_price DESC;
```
## 7.limit
一个参数n,表示返回查询结果的前n行数据;如果写入两个整数m和n则表示从第m+1行开始,连续返回n行的数据
①查询出建筑时间最悠久的5套二手房
```sql
SELECT *
FROM sec_buildings
ORDER BY `built_date`
LIMIT 5;
②查询出浦东2013年建的二手房并且总价排名在6~10
SELECT *
FROM sec_buildings
WHERE `built_date` = '2013年建' AND `region` = '浦东'
ORDER BY `tot_amt` DESC
LIMIT 5,5;
以上为单表查询中最为核心的7个关键字,同时也是数据提取时要用到的基本的关键词,其中,有两条最容易犯错的地方:
Ⅰ.在数据查询中,涉及字符型或日期型的值时必须使用引号,并且引号只能是单引号
Ⅱ在编写查询语句是,7个核心关键词的顺序不能错乱,否则语法运行时会产生语法错误的信息