我是ZGB,Java领域新星创作者,阿里云专家博主,华为云·云享专家博主,热衷技术分享,欢迎与我交流技术。
SQL概念:
结构化查询语言(Structured Query Language,SQL)是关系数据库的标准语言,也是一个通用的,功能极强的关系数据库语言。其功能不仅仅是查询,而是包括数据库模式创建,数据库数据的插入与修改,数据库安全性完整性定义与控制等一系列功能。
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语言的规则与规范:
- SQL 可以写在一行或者多行。为了提高可读性,各子句分行写,必要时使用缩进
- 每条命令以 ; 或 \g 或 \G 结束
- 关键字不能被缩写也不能分行
- 关于标点符号 必须保证所有的()、单引号、双引号是成对结束的
- 必须使用英文状态下的半角输入方式
- 字符串型和日期时间类型的数据可以使用单引号(' ')表示
- 列的别名,尽量使用双引号(" "),可以省略as
SQL大小写规范:winOS不区分大小写,LinuxOS区分大小写
- 数据库名、表名、表的别名、变量名是严格区分大小写的
- 关键字、函数名、列名(或字段名)、列的别名(字段的别名) 是忽略大小写的。
在窗口命令行演示如何创建库和创建表以及查询数据库和表 ,当然后期我们使用Navicat可视化工具方便。
SELECT的基本语句
查询所有的数据库
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
- 空值参与运算:结果一定也为空。
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 过滤条件
版权归原作者 程序员飞鸟 所有, 如有侵权,请联系我们删除。