文章目录
1、查询语句
练习:https://www.yiibai.com/mysql/how-to-load-sample-database-into-mysql-database-server.html
1.1 导入数据库
mysql> CREATE DATABASE IF NOT EXISTS yiibaidb DEFAULT CHARSET utf8 COLLATE utf8
mysql> use yiibaidb;
mysql> source /Users/bishounendai/Downloads/yiibaidb.sql
1.2 查询语句 SELECT FROM
SELECT之后是逗号分隔列或星号(*)的列表,表示要返回所有列。
FROM指定要查询数据的表或视图。
(1)查看数据库里的表offices的地区号、城市、国家。
(2)查看表里的所有信息
1.3 where子句
WHERE子句允许根据指定的过滤表达式或条件来指定要选择的行。
(1)选择具有职位名称为销售代表的行记录。
(2)查询将获得办公室代码大于5的每位员工:
可用于在WHERE子句中形成过滤表达式的比较运算符:
(3)通配符
1)百分号(%)通配符:可以匹配多个字符
匹配lastname首字母是P的人
2)下划线(_)通配符:只能匹配单个字符
1.4 GROUP BY分组语句
(1)根据officecode进行分组,显示每组的人数
(2)having子句过滤分组,而where过滤行
1.5 ORDER BY排序语句
(1)按员工号排序
(2)按num排序
1.6 函数
(1)聚合函数
MySQL提供了许多聚合函数,包括AVG,COUNT,SUM,MIN,MAX等。
例:选择员工号最大的数
(2)字符串函数
连接多个字符串
(3)时间函数
1.7 注释
单行注释:#
多行注释:
1.8 格式建议
(1)使用统一的、描述性强的字段命名规则
(2)保证字段名是独一无二且不是保留字的,不要使用连续的下划线,不用下划线结尾
(3)最好以字母开头
id 标识符——user_id 用户标识 item_id 商品标识
dt 表示某个事件发生的时间——ord_dt 订单时间 exam_dt 考试时间
num 表示某事相关的数字——sale_num 销量
name 用字母表示名称——stu_name 学生名 等
sql规则可参考:https://www.sqlstyle.guide/
2、练习
2.1 查找重复的电子邮箱(难度:简单)
(1)新建一个数据库
mysql> create database test
mysql> use test
(2)新建一个表emil
mysql> CREATE TABLE email (
-> ID INT NOT NULL PRIMARY KEY,
-> Email VARCHAR(255)
-> )
-> ;
(3)编写一个 SQL 查询,查找 test表中所有重复的电子邮箱。
select Max(Email) as Email from email where Email in (select Email from email group by Email having count(Email)>1);
2.2 查找大国(难度:简单)
(1)创建表
mysql> CREATE TABLE World (
-> name VARCHAR(50) NOT NULL,
-> continent VARCHAR(50) NOT NULL,
-> area INT NOT NULL,
-> population INT NOT NULL,
-> gdp INT NOT NULL
-> );
(2)插入数据
INSERT INTO World
VALUES('Afghanistan','Asia',652230,25500100,20343000);
INSERT INTO World
VALUES('Albania','Europe',28748,2831741,12960000);
INSERT INTO World
VALUES('Algeria','Africa',2381741,37100000,188681000);
INSERT INTO World
VALUES('Andorra','Europe',468,78115,3712000);
INSERT INTO World
VALUES('Angola','Africa',1246700,20609294,100990000);
展示表的内容:
(3)如果一个国家的面积超过300万平方公里,或者(人口超过2500万并且gdp超过2000万),那么这个国家就是大国家。
编写一个SQL查询,输出表中所有大国家的名称、人口和面积。
mysql> select name,population,area from World where area>3000000 or (population>25000000 and gdp>20000000);