SQL 概述和基本操作
1. SQL 语句分类和概述:
增删改查【CRUD】:
C Create 创建,新建
R Read 查询,读取
U Update 更新,修改
D Delete 删除
核心:
数据库设计 C ,数据库查询 R
数据库 SQL 语句功能/模块分类:
DQL 数据库查询语句
DML 数据库操作语句
DDL 数据库定义语句
DCL 数据库控制语句
DTL 数据库事务相关操作
2.数据库基本操作:
cmd > mysql -hlocalhost -uroot -p密码
本地连接数据库:
cmd > mysql -uroot -p
Enter password: ******
展示当前数据库服务器中所有的数据库:
show databases;
创建数据库:
create database dbName;
# Query OK, 1 row affected (0.00 sec)
# Query OK 代表 SQL 语句执行成功
查询数据库创建过程中,SQL 语句内容,查询创建数据库执行 SQL 语句情况:
show creat database dbName;
可以提供的信息是数据库创建使用的语句,以及当前数据库默认编码集。这里要求默认编码集为 utf8
创建数据库的过程中,约束限制编码集:
create database dbName character set latin1;
create database dbName character set gbk;
删除指定数据库【慎用】
drop database dbName;
【数据表】操作需要先选择操作的数据表在哪一个【数据库】
use dbName;
【提示: 接下来所有的【数据表】操作都是在当前【数据库】中】
MySQL 告知当前所有【数据表】操作对应的【数据库】是哪一个:
select database();
查询语句【DQL】
1.使用数据库数据表信息结构概述:
2.基本格式:
select 查询内容 from 从哪里查;
-- 查询内容,字段名,列名。filed
-- 从哪里查,表明 tableName
基本格式 字段表名:
-- * 通配符,可以用于通配字段,所有字段
-- 不建议使用,会导致数据量过大,查询周期过长,MySQL 压力过大
-- 从员工表 t_employees 中 所有的员工数据信息
select * from t_employees;
-- 指定字段查询,明确当前查询操作指定的字段名称,数据需求。
-- 查询所有员工的名字,姓氏和id数据
select employee_id, first_name, last_name from t_employees;
查询结果字段数据进行计算操作:
-- 员工表中,字段 salary 为月薪,这里可以计算年薪 * 12、
-- 查询所有员工的id,名字,姓氏和年薪
select employee_id, first_name, last_name, salary * 12 from t_employees;
select employee_id, first_name, last_name, salary from t_employees;
查询结果字段数据去重操作:
-- 查询所有员工的姓氏 resultSet 结果集数据行 107 rows
select last_name from t_employees;
-- 查询所有员工的姓氏,并且去重,指定字段的数据内容在数据结果中有且只有一个
-- resultSet 结果集数据行 102 rows
select distinct last_name from t_employees;
查询结果字段别名处理:
-- 查询字段的名称目前是按照数据表中设计的字段名称进行处理
-- 数据表字段名称不方便,或者说解析阅读性一般
-- 查询所有员工的 last_name【别名】 姓,first_name【别名】名,salary 【别名】工资
select last_name as '姓',
first_name as '名',
salary as '工资'
from t_employees;
排序查询 order by:
规则 | 效果 |
asc | 约束指定字段【升序】排序查询结果内容 |
desc | 约束指定字段【降序】排序查询结果内容 |
-- 基本格式
select fieldName1, filedName2 from tabaleName order by fieldName condition;
单一条件排序:
-- 按照工资进行升序排序,要求查询结果字段包括 employee_id, first_name, last_name, salary
-- IDEA 提示 asc 有警告: order by 操作默认升序,可以省略 asc 标记
select employee_id, first_name, last_name, salary from t_employees order by salary asc;
-- 与上方的查询要求一致,order by 默认指定字段升序
select employee_id, first_name, last_name, salary from t_employees order by salary;
-- order by 排序要求使用的字段,与当前查询目标字段无关,
-- 字段数据,字段信息可以从指定表直接获取
-- 当前查询没有 salary 字段数据要求,但是排序是按照 salary 字段信息完成
-- 【注意】后期查询限制条件众多,需要明确查询限制的字段信息从何而来
select employee_id, first_name, last_name from t_employees order by salary;
-- 按照工资进行降序排序,要求查询结果字段包括 employee_id, first_name, last_name, salary
select employee_id, first_name, last_name, salary from t_employees order by salary desc;
多条件排序:
-- 排序操作采用多个字段进行排序操作
-- 例如: 第一个字段降序,如果按照第一个字段数据限制
-- 出现了相同数据的形式,按照第二个字段进行再次排序
-- 按照工资进行降序排序,要求查询结果字段包括 employee_id, first_name, last_name, salary
-- 如果出现了工资一致情况,按照 employee_id 降序
select employee_id, first_name, last_name, salary from t_employees order by salary desc, employee_id desc;