MySQL数据库技术(1+X)
定义表的时候,需要确定每个字段的数据类型。MySQL 支持多种数据类型,
大致可以分为三类:数值类型、日期/时间类型和字符串类型。
数值类型
数值类型包括 5 种整数 、2 种浮点数 和1 种定点数,如下表所示。
日期/时间类型
日期/时间类型如下表所示:
字符串类型
字符串类型如下表所示:
启动数据库:
sql
sudo service mysql start
进入数据库:
sql
mysql -u root -p
使用 source
命令导入数据库:
sql
source /home/project/world.sql
select
的基本语法如下:
sql
select 列名 from 表名;
如果需要从表中选取多个列,列名之间用逗号分隔。
sql
select 列名1,列名2,......,列名n from 表名;
DISTINCT关键字,它的作用是消除重复的行
sql
select DISTINCT 列名 from 表名;
sql
select 列名 from 表名 where 列名 运算符 条件值;
select * from city where CountryCode = 'PSE';
1、不等于
select * from city where id!=1;
分页查询
sql
select 列名 from 表名 limit 起始行行号,每页显示的行数
例如:查询 city 表中的记录,从第 6 行开始,显示 5 行记录。
sql
select * from city limit 5,5;
行号是从 0 开始,因此 limit
的第一个参数是 5。 limit
后也可以只跟一个参数,表示需要返回的行数,此时从第一行开始获取数据。
例如:显示 city 表中的前 5 行记录
select * from city limit 5;
ORDER BY 语法
sql
select 列名 from 表名 order by 列名
非数值类型的字段的排序是按字典序。
desc
即可实现降序排列。asc
表示升序
例如:按人口数量进行降序排序,只取前 5 条记录
sql
select * from city order by population desc limit 5;
注意:是先排序再取前 5 条,而不是把前 5 条拿去做降序排序后输出。
GROUP BY 语法
sql
select 列名 from city [where 条件] group by 列名;
where
条件在这里不是必须的。
HAVING 语法
sql
select 列名 from city group by 列名 having 分组条件;
GROUP BY 与 HAVING 的作用
在 MySQL 数据库中 group by
是和聚合函数一起使用的,通过把一个或多个列分成多个组,然后使用聚合函数进行分组统计。
having
的作用就是分组后再对组设置查询条件,过滤掉不符合条件的组。
在数据库中,函数通常分为单行函数与多行函数两类,如下图所示:
单行函数:将每一条记录作为输入值进行计算,得到每条记录对应的结果。如:字符串函数、数值函数、日期时间函数等。
多行函数:将多条记录作为输入值进行计算,得到单个结果。如:最大值函数、求和函数、统计函数等。
字符串函数
数值函数
数值函数用来处理数值方面的运算,能够提高用户的工作效率。常用的数值函数如下表所示,函数括号内为输入的参数。
日期时间函数
转换函数
对日期 使用 DATE_FORMAT
函数,对字符串 使用 STR_TO_DATE
函数、CAST
函数、**CONVERT
**函数。
对日期使用 DATE_FORMAT()函数
对字符串使用 STR_TO_DATE() 函数
把字符串转换为日期时间需要注意以下几点:
- 待转换字符串中只能出现数字,否则返回结果为 null;
- 如果格式字符串仅包含日期,则待转字符串至少需要 8 位数字,转换时默认前四位是年份,中间两位是月份,最后两位是日期,格式字符串无需使用
-
区分日期各部分,结果会自动用-
拼接日期各个部分; - 转换后日期时间必须有效,否则返回结果为 null;
- 如果被转字符串超出 8 位且格式字符串中无时间格式,则自动取前 8 位转换为日期;
- 格式字符串可包含时间格式,格式字符串无需使用
:
区分时间各部分,结果中的时间部分会自动用:
连接各个部分。