突然想起来MarkDownPad里面还有点MYSQL的笔记,整合下发出来。
MySQL服务的启动和停止
方式一:计算机--右击管理--服务
方式二:通过管理员身份运行cmd
net start mysql57
net stop mysql57
mysql57替换成自己的就行
MySQL服务的登录和退出
方式一:通过mysql自带的客户端
只限于root用户
方式二:通过windows自带的客户端
登录:
mysql 【-h主机名 -P端口号】 -u用户名 -p密码
exit或ctrl+c
MySQL的常见命令
1.查看当前所有的数据库
show database
2.打开制定的库
use 库名
3.查看当前库的所有表
show tables;
4.查看其他库的所有表
show tables from 库名;
5.创建表
create table 表名(
列名 列类型,
列名 列类型,
...
);
6.查看表结构
desc 表名;
7.查看服务器的版本
方式一:登录到mysql服务器
select version();
方式二:没有登录到mysql服务器
mysql --version
或
mysql --V
MySQL的语法规范
1.不区分大小写,但建议关键字大写,表名,列名小写
2.每条命令最好用分号结尾
3.每条命令可以根据需要,可以进行缩进或换行
4.注释
单行注释:#注释文字
单行注释:-- 注释文字
多行注释:/*注释文字*/
3.查询所有字段
select * from 表名
4.查询常量
select 常量值
注意:字符型和日期型的常量值必须用单引号引起来,数值型不需要
5.查询函数
select 函数名(实参列表)
6.查询表达式
select 100/1234
7.起别名
as
空格
8.去重
select distinct 字段名 from 表名
9.+
作用:做加法运算
select 数值+数值:直接运算
select 字符+数值:先试图将字符转换为数值,如果转换成功,则继续运算否则转换成0,再做运算
select null+值:结果都为null
10.【补充】concat函数
功能:拼接字符
select concat(字符1,字符2,字符3...);
11.【补充】ifnull函数
功能:判断某字段是否为null,如果为null 返回指定的值,否则返回原本的值
select ifnull(commission_pct,0)from exployees;
12.【补充】isnull函数
功能:判断某字段或表达式是否为null,如果是 返回1;否则返回0;
一、语法
select 查询列表
from 表明
where 筛选条件
二、筛选条件的分类
1.简单条件运算符
> < = <> != >= <= <=> 安全等于
2.逻辑运算符
&& and
|| or
! not
3.模糊查询
like:一般搭配通配符使用,可以判断字符型或数值型
通配符:%任意多个字符,_任意多个字符
BETWEEN AND
IN
IS NULL/IS NOT NULL:用于判断null值
is null PK <=>
普通类型的数值 null值 可读性
is null × √ √
<=> √ √ ×
排序查询
一.语法
select 查询列表
from 表
where 筛选条件
order by 排序列表【asc升序||desc降序】
二.特点
1.排序列表支持单个字段,多个字段,函数,表达式,别名
2.order by的位置一般放在查询语句的最后(除limit语句之外)
排序函数
一.概述
功能:类似java中的方法
好处:提高重用性和隐藏实现细节
调用:select 函数名(实参列表)
二.单行函数
1.字符函数
concat:连接
substr:截取子串
upper :变大写
lower :变小写
replace:替换
length:获取字节长度
trim :去除前后空格
lpad :左填充
rpad :右填充
instr :获取子串第一次出现的索引
2.数学函数
ceil :向上取整
round :四舍五入
mod :取模
floor :向下取整
truncate:截断
rand :获取随机数,返回0~1之间的小数
3.日期函数
now :返回当前日期+时间
year :返回年
month :返回月
day :返回日
date_format:将日期转换成字符
curdate:返回当前日期
str_to_date:将字符转换成日期
curtime:返回当前时间
hour :小时
minute :分钟
second :秒
datediff:返回两个日期相差的天数
monthname:以英文方式返回月
4.其他函数
version:当前数据库服务器版本
database:当前打开的数据库
user :当前用户
password('字符'):返回该字符的密码形式
md5('字符') :返回该字符的md5加密形式
5.流程控制函数
if(条件表达式,表达式1,表达式2):如果条件表达式1成立,返回表达式1,否则返回表达式2
case情况 1
case 变量或表达式字段
when 常量1 then 值1
when 常量2 then 值2
...
else 值n
end
case情况 2
case
when 条件1 then 值1
when 条件2 then 值2
...
else 值n
end
三:分组函数
1.分类
max 最大值
min 最小值
sum 和
avg 平均值
count 计算个数
2.特点
语法
selet max(字段) from 表名;
支持的类型
sum 和 avg一般用于处理数值型
max,min,avg可以处理任何数据类型
以上的分组都忽略null
都可以搭配distinct使用,实现去重的功能
select sum(distinct 字段) from 表
count函数
count(字段):统计该字段非空值的个数
count(*) :统计结果集的行数
案例:查询每个部门的员工个数
1.xx 10
2.dd 20
3.mm 20
4.aa 40
5.hh 40
count(1):统计结果集的行数
效率上:
MyISAM存储引擎,count(*)最高
InnoDB存储引擎,count(*)和count(1)效率>count(字段)
和分组函数一同查询的字段,要求是group by 后出现的字段
分组查询
一、语法
select 分组函数,分组后的字段
from 表
【where 筛选条件】
group by 分组的字段
【having 分组后的筛选】
【order by排序列表】
二、特点
使用关键字 筛选的表 位置
分组前筛选 where 原始表 group by的前面
分组后筛选 having 分组后的结果 group by的后面
连接查询
一、含义
当查询中涉及到了多个表的字段,需要使用多表连接
select 字段1,字段2
from 表1,表2,...;
笛卡尔乘积:当查询多个表时,没有添加有效的连接条件,导致多个表所有行实现完全连接
如何解决:添加有效的连接条件
二、分类
按年代分类:
sql92:
等值
非等值
自连接
也支持一部分外连接(用于oracle,sqlserver,mysql不支持)
sql98:
内连接
等值
非等值
自连接
外连接
左外
右外
全外(mysql不支持)
交叉连接
待更新…