MySQL基本命令
目录:
Windows启动/停止
CMD:管理员身份运行
net stop <mysql名称>
#停止服务
net stop mysql57
#启动服务
net start mysql57
基本命令
登录:
mysql -hlocalhost -P3306 -uroot -p123456
参数说明:
#必填项
-u:user(用户名)
-p:password(密码),可只写"-p",回车后写密码(密文)
#可选项
-h:host(指定主机),默认localhost即127.0.0.1
-P:Port(端口),默认3306
查看:
#查询数据库
SHOW DATABASES;
#选中数据库
USE <数据库名>;
#查询表
SHOW TABLES;
#查询表结构
DESCRIBE <表名>;
DESC <表名>;
SHOW COLUMNS FROM <表名>;
查询命令
#需要先选中数据库;
USE atguigudb;
#查询jobs表中所有信息;
SELECT * FROM jobs;
#查询jobs表中job_id信息;
SELECT job_id FROM jobs;
条件查询
#查询函数:WHERE
#范围函数:
排序
#排序函数:ORDER BY
SELECT * FROM <表名> ORDER BY <排序字段1> ASC,<排序字段2> DESC;
#默认按添加顺序显示;
# 使用 ORDER BY 对查询到的数据进行排序操作。
# 升序:ASC (ascend),默认此项。
# 降序:DESC (descend)
#按照 <salary> 字段从高到低的顺序显示;
SELECT * FROM employees ORDER BY salary DESC;
#使用列的别名,进行排序————列的别名只能在 ORDER BY 中使用,不能在WHERE中使用。
SELECT employee_id,salary,salary * 12 annual_sal
FROM employees
ORDER BY annual_sal;
#强调格式:WHERE 需要声明在FROM后,ORDER BY之前。
SELECT employee_id,salary
FROM employees
WHERE department_id IN (50,60,70)
ORDER BY department_id DESC;
#二级排序、多级排序————显示员工信息,按照department_id的降序排列,salary的升序排列
SELECT employee_id,salary,department_id
FROM employees
ORDER BY department_id DESC,salary ASC;
分页
#分页函数:limit
SELECT * FROM <表明> LIMIT <偏移量>,<条数>;
#需求:每页显示pageSize条记录,此时显示第pageNo页:
#公式:LIMIT (pageNo-1) * pageSize,pageSize;
#limit 0,10; <==> limit 10;
#MySQL8.0新特性:LIMIT <条数> OFFSET <偏移量>;
SELECT * FROM employees WHERE salary > 6000 ORDER BY salary DESC limit 0,10;
多表查询
#连接条件:WHERE <表名1>.<字段> = <表名2>.<字段>
SELECT employee_id,department_name
FROM employees,departments
WHERE employees.`department_id` = departments.department_id;
#建议:从sql优化的角度,建议多表查询时,每个字段前都指明其所在的表。
#可以给表起别名,在SELECT和WHERE中使用表的别名。
#如果给表起了别名,一旦在SELECT或WHERE中使用表名的话,则必须使用表的别名,而不能再使用表的原名。
#如下的操作是错误的:
内连接
查询过滤条件中,结果都匹配的情况。
外连接
查询过滤条件中,结果不会都匹配的情况,不匹配的值为NULL。
左外连接:左边条件返回不匹配的结果。
右外连接:右边条件返回不匹配的结果。
满外连接:左外连接 + 右外连接。
#SQL92语法外连接:使用 (+)
#MySQl不支持SQL92语法。
SELECT employee_id,department_name
FROM employees,departments
WHERE employees.`department_id` = departments.department_id(+); #需要使用左外连接。
#SQL99语法内连接:<表1> JOIN INNER <表2> ON <表1>.<字段> = <表2>.<字段>
#内连接函数:INNER(默认此参数)
SELECT last_name,department_name
FROM employees e INNER JOIN departments d
ON e.`department_id` = d.department_id;
#SQL99语法外连接:LEFT OUTER
#外连接函数:OUTER;LEFT OUTER;RIGHT OUTER;
#满外连接:FULL OUTER;(MySQL不支持)
SELECT last_name,department_name
FROM employees e LEFT OUTER JOIN departments d
ON e.`department_id` = d.department_id;
#函数:
# UNION:并集(去重)。
# UNION ALL:并集(不去重)。
SELECT <> FROM <> WHERE <> UNION ALL SELECT <> FROM <> WHERE <>;