数据库sql文件链接如下
链接:https://pan.baidu.com/s/1g6GKTZ6GVg04gxs4VzhxJA
提取码:ttst
专栏中有mysql的导入导出,里面有教如何导入
一、别名
AS(alias 别名):
SELECT
account_id,
product_cd,
cust_id
FROM
account
# 当我们编写这个样的sql时运行后,我们会得到如下图的数据。
这样的数据没有问题,但并不是所有人都对英文很敏感,那么我们可以使用 as 使得表头更直观。
SELECT
account_id AS "账户id",
product_cd AS "产品",
cust_id AS "顾客id"
FROM
account
以上sql结果如下。
二、去除重复
DISTINCT(去重)
我想查看表account中有哪几种产品
SELECT
product_cd
FROM
account
这个sql语句就有了明显的漏洞,每有一个产品都会展示。这时我们可以使用去重的关键字 DISTINCT
SELECT DISTINCT
product_cd
FROM
account
这时数据就很直观了,一共有6中都不会重复。
这个关键字会有一些新手较为容易犯错的地方,如:
SELECT
cust_id,
DISTINCT product_cd
FROM
account
乍一看好像没毛病,查找顾客和产品并且对产品去重,但是我们一跑,直接报错
这时为什么呢,首先我们来分析cust_id有29条记录,去重后的product_cd却只有6条,这样的数据如何匹配成表呢?自然就报错了。
那么我们这样写,他会报错么?
SELECT DISTINCT
product_cd,
cust_id
FROM
account
运行sql之后发现没有报错,为什么呢?原来是DISTINCT对两个字段都进行了去重操作,确保了product_cd和cust_id这两个字段不会同时都相同。
三、 空值参与运算
SELECT
monthly_income AS "月工资",
monthly_income* 12 AS "年工资"
FROM
account
执行以上sql,发现年月工资为null的年工资也为null。这就是控制参与运算。我们可以使用IFNULL()来处理空值
SELECT
monthly_income AS "月工资",
IFNULL( monthly_income, 0 )* 12 AS "年工资"
FROM
account
执行以上sql,结果如下发现即使月工资为null年工资也可以用0来正常显示,这是因为IFNULL( monthly_income, 0 )他检测到月工资为null后会将null替换成0进行运算。
四、常数查询
在select…from…中,我们可以统一的给查询出来的数据打上相同的一个标签,如下所示。
SELECT
'天天搜题',
account_id,
product_cd
FROM
account
执行上述sql可得下图。
五、 显示表结构
# 第一种
DESCRIBE account
# 第二种
DESC account
上述两个sql都会产生下图数据。
六、 过滤数据(where)
需求:我只想查询 product_cd=CHK 的数据
SELECT
*
FROM
account
WHERE
product_cd = 'CHK'
执行以上代码可以看到数据中就只有product_cd= CHK的数据了。
七、like的基础用法
7.1 %
% 包含零个或多个字符的任一字符串
SELECT
*
FROM
account
WHERE
product_cd LIKE ("C%")
执行以上sql 将会得到以下结果,获取到了product_cd字段 以C开头的所有记录
7.2 _
_ 任何单个字符
SELECT
*
FROM
account
WHERE
product_cd LIKE ("C_")
查询字段product_cd 所有以C为开头,长度为2的记录,结果如下。
小练习
1. 更具月工资查计算一年的工资,并重新起名为“年工资”。
2. 对product_cd进行去重。
3. 查询工资大于1200的记录。
4. 查询account_id为7的账户的product_cd和cust_id。
5. 显示表account的表结构,查询表中所有的数据。
6. 显示出 product_cd 字段中以 C 开头的记录
7. 显示出 product_cd 字段中以 K 结尾的记录
8. 显示出 product_cd 字段中有 C 的记录
9. 查询月工资在1000到2000之间的记录
10. 查询open_branch_id大于等于2 并且月收入大于1000的记录