目录:
一、总述:
1、定义:
DB:数据库
DBMS:数据库操作系统
事实上我们常用的操作工具是DBMS,而不是DB,不过很多人会口头上混淆。
SQL:结构化通用语言,用于和数据库通信
2、数据库的存储方式:
数据单体:数据—》行【一行为一个数据,每列相当于该数据不同的属性】
组成单位:字段——》列——》表——》库
3、mysql优点:
1.成本低,开源,免费
2.速度快
3.体积小,方便安装和使用
4、DBMS分类:
1.基于共享文件系统【微软】
2.基于客户机(c/s架构)【客户端和服务端】
5、可以通过更改主目录下的配置文件更改配置,文件名为‘my’或‘my.ini’
6、打开或关闭sql服务:
管理员权限下的命令行中输入:net start/stop servers(服务的名字,这个名字有可能是默认的也可能是安装者自命名的)
或者在计算机管理中手动关闭服务
7、登录方式:
1.管理员cmd下输入:
mysql ( -h localhost -P 3306) -u root -p password
注:连接本机时,括号部分可以不要。-p 和密码直接的空格可要可不要,一般不要更好,有空格可能在某些情况下(比如换行)报错。
8、语法规范:
1.不区分大写小写,但是建议关键字大写,表名列名小写
2.每条命令‘;’结尾
3.根据长度可以缩进或换行,建议关键字换行
4.注释:
单行注释:‘#’或者'-- '
注意后一个是横杠横杆空格
多行注释:/* 内容 */
9、具体的语言分为:DQL,DML,DDL,TCL等,了解即可。
10、通配符和转义:
% 任意多个字符,包括无字符
_ 下划线,单个任意字符
\ 转义
‘_$%a%’ escape '$' 将$转义成单纯的符号
11、需要注意的是,mysql的索引是从1开始的
二、查询
1、基础查询
- 1、总格式:
select something from something
特点:
1.查询的可以是表中字段、函数、表达式(可计算的会直接查询结果)等
2.查询的结果是一个虚拟的表格,并没有存储在数据库中,一旦运行另一段语句,表格消失。
3.查询可以一次查询一个,多个(逗号隔开),所有(*)。
4.查询也可以作用于查询数据库内有多少个表
- 2、起别名:
select a as b 或者 select a b
把查询a并将结果放在命名为b下
- 3、查询表格结构:
desc A
查询A表结构
- 4、去重:
select distinct a from B as b
从B表中查询a,并命名为b。且from和as的位置没有啥绝对关系,看心情放。
- 5、“+”号的使用:
select 100+90 查询190
select '110'+90 查询200
select 'john'+90 查询90
select null+90 查询null
有数字的项优先查询计算结果,有字符串的话若能转换成数字,则转换成数字计算,若不能,则看成是0计算。有null的项,全部看成null。
- 6、连接concat:
select concat(a,b,c) as d
查询a,b,c,并将结果合并为abc栏,重命名为d栏。
- 7、去null:
ifnull(A,b)
查询A,将结果中出现的null转换成b
- 8、isnull(A)判断A中是否有null,true为1,false为0
2、条件查询
总结构
select A from B where C
从B中筛选符合条件C的A值
1.按条件表达式查询:
< 小于
> 大于
!= 不等于
<> 不等于(推荐使用)
>= 小于等于
<= 大于等于
<=> 安全等于(既可以比较数值,也可以比较字符串,null而不会报错,不过判断null一般还是用isnull,可读性好)
2.按逻辑表达式筛选
and 和
&& 和
or 或
|| 或
not 非
! 非
3.模糊查询
like 如同
between and 于‘’和‘’之间(包括端点,且左小右大不可逆)
in 包含于
isnull 为空
is not null 不为空
3、排序查询
- 1、总述:
基本结构
select A from B where C order by D [asc/desc];
asc:升序(默认)
desc:降序
多字段排序也是支持的,但是要用‘,’隔开。
select A from B where C order by D [asc/desc],F [asc/desc];
- 2、order by 排序列表
1.asc/desc 升序、降序
2.order by 支持多字段,表达式等查询
3.一般放在查询语句最后面,limit字句除外
4常见函数的学习
基本结构
select 函数名(实参) 【from 表】
分类:单行函数和分组函数(多用于统计)
1、单行函数
- 1、字符函数
1.length(str) 判断长度
2.concat() 多列数据连接成一列
3.upper and lower 大写和小写
4.substr and substring 截取(两者无差别,简写而已)
select substr('abcdef',4)as out_put
results:
out_put
def
select substr('abcdef',1,3)as out_put
results:
out_put
abc
索引从1开始
5.instr 首次出现的位置
6.trim 去空格或指定重复内容
select trim (' abcde ') as out_put;
results:
out_put
abcde
select trim('a' from 'aaaabbbbb') as out_put;
results:
out_put
bbbbb
7.lpad or rpad 用指定字符左填充或者右填充,过短的话会从右截断
select lpad ('ggsimida',2,'*') as out_put;
results:
out_put
gg
8.replace 替换
select replace ('i am loser', 'loser' ,'winner') as out_put;
results:
out_put
i am winner
-
2、数学函数
- round 四舍五入,有负号的话绝对值取整加负
- cell 向上取整
- floor 向下取整
- truncate 截断,留下小数点后固定位数
- mod 取余,有负数出现则结果必为负
实际计算公式为:mod(a,b)= a-a/b*b (地板除)
-
3、日期函数
1.now 返回当前日期和时间
2.curdate 返回当前日期
3.curtime 返回当前时间
4.year 获取年
select year(now())
5.str_to_date 将日期格式的字符转换成指定格式的日期
select str_to_date ('9-13-2011','%m-%d-%Y') as out_put
6.date_format 将日期转换成字符
select date_format('2018/6/6','%y年%m月%d日') as out_put