mysql基础(一)查询语句

1、导入示例数据库
教程 https://www.yiibai.com/mysql/how-to-load-sample-database-into-mysql-database-server.html
简单来说只需要三条语句:
a.创建数据库:create database if not exists 数据库名 default charset utf8 collate utf8_general_ci;
b.切换数据库:use 数据库名;
c.导入数据:source 数据库位置;
在这里插入图片描述
在mysql中存在各种utf8编码格式:utf8_bin(将字符串中的每一个字符以二进制数据存储,区分大小写)、utf8_general_ci(不区分大小写)、utf8_feneral_cs(区分大小写)。

查看已有的数据库:show databases;
查看当前的表:show tables;
2. SQL是什么?MySQL是什么?
SQL是一种用于操作数据库的语言。SQL是用于所有数据库的基本语言。不同数据库之间存在较小的语法更改,但基本的SQL语法基本保持不变。
SQL用于访问,更新和操作数据库中的数据。它的设计允许管理RDBMS中的数据,例如MYSQL。SQL语言还用于控制数据访问以及数据库模式的创建和修改。
MySQL是可用的开源数据库之一。今天有很多MySQL的替代变种。但是,变体之间的差异并不重要,因为它们使用相同的语法,并且基本功能也保持不变。
MySQL是一种RDBMS,它允许保持数据库中存在的数据。MySQL提供对数据库的多用户访问。在Linux发行版之上,此RDBMS系统与PHP和Apache Web Server的组合一起使用。MySQL使用SQL语言来查询数据库。MySQL是一个RDBMS tostore,使用SQL检索,修改和管理数据库。SQL是一种查询语言。MySQL是数据库软件。

3. 查询语句 SELECT FROM
3.1 select语句:用于从一个或多个表中检索信息。语法:select 列名 from 表名;
3.2 去重语句:用于返回唯一不同值。语法:select distinct(列名) from 表名;
3.3 前N个语句:用于获取前N条数据。
语法1:select 列名 from 表名 limit n;
语法2:**select 列名 from 表名 limit m,n;**从第m行开始显示n条数据。
3.4 CASE…END判断语句:用于计算条件列表并返回多个可能结果表达式之一。

select id,
case 
when grade>=60 then "PASS"    #when 中的变量与select的项没有必然的关系
else "FAIL"
end  grade
from myclass;

将grade大于等于60的显示PASS低于60的为FAIL。
4. 筛选语句 WHERE
4.1 在select语句中,数据根据where子句中指定的搜索条件进行过滤。
4.2 操作符
在这里插入图片描述
上图来自<SQL必知必会>
4.3 通配符:用来匹配值的一部分的特殊字符。有百分号(%)通配符和下划线(_)通配符。
a、百分号(%)表示任何字符出现的任意次数。

SELECT city FROM offices WHERE city LIKE 'b%';

执行这条子句时将检索任意以b起头的词。通配符可以在搜索模式中任意位置使用,并且可以使用多个通配符。通配符不能匹配NULL。
5.分组语句 GROUP BY
5.1 聚集函数

SELECT count(city) FROM offices;

5.2 HAVING子句:使用HAVING子句的目的与WHERE子句相似,不同的是WHERE是在FROM之后,而HAVING是在GROUP BY子句之后。

5.3 排序语句 ORDER BY:ORDER BY子句主要用于保证结果中的行按照一定顺序排列。[ASC|DESC]其中DESC表示降序。ASC表示升序,默认的是ASC。

SELECT city FROM offices ORDER BY city DESC;
  1. 函数
    6.1 时间函数
    minute():返回分钟
    second():返回秒数
    weekday():返回date为星期几
    dayofmonth():月中第几日
    dayofyear():年中第几日
    month():返回月份
    dayname():星期英文名
    monthname():月份英文名
    quarter():一年的第几个季度
    week(date,first):为一年的第几周,default:first:=0,周日开始,1为从周一开始…
    year():返回年份
    hour():返回小时
    period_add():增加月份
    period_diff():相差的月份
    date_add(date,interval expr type):增加对应的时间单位
    date_sub(date,interval expr type):减去对应的时间单位
    date_format():字符串格式化date
    now():返回当前datetime
    curdate():当前date
    curtime():当前time

6.2 数值函数
在这里插入图片描述
6.3 字符串函数
concat():连接字符串
insert():替换子串内容
lower():所有字母小写
upper():所有字母大写
left():返回最左边的字符
right():返回最右边的字符
lpad():最左端填充n个长度的字符串
rpad():最右端填充n个长度的字符串
ltrim():去左边空格
rtrim():去右边空格
trim():去左右空格
repeat():返回重复n次的字符串
replace():替换子串内容
strcmp():比较两个字符串
substring():取子串

7.SQL注释
单行注释使用–
多行注释采用/…/

8.SQL代码规范
[SQL编程格式的优化建议] https://zhuanlan.zhihu.com/p/27466166
[SQL Style Guide] https://www.sqlstyle.guide/

#作业#
项目一:查找重复的电子邮箱(难度:简单)
创建 email表,并插入如下三行数据

CREATE TABLE email (
Id INT NOT NULL PRIMARY KEY,
Email VARCHAR(20)
);

INSERT INTO email VALUES('1','a@b.com');
INSERT INTO email VALUES('2','c@d.com');
INSERT INTO email VALUES('3','a@b.com');

编写一个 SQL 查询,查找 Person 表中所有重复的电子邮箱。
根据以上输入,你的查询应返回以下结果:

 select Email from email group by Email having count(Email)>1;

在这里插入图片描述
说明:所有电子邮箱都是小写字母。

项目二:查找大国(难度:简单)
创建如下 World 表

CREATE TABLE World (
name VARCHAR(20) NOT NULL,
continent VARCHAR(20) NOT NULL,
area INT NOT NULL,
population INT NOT NULL,
gdp INT NOT NULL
);

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

如果一个国家的面积超过300万平方公里,或者(人口超过2500万并且gdp超过2000万),那么这个国家就是大国家。
编写一个SQL查询,输出表中所有大国家的名称、人口和面积。

 select name,population,area from World where area>3000000 or (population>25000000 and gdp>20000000);

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值