一、MYSQL的启动和停止
1.计算机--右击管理--服务
2.cmd通过管理员身份运行
net start 服务名 (启动)
net stop 服务名 (停止)
net stop MySQL80
net start MySQL80
二、MYSQL的登陆和退出
登陆
1.通过mysql自带的客户端(MySQL 8.0 Command Line Client)
只限于root用户
2.通过Windows自带的客户端(cmd管理员身份运行)
mysql【-h 主机名 -P 端口号】-u 用户名 -p 密码
mysql -h localhost -P 3306 -u root -p
退出
exit
crtl+c
三、MYSQL的常见命令
1.查看当前的数据库
show databases;
2.打开指定的库
use 库名;
3.查看当前库的所有表
show tables;
4.查看现在在哪一个库
select database();
5.查看表的结构
desc 表名
6.查看服务器的版本
登陆到mysql服务器:
select version();
没有登陆到mysql服务器
mysql --version 或 mysql --V
四、MySQL的语法规范
1.不区分大小写,但是建议关键字大写,表名、列名小写
2.每条命令最好用分号结尾
3.每条命令根据需要,我们可以进换行缩写
4. 注释
单行注释: #注释文字
--注释文字
多行注释:/*注释文字*/
五、SQL语言的分类
1.DQL:数据查询语言
select
2.DML:数据操作语言
insert,update,delete
3.DDL:数据定义语言
create,drop,alter
4.TCL:事务控制语言
commit,rollback
# DQL 语言
/*
select 要查询的东西
from 表名
类似于java中的System.out.println("");
*/
SELECT 100 % 98 AS 结果;
# 查询员工表中所有部门编号
SELECT DISTINCT `department_id` FROM employees;
# 员工名和姓连接成一个字段,并显示为姓名
错误写法
SELECT `last_name`+`first_name` AS 姓名 FROM employees;
错误原因:‘+’在数据库中是运算符,不能用它连接
正确写法:
SELECT CONCAT(`first_name`,`last_name`)
AS 姓名
FROM `employees`;
/*
‘+’
在java中:
1、运算符:两个都是数值型
2、拼接
在mysql中:
只有运算符的功能
concat 连接函数
*/
SELECT 100+90;
字符转成ASCII码值与数字相加
SELECT 100+'23';
SELECT 100+'dasdsa';
#显示出表 employees 的全部列,各个列之间用逗号连接,列头显示成 OUT_PUT
SELECT CONCAT(`first_name`,',',`last_name`,',',IFNULL(`commission_pct`,0))
AS out_put
FROM employees;
IFNULL(x,y) 如果x为空,把它当做y处理 如果不用IFNULL,上面代码commission_pct结果将均为空
SELECT * FROM employees;
# 条件查询:根据条件过滤原始表的数据,查询到想要的数据
/*
语法:
select 要查询的字段|表达式|常量值|函数
from 表
where 条件;
*/
/*
一、条件表达式
条件运算符:
>,< >=,<=,!=,<>
二、逻辑表达式
逻辑运算符
and(Java &&)
or(
||)
not(!)
*/
# 查询部门编号不等于90号的员工名和部门编号
SELECT last_name,department_id
FROM employees
WHERE department_id<>90;
# 查询部门编号不是在90-100之间,或者工资高于15000的员工信息
SELECT * FROM employees
WHERE
department_id<90 OR department_id>100
OR salary>15000;
SELECT * FROM employees
WHERE NOT(department_id>=90 AND department_id <=100) OR salary>15000;
# 模糊查询
/*
1、like
特点:一般和通配符搭配使用
通配符: % 代表任意多个字符,包含0个字符
_代表一个字符
2、between and
注意点:可以提高语句简洁度
包含临界值
临界值不能颠倒的
3、in
注意:in列表里的参数类型必须一致或兼容
4、is null,is not null
补充:安全等于 <=> ,可读性差
*/
#案例一:查询员工名中包含字符a的员工信息
SELECT * FROM employees WHERE last_name LIKE '%a%';
#案例二:查询员工名中第三个字符为n的员工名,第五个字符为l的员工名
SELECT last_name FROM employees WHERE last_name LIKE '__n_l%';
#案例三: 查询员工名中第二个字符为_的员工名
SELECT last_name FROM employees WHERE last_name LIKE '_\_%';
#或者自己指定转义符 ESCAPE
SELECT last_name FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$';
# 查询员工的工种编号是IT_PROG、AD_VP的员工名和工种编号
SELECT `last_name`,`job_id` FROM `employees`
WHERE `job_id` IN('IT_PROG','AD_VP');
# 查询没有奖金的员工名和奖金率
SELECT `last_name`,`commission_pct` FROM `employees` WHERE `commission_pct`<=>NULL;
/*
排序查询
语法:
select 要查的东西
from 表
where 条件
order by asc|desc
*/
升序ASC,降序DESC,没有指定排序默认升序
# 查询员工信息要求工资从高到低
SELECT * FROM `employees` ORDER BY salary DESC;
# 按年薪的高低显示员工的姓名和工资
SELECT last_name,salary*12*(1+IFNULL(`commission_pct`,0)) 年薪
FROM `employees`
ORDER BY 年薪 DESC;
# 按照员工的入职时间来显示员工名
SELECT last_name,`hiredate` FROM `employees`
ORDER BY `hiredate` DESC;
# 查询员工信息,要求按工资升序,再按员工编号降序
SELECT * FROM `employees` ORDER BY salary ASC,employee_id DESC;
/*
常见函数:
概念: 类似于java中的方法,将一组逻辑语句封装在方法体中,对外暴露方法名
好处:1、隐藏了实现细节
2、提高了代码的重用性
一、单行函数:
1、字符函数
concat 拼接
substr 截取字串
upper:转换成大写
lower:转成小写
instr:返回字串第一次出现的索引位置
trim:去掉前后指定的空格和字符
ltrim:去掉左边
rtrim:去掉右边
lpad:左填充
rpad:右填充
replace:替换
length:长度
*/
#截取从指定索引到后面的字符
SELECT SUBSTR('周杰伦爱上了昆凌',7) out_put;
#截取从指定索引出指定长度字符
SELECT SUBSTR('周杰伦爱上了昆凌',1,3) out_put;
SELECT INSTR('昆凌周杰伦爱上了昆凌','昆凌') out_put;
SELECT TRIM(' 周杰伦 ') out_put;
SELECT TRIM('a' FROM 'aaa周杰伦aaaa');
SELECT REPLACE('张无忌爱上了周芷若','周芷若','赵敏');
SELECT LENGTH('John');
SELECT LENGTH('周杰伦');
4
9