mysql数据库asc_mysql数据库
MySQL
数据库的相关概念
⼀、数据库的好处
1、可以持久化数据到本地
2、结构化查询
⼆、数据库的常见概念
1、DB:数据库,存储数据的容器
2、DBMS:数据库管理系统,⼜称为数据库软件或数据库产品,⽤于创建或管理DB
3、SQL:结构化查询语⾔,⽤于和数据库通信的语⾔,不是某个数据库软件特有的,⽽是⼏乎所有的主流数据库软件通⽤的语⾔
三、数据库存储数据的特点
1、数据存放到表中,然后表再放到库中
2、⼀个库中可以有多张表,每张表具有唯⼀的表名⽤来标识⾃⼰
3、表中有⼀个或多个列,列⼜称为“字段”,相当于java中“属性”
4、表中的每⼀⾏数据,相当于java中“对象”
四、常见的数据库管理系统
mysql、oracle、db2、sqlserver
DQL语⾔
DQL(Data Query Language) 数据查询语⾔
基础查询
⼀、语法
select 查询列表
from 表名;
⼆、特点
查询列表可以是字段、常量、表达式、函数,也可以是多个
查询结果是⼀个虚拟表
三、⽰例
1、查询单个字段
select 字段名 from 表名;
2、查询多个字段
select 字段名,字段名 from 表名;
3、查询所有字段
select * from 表名
select 常量值;
注意:字符型和⽇期型的常量值必须⽤单引号引起来,数值型不需要
5、查询函数
select 函数名(实参列表);
例如: select version();
6、查询表达式
select 100/1234;
7、起别名
1) as
2) 空格
例如:
select last_name as 姓, first_name as 名 from employees limit 5;
select last_name 姓, first_name 名 from employees limit 5;
# 取的别名拥有空格等特殊符号需要使⽤引号引起来即可, 三种引号皆可
select 100 as "out put", 102 as `out put`, 103 as 'out put';
8、去重
select distinct 字段名 from 表名;
9、+
作⽤:做加法运算
select 数值+数值; 直接运算
select 字符+数值;先试图将字符转换成数值,如果转换成功,则继续运算;否则转换成0,再做运算select null+值;结果都为null
example: select 1+2, '12'+ 2, '1'+ '2', null + 2; -> 3, 14, 3, null
10、【补充】concat函数
功能:拼接字符
select concat(字符1,字符2,字符3,...);
select concat(last_name, ' ', first_name) as '姓名' from employees;
11、【补充】ifnull函数
功能:判断某字段或表达式是否为null,如果为null 返回指定的值,否则返回原本的值
select ifnull(commission_pct,0) from employees; 字符串拼接上可能有⽤.
12、【补充】isnull函数
功能:判断某字段或表达式是否为null,如果是,则返回1,否则返回0
13、CONCAT_WS函数
功能:和concat⼀样,拼接字符,第⼀个参数是分隔符,⽤来拼接后⾯的每⼀个参数, 类似于python的字符串的join⽅法。条件查询
⼀、语法
select 查询列表
from 表名
where 筛选条件
⼆、筛选条件的分类
1、简单条件运算符
< = <> != >= <= <=>安全等于
2、逻辑运算符
&& and
|| or
! not
3、模糊查询
like:⼀般搭配通配符使⽤,可以判断字符型 或 数值型
通配符:%任意多个字符,_任意单个字符
例⼦: _需要进⾏转义
select
last_name
from
employees
where
sql软件长什么样last_name like '_\_%';
或者 使⽤escape来标明什么是转义字符
select
last_name
from
employees
where
last_name like '_$_%' escape '$';
between and
in
is null /is not null:⽤于判断null值
普通类型的数值 null值 可读性
is null × √ √
<=> √ √ ×
排序查询
⼀、语法
select 查询列表
from 表
where 筛选条件
order by 排序列表 【asc}desc】
⼆、特点
1、asc :升序,如果不写默认升序
desc:降序
2、排序列表 ⽀持 单个字段、多个字段、函数、表达式、别名
# 例⼦, 根据年薪进⾏排序
SELECT
*, (salary * (1 + ifnull( commission_pct, 0)) * 12) as year_salary FROM
employees
ORDER BY
year_salary DESC;
# 按照员⼯的姓名的长度进⾏排序
select
*, concat(first_name, ' ', last_name) as 'name'
from
employees
order by
length(name) desc;
3、order by的位置⼀般放在查询语句的最后(除limit语句之外)
常见函数
⼀、概述
好处:提⾼重⽤性和隐藏实现细节
调⽤:select 函数名(实参列表),和程序中的函数使⽤⽅法类似.
⼆、单⾏函数
concat:连接
substr:截取⼦串
# sql中的索引都是从1开始的
# 只有⼀个参数表⽰从指定索引往后截取剩下的.
select substr('中国⼈民站起来了', 4) as out_put;
# 两个参数时, 第⼀个参数是起始索引位置, 第⼆个参数是截取的长度select substr('中国⼈民站起来了', 2, 3) as out_put;
upper:变⼤写
lower:变⼩写
replace:替换 全部替换
select replace('aaaabbbbcccc', 'b', 'x'); --> aaaaxxxxcccc length:获取字节长度, 需要根据编码类型来看
select length('汉字123') --> 9
trim:去前后空格
# 去除前后指定的字符, 默认是去除空格
select trim('a' from 'aaaa中国aaa⼈aaaaa'); ---> 中国aaa⼈lpad:⽤指定字符左填充
select lpad('ab', 5, 'x'); --> abxxx
select rpad('abcde', 3, 'x'); --> abc 相当于被截取了
rpad:⽤指定字符右填充
instr:获取⼦串第⼀次出现的索引, 不存在则返回0, 索引位置从1开始2、数学函数
ceil:向上取整
round:四舍五⼊
mod:取模
# mod的算法: a % b = a - a / b * b 除是整除
select mod(-10, -3); --> -1
select mod(-10, 3); --> -1
floor:向下取整
truncate:截断
rand:获取随机数,返回0-1之间的⼩数
3、⽇期函数
now:返回当前⽇期+时间

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。