目录
我是ZGB,Java领域新星创作者,阿里云专家博主,华为云·云享专家博主,热衷技术分享,欢迎与我交流技术。
结构化查询语言(Structured Query Language,SQL)是关系数据库的标准语言,也是一个通用的,功能极强的关系数据库语言。其功能不仅仅是查询,而是包括数据库模式创建,数据库数据的插入与修改,数据库安全性完整性定义与控制等一系列功能。
DDL(Data Definition Languages、数据定义语言),这些语句定义了不同的数据库、表、视图、索 引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构。
主要的语句关键字包括 CREATE 、 DROP 、 ALTER 等。
DML(Data Manipulation Language、数据操作语言),用于添加、删除、更新和查询数据库记 录,并检查数据完整性。
主要的语句关键字包括 INSERT 、 DELETE 、 UPDATE 、 SELECT 等。( SELECT是SQL语言的基础,最为重要。)
DCL(Data Control Language、数据控制语言),用于定义数据库、表、字段、用户的访问权限和 安全级别。 主要的语句关键字包括 GRANT 、 REVOKE 、 COMMIT 、 ROLLBACK 、 SAVEPOINT 等
SQL大小写规范:winOS不区分大小写,LinuxOS区分大小写
在窗口命令行演示如何创建库和创建表以及查询数据库和表 ,当然后期我们使用Navicat可视化工具方便。
查询所有的数据库
show databases(查询所有数据库);

创建数据库
create database 数据库名;


使用自己的数据库
use 数据库名; #打开abc数据库

查看某个库的所有表格
show tables from 数据库名; #此时查看abc库下的表格,发现没有表

创建新的表格
create table 表名称( 字段名 数据类型,
字段名 数据类型 );
创建表成功~此时表是空的,用查看语句看结果。

查看一个表的数据
select * from 数据库表名称; # *代表查询所有列或字段:
查看发现是一张空表,需要插入数据

插入数据,这就涉及增删改查其中之一。
INSERT INTO 表名 VALUES(插入内容);
插入成功~,查看一下


当我们上面熟练了,我们对数据库SQL的基本语句有一定了解。那我们就开始对基本的SELECT语句学习。
字符串、日期时间类型的变量需要使用一对''表示
INSERT INTO emp VALUES(1002,'Tom');
导入现有的数据表、表的数据。
source d:\atguigudb.sql; # source 文件的全路径名
最基本的SELECT语句: SELECT 字段1,字段2,... FROM 表名
SELECT 1 + 1,3 * 2 FROM DUAL; #dual:伪表
记着这张表,后面演示都需要用到:

列的别名
as:可以省略,列的别名可以使用一对""引起来,不要使用''。
SELECT employee_id emp_id,last_name AS lname,department_id "部门id" FROM employees; #列名后面就是别名,可以用as,也可以省略,别名使用用双引号
去除重复行的关键字:DISTINCT
SELECT DISTINCT department_id FROM employees;

空值参与运算,空值就是null,null不等同于0

3. 空值参与运算:结果一定也为空。
SELECT employee_id,salary "月工资",salary * (1 + commission_pct) * 12 "年工资",commission_pct FROM employees; #年工资和奖金都是空值,因为1+空值为null,没法得出年工资

实际问题的解决方案:引入IFNULL
SELECT employee_id,salary "月工资",salary * (1 + IFNULL(commission_pct,0)) * 12 "年工资",commission_pct FROM `employees`; #年工资可以算出来

着重号 ``,有时候表名与关键字相同,着重号可以避免

显示表结构
DESC `order`; #显示了表中字段的详细信息

过滤数据:where
查询90号部门的员工信息
- SELECT *
- FROM employees
- #过滤条件,声明在FROM结构的后面,WHERE子句紧随 FROM子句
- WHERE department_id = 90;
-
- ELECT 字段1,字段2
- FROM 表名
- WHERE 过滤条件
