MySQL学习笔记
MySQL产品的介绍和安装
MySQL服务的启动和停止
方式一:计算机--右击管理--服务
方式二:通过管理员身份运行
net start 服务名
net stop 服务名
MySQL服务的登陆和退出
方式一:通过MySQL自带的客户端
只限于root用户
方式二:通过windows自带的客户端即命令行
登陆 :mysql -h 主机名 -P端口号 - u用户名(连接远程服务器)
mysql -u用户名(本机)
MySQL的常见命令
1.查看当前所有的数据库
show databases;
2.打开指定的库
use 库名;
3.查看当前库的所有表
show tables;
4.查看其他库的所有表
show tables from 库名;
5.创建表
create table 表名(
列名 列类型,
列名 列类型
);
6.查看表结构
desc 表名;
7.查看服务器版本
mysql服务器中:select version();
命令行中: mysql -version
MySQL的语法规范
1. 不区分大小写,但建议关键字大写,表名列名小写
2.每条命令用分号结尾
3.每条命令可根据自己的需要进行缩进和换行
4.注释
单行注释:#注释文字
多行注释:/*注释文字*/
5.
MySQL基础查询
1.起别名
1.便于理解
2.当查询的字段有重名的情况,用别名可以区分开来
SELECT 100%98 AS 结果;
若别名里有特殊字符,需要将别名用双引号
SELECT salary AS “out put” FROM xxxxx;
2. 去重distinct
SELECT DISTINCT salary FROM xxxx;
3.+号的作用
与java中不一样,mysql中只有运算符的作用,若两边有一边为字符型,则试图将字符型转换为
数值型,若转换成功,则继续做加法运算,若失败则将其变成0
特殊 :SELECT null +10;只要两边有一个null,结果一定都是null。
4.CONACAT()函数拼接字符串
SELECT CONCAT(a,b,c) AS 结果 FROM xxxxx;
5.IFNULL()函数改变数据格式
SELECT IFNULL(A,0) AS xxx FROM xxxx ;
如果A列中有null值,就将查询结果中的null替换成0;
MySQl条件查询
语法:
select 查询列表
from 表名
where 筛选条件
语句执行顺序:
1.from语句,找到一个大表
2.where语句,找到符合条件的每一行构成一个小表
3.select语句,查询小表中的选定列
筛选的特点
1.按关系表达式筛选
关系运算符 : > < >= <= =
2.按逻辑表达式筛选
逻辑运算符: and or not
3.模糊查询
-
like:一般和通配符搭配使用,对字符型数据进行部分匹配查询
常见的通配符:
_ 任意单个字符
%任意多个字符
案例1:查询姓名中含a的员工信息
select *
from employees
where last_name like ‘%a%’;
案例2:查询姓名第二个字符为’_'的员工信息
select *
from employees
where last_name like ‘--%’; (特殊字符需用 ’ \ ’ 转义) -
in :查询某字段的值是否属于指定的列表之内
in (常量值,常量值,常量值,…);
in / not in ;
案例1: 查询部门编号不是30/50/90的员工名,部门编号
select last_name , department_id
from employees
where department_id NOT IN (30,50,90); -
between and : 判断某个字段是否介于xx之间
案例:
select department_id ,last_name
from employees
where department_id BETWEEN 30 AND 90; -
is null / is not null:查询值为null的字段,因为null不能用 = 号判断
案例1:查询没有奖金的员工信息
select *
from employees
where commission_pct IS NULL
拓展:
= 只能判断普通的内容
IS 只能判断NULL值
<=> 都能判断,但是最好别用
MySQl排序查询
语法:
select xx
from xx
where xx( 可没有)
order xx;
执行顺序:
1.from
2.where
3.select
4.order
案例1:将员工编号 >120的员工信息进行工资的升序
select *
from employees
where employees_id > 120
order by salary ;
案例2:将员工编号 >120的员工信息进行工资的 降序
select *
from employees
where employees_id > 120
order by salary DESC;
常见函数
1.自定义函数(MySQL高级)
2.调用函数
字符函数
1.CONCAT拼接函数
2.LENGTH获取字节长度
3. CHAR_LENGTH获取字符个数
4. SUBSTR 截取子串
/* 注意:起始索引从1开始!!!
SUBSTR(str,起始索引,截取的字符串长度);
SUBSTR(str,起始索引)表示到结束;
*/
select SUBSTR(‘张三丰爱上了郭襄’,1,3); 结果:张三丰;
select SUBSTR(‘张三丰爱上了郭襄’,7); 结果 : 郭襄;
5:INSTR获取字符第一次出现的索引
INSTR (‘母字符串’,‘子字符或子字符串’)
6.TRIM去除前后指定的字符,默认是去空格
SELECT TRIM (’ 爱得起打 ');
SELECT TRIM( ‘x’ FROM ‘xxxxxxadqaxxxxx’ )去除x;
7.LPAD/RPAD 左填充/右填充
SELECT LPAD(‘xx’ , 指定的字符长度 , ‘指定填充的字符’);
SELECT LPAD('木婉清 ’ , 10 , ’ a ’ ); 结果 :aaaaaaa木婉清;
8. STRCMP 比较两个字符大小;
SELECT STRCMP(‘aaaa’,‘abbc’) ; 结果 :-1;
9.LEFT / RIGHT从左从右截取子串
SELECT LEFT(str, len );
数字函数
1.abs
2.ceil : 向上取整,返回 >=该参数的最小整数
3.floor :向下取整
4.round :四舍五入
round (x);
round(x,保留小数点后几位);
5.truncate: 截断
truncate(x,保留小数点后几位);
6.MOD 取余
日期函数
1.NOW :获取当前时间
2.curdate :获取当前日期
3.curtime :获取当前时间
4.datediff :获取两个时间的差值
5.date_format: 类似与java的simpledateformat
案例:select date_format(‘1998-7-16’ , '%Y年 %m月%d日);
结果:1998年7月16日;
案例:select date_format( hiredata , '%Y年 %m月%d日);
6.str_to_date按指定格式解析字符串为日期类型
STR_TO_DATE(‘3/15 1998’ , ’ %m/%d %Y ');
流程控制函数
1.IF函数
SELECT IF(100>9, ‘好’ ,‘坏’);
需求:如果有奖金,则显示最终奖金,如果没有,则显示0
select IF(commission_pct IS NULL , 0 , salary 12commission_pct ) as 奖金 ;
2.CASE函数
用法1:类似与Java中的switch case ;
CASE 表达式
WHEN 值1 THEN 结果1
WHEN 值2 THEN 结果2
WHEN 值3 THEN 结果3
ELSE 结果4
END
用法2:类似与java多重if语句,实现区间判断
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
。。。
ELSE 结果N
END
分组函数
分组函数常常用于实现将一组数据进行统计计算,最终得到一个值