MySQL服务的配置与使用、函数
MySQL服务的配置与使用
MySQL服务的启动和停止
方法1:计算机–管理–服务
方法2:通过管理员身份运行命令行:net start/stop MySQL57
配置环境变量
如果提示不是命令,配置环境变量
找到bin目录的位置C:\Program Files\MySQL\MySQL Server 5.7\bin,计算机–属性–高级系统设置–环境变量–放在PATH的第一个
MySQL服务的登入与登出
登入
方法1:mysql自带的客户端
方法2:命令行:mysql -h 主机名 -P 端口号 -u 用户名 -p
登出
方法1:exit
方法2:ctrl+c
MySQL的语法规范
- 不区分大小写,但建议关键字大写,表名列名小写
- 每条命令分号结尾
- 每条命令根据长度换行
- 注释
- 单行注释
- #注释文字
- – 注释文字(–后面有空格)
- 多行注释/* */
- 单行注释
MySQL的常用指令
显示所有数据库
show databases; 显示所有数据库(分号结尾)
进入数据库
use 数据库名; 进入数据库
显示当前数据库中所有表
show tables;显示当前数据库中所有表
显示指定数据库的表
show tables from 数据库名;显示指定数据库的表,并没有切换到这个数据库
显示当前在哪个数据库
select database();显示当前在哪个数据库
创建表
create table 表名(
属性名 数据类型);创建表
查看表结构
desc 表名; 查看表结构
向表中插入值
insert into 表名(属性名,属性名) values(对应数据,对应数据);插入值
查看数据库版本
在mysql中
select version();
在命令行中1
mysql --version
在命令行中2
mysql -V
函数
SELECT 函数名(实参列表) from 表名;
单行函数
单行函数,会有一个返回值
字符函数
LENGTH
LENGTH(str)参数的字节长度
SELECT LENGTH('aadaw到哦啊');
汉字占的字节与使用的字符集有关
CONCAT
CONCAT(str1,str2,…)拼接字符串
SELECT CONCAT(first_name,' ',last_name) as 'name' FROM actor;
如果拼接数据有NULL,拼接后为NULL
UPPER/LOWER
UPPER(str)/LOWER(str) 改变字符大小写
SELECT UPPER('aRRd');
SELECT CONCAT(UPPER(description),LOWER(title)) FROM film;
SUBSTR
SUBSTR(str,开头位置,结尾位置)截取字符,只写开头或写开头结尾
SELECT SUBSTR('thrilling',3);
SELECT SUBSTR('thrilling',3,6);
SELECT CONCAT(UPPER(SUBSTR(last_name,1,1)),LOWER(SUBSTR(last_name,2)),'_',LOWER(first_name))FROM actor;
INSTR
INSTR(str,substr)返回子字符串在字符串中第一次出现的位置,如果找不到就返回0
SELECT INSTR('rimworld','rim') ;
TRIM
TRIM([remstr FROM] str)去除前后的子字符串
SELECT TRIM('aa' FROM 'aaaaa12aa3aaaa');
LPAD
LPAD(str,len,padstr)用指定字符实现左填充指定长度
SELECT LPAD('rimworld',20,'*')
RPAD
RPAD(str,len,padstr)用指定字符实现右填充指定长度
SELECT RPAD('rimworld',20,'*')
REPLACE
REPLACE(str,from_str,to_str)使用字符to_str替换字符串中的字符from_str
SELECT REPLACE('aaaaaaaaaaaaaaa','aa','bb')
数学函数
ROUND
ROUND(X,y)四舍五入,保留y位,不写y默认保留整数
SELECT ROUND(1.567,2);
CEIL
CEIL(X)向上取整,返回>=该整数的最小整数
SELECT CEIL(2.89);
FLOOR
FLOOR(X)向下取整,返回<=该整数的最小整数
SELECT FLOOR(-2.89);
TRUNCATE
TRUNCATE(X,D)截断,小数点后保留d位
SELECT TRUNCATE(2.111,1);
MOD
MOD(N,M)取余,表示N%M,N为正结果为正,N为负结果为负
SELECT MOD(10,3);
SELECT MOD(-10,3);
日期函数
NOW
NOW()返回系统日期
SELECT NOW();
CURDATE
CURDATE()返回当前系统日期,不包含时间
SELECT CURDATE();
CURTIME
CURTIME()返回当前系统时间,不包含日期
SELECT CURTIME();
获取指定部分,年月日时分秒
可以获取指定部分,年月日时分秒
YEAR(date)获得年
MONTH(date)获得月
MONTHNAME(date)获得月名
SELECT MONTHNAME(last_update) FROM payment;
STR_TO_DATE
STR_TO_DATE(str,format)将字符通过指定格式转换为日期
SELECT STR_TO_DATE('2001-3-8','%Y-%c-%d');
DATE_FORMAT
DATE_FORMAT(date,format)将日期转换为字符
SELECT DATE_FORMAT(NOW(),'%y!%m!%d');
SELECT DATE_FORMAT(payment_date,'%y!%m!%d') FROM payment;
其他函数
VERSION
VERSION()版本
SELECT VERSION();
DATABASE
DATABASE()数据库
SELECT DATABASE();
USER
USER()用户
SELECT USER();
流程控制函数
IF ELSE
IF ELSE
IF(expr1,expr2,expr3) 如果1是true则返回2,false则返回3
SELECT IF(10>5,'da','xiao');类似三元运算符
SELECT title,IF(length>90,'kun','keyi')FROM film;
case
用法1 类似switch case
用法1 类似switch case
CASE 要判断的字段和表达式
when 常量1 then 要显示的语句1或值1;
when 常量2 then 要显示的语句2或值2;
…
ELSE 要显示的值n或语句n;
END
如果是显示值,后面不用加分号
案例 在payment库,查询title
rental_rate=0.99 显示replacement_cost为1.2倍
rental_rate=2.99 显示replacement_cost为1.4倍
rental_rate=其他 显示replacement_cost为1.6倍
SELECT title,
CASE rental_rate
WHEN 0.99 THEN replacement_cost * 1.2
WHEN 2.99 THEN replacement_cost * 1.4
ELSE replacement_cost * 1.6
END AS new_cost
FROM film
用法2 类似多重if
用法2 类似多重if
case
WHEN 条件1 then 要显示的值1或语句1;
WHEN 条件2 then 要显示的值2或语句2;
ELSE 要显示的值n或语句n;
END
区别是case 后面不加东西
案例:
SELECT address,
CASE
WHEN city_id<=100 THEN 'A'
WHEN city_id>=200 THEN 'B'
ELSE 'C'
END AS new_id
FROM address
分组函数
分组函数:用作统计使用,又称为聚合函数或统计函数。
可以和distinct搭配去重
SELECT SUM(DISTINCT length) 平均值 FROM film;
SELECT COUNT(DISTINCT length) FROM film;
和分组函数查询的字段一般要求是group by后的字段
SUM
SUM(expr)求和
SELECT SUM(length)/60 FROM film;
AVG
AVG([DISTINCT] expr)平均值
SELECT AVG(length) FROM film;
MAX
MAX(expr)最大值
SELECT MAX(length) FROM film;
MIN
MIN(expr)最小值
SELECT MIN(length) FROM film;
COUNT
COUNT(expr)计算个数
SELECT COUNT(length) FROM film;
SELECT COUNT(*) FROM film;*可以计算行数
SELECT count(1) FROM film;任意字符可以计算行数
一般使用count(*)
参数支持类型
参数支持类型:
sum avg 数值型
max min count 可以处理任何类型
SELECT MAX(last_name),MIN(last_name) FROM actor;
全都忽略NULL值