一、如何启动MySQL
Win + R 调用出命令提示符,想要启动mySQL,却显示拒绝服务
解决方法
方法1:win + R + services.msc 调出服务面板 - 找到MYSQL - 右键属性 - 启动即可
缺点:每次使用都要手动操作
方法2:以管理员身份打开命令窗口,再次输入net start mysql
二、MySQL基本操作
登录数据库账号
mysql -h 主机名 -P 端口号 -u 用户名 -p密码
【建议使用】mysql -h localhost -P 3306 -u root -p
1.对数据库 database 的操作
①查看数据库
show databases; //显示当前的数据库
注意事项:
✅1.查看命令的show和databases中间有空格!
✅2.是databases不是database,有s哦!
✅3.使用英文符号的分号结尾,客户端任意一个sql语句都是用的这个结尾!
✅4.mysql中允许分行,只要没分号结束就可以继续写
②.创建数据库
create database [数据库名] //创建数据库命令
③备份数据库
mysqldump -u 用户 -p 密码 数据库 表1 表2 表n > d:\\文件名.sql
④对数据库的增删改操作
#修改表的操作练习 -- 员工表emp的上增加一个image列,varchar类型(要求在resume后面)。 ALTER TABLE emp ADD image VARCHAR(32) NOT NULL DEFAULT '' AFTER RESUME DESC employee -- 显示表结构,可以查看表的所有列 -- 修改job列,使其长度为60。 ALTER TABLE emp MODIFY job VARCHAR(60) NOT NULL DEFAULT '' -- 删除sex列。 ALTER TABLE emp DROP sex -- 表名改为employee。 RENAME TABLE emp TO employee -- 修改表的字符集为utf8 ALTER TABLE employee CHARACTER SET utf8 -- 列名name修改为user_name ALTER TABLE employee CHANGE `name` `user_name` VARCHAR(64) NOT NULL DEFAULT '' DESC employee
2.CURD 数据的增删改查
①增加 INSERT
!!! 字符和日期类型应该包括在单引号中
②删除 DELETE
③修改 UPDATE
④查找 SELECT
like 操作符中:
- 百分号(%):在 LIKE 中,百分号代表零个、一个或多个字符的通配符。当你在模式中使用 % 时,它可以匹配任意长度的字符串。
例如,LIKE 'J%' 可以匹配以 "J" 开头的任何字符串,比如 "John"、"Jane" 等。- 下划线(_):下划线在 LIKE 中表示一个单个字符的通配符。当你在模式中使用下划线时,它可以匹配任何单个字符的位置。
例如,LIKE 'J___' 可以匹配以 "J" 开头且长度为4的字符串,比如 "John"。
1)ORDER BY语句
2)分页查找 LIMIT
-- 第1页
SELECT * FROM emp
ORDER BY empno
LIMIT 0, 3;
-- 第2页
SELECT * FROM emp
ORDER BY empno
LIMIT 3, 3;
-- 第3页
SELECT * FROM emp
ORDER BY empno
LIMIT 6, 3;
3)分组函数 GROUP BY 和 分组子句 HAVING
1.Group by 与 having的区别
Group by对原始数据进行分组
Having 对存储的结果进行过滤
2.如果select语句中同时有group by , having , limit , order by , 则其执行顺序是group by , having , order by , limit
4)多表查询 笛卡尔积
自连接:
1. 把同一张表当做两张表使用
2. 需要给表取别名 表名 表别名
3. 列名不明确,可以指定列的别名 列名 as 列的别名
SELECT worker.ename AS '职员名' , boss.ename AS '上级名' FROM emp worker, emp boss WHERE worker.mgr = boss.empno; SELECT * FROM emp;
any 和 all
all
表示所有
any
表示任意一个
-- all的使用 -- 找到30号部门所有员工的薪水 -- 从emp表中查询 薪水比所有的30号部门薪水都大的薪水 SELECT ename, sal, deptno FROM emp WHERE sal > ALL( SELECT sal FROM emp WHERE deptno = 30 ) -- any的使用 -- 显示工资比部门30的其中一个员工工资高的员工姓名、工资和部门号 SELECT ename, sal, deptno FROM emp WHERE sal > ANY(SELECT sal FROM emp WHERE deptno = 30)
返回多列
SELECT * FROM emp WHERE (deptno , job) = ( SELECT deptno , job FROM emp WHERE ename = 'ALLEN' ) AND ename != 'ALLEN'
表复制
合并查询 union 和 union all
union 合并多个select语句 会去重 union all 合并多个select语句 不会去重
-- union all 就是将两个查询结果合并,不会去重 SELECT ename,sal,job FROM emp WHERE sal>2500 UNION ALL SELECT ename,sal,job FROM emp WHERE job='MANAGER' -- union 就是将两个查询结果合并,会去重 SELECT ename,sal,job FROM emp WHERE sal>2500 UNION SELECT ename,sal,job FROM emp WHERE job='MANAGER'