【SQL】作为前端,应该了解的SQL知识(第一弹)
数据库基础
基本概念
-
数据库(DB)
将大量数据保存起来,经加工可进行高效访问的数据集合
-
数据库管理系统(DBMS)
用来管理数据库的计算机系统
-
字段:表中的列
-
记录:表中的行
- DDL:(数据定义语言):用来创建或者删除数据库或者表
- CREATE:创建
- DROP:删除
- ALTER:修改
- DML:(数据操纵语言):用来查询或者变更表记录
- SELECT:查询
- INSERT: 插入
- UPDATE: 更新
- DELETE: 删除
- DCL:(数据控制语言):用来确认或者取消对数据库中数据进行的变更
- COMMIT: 确认变更
- ROLLBACK: 取消变更
- GRANT: 赋予操作权限
- REVOKE: 取消用户操作权限
- 主键(primary key):就是可以特定一行数据的列
注释:
● 1行注释
书写在“--”之后,只能写在同一行。
● 多行注释
书写在“/*”和“*/”之间,可以跨多行。
DBMS分类
-
层次数据库(HDB)
将数据通过层次结构(树状结构)表示出来
-
关系数据库(RDB)
采用行和列组成的二维表格存储数据,用SQL对数据进行操作
常见的RDB:Oracle、SQL Server、DB2、PostgreSQL、MySQL
-
面向对象数据库(OODB)
保存对象的数据库
-
XML数据库(XMLDB)
对XML形式的数据进行处理
-
键值存储数据库(KVS)
只保存查询所使用的主键和值的组合的数据库(也就是关联数组或散列)
书写规则
- 以
;结尾 - 不区分
关键字的大小写,但是字段区分大小写 - 字符串、日期、常数需要用单引号,数值不需要引号
- 只能用
半角英文字母、数字、下划线(_)作为数据库、表和列的名称,必须以英文字母开头。
RDBMS结构
常见的系统结构为**客户端/服务器(c/s)**类型
操作
建库
CREATE DATABASE <数据库名称>;
建表
CREATE TABLE <表名>
(<列名1> <数据类型> <该列所需约束>,
<列名2> <数据类型> <该列所需约束>,
<列名3> <数据类型> <该列所需约束>,
<列名4> <数据类型> <该列所需约束>,
.
.
.
<该表的约束1>, <该表的约束2>,……);
约束是除了数据类型之外,对列中存储的数据进行限制或者追加条件的功能
数据类型:
| 数据类型 | 描述 |
|---|---|
| integer(size) int(size) smallint(size) tinyint(size) | 仅容纳整数。 在括号内规定数字的最大位数。 |
| decimal(size,d) numeric(size,d) | 容纳带有小数的数字。 “size” 规定数字的最大位数。“d” 规定小数点右侧的最大位数。 |
| char(size) | 容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。 在括号中规定字符串的长度。 |
| varchar(size) varchar2(size) | 容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。 在括号中规定字符串的最大长度。 |
| date(yyyymmdd) | 容纳日期。 |
删表
DROP TABLE <表名>;
更新表
添加列
-- 添加一列
ALTER TABLE <表名> ADD <列名> ;
-- 添加多列
ALTER TABLE <表名> ADD (<列名>,<列名>,……);
删除某列
-- 删除一列
ALTER TABLE <表名> DROP <列名> ;
-- 删除多列
ALTER TABLE <表名> DROP (<列名>,<列名>,……);
插入
INSERT INTO <表名> (<列名>,<列名>,……) VALUES (<值1,值2,……>)
变更表名
ALTER TABLE Poduct RENAME TO Product;
查询
简单查询语法
-- 查询列
SELECT <列名>,……
FROM <表名>;
-- 查询全部
SELECT *
FROM <表名>;
设置别名
AS关键字设置别名
-- 设置别名
SELECT product_id AS id,
product_name AS name,
purchase_price AS price
FROM Product;
去重
DISTINCT 关键字实现去重,DISTINCT 关键字只能用在第一个列名之前
SELECT
DISTINCT product_type
,regist_date
FROM Product;
查询条件设置
WHERE 子句来指定查询数据的条件。
执行顺序:
- 首先通过WHERE子句查询出符合条件的记录
- 然后再SELECT语句指定列
SELECT <列名>, ……
FROM <表名>
WHERE <条件表达式>;
运算符
算数运算符
加 (+)、减(-)、乘(*)、除(/)和取模(%)运算。
另:
-
除:DIV
-
取模:MOV
-
非数字型字符串,运算时当作0来处理
-
加法两边做数值运算,会把字符串转为数字
-
求模后的结果符号与被模数符号相同(第一个数字)
-
所有包含
NULL的计算,结果肯定是NULL。select -12 % -5 from dual -- -2 select 12 % -5 from dual -- 2
比较运算符
等号运算符 =
- 判断两个值,字符串和表达式是否相等。
- 不能用来比较
NULL - 两边都是字符串,则按 ANSI码来比较。
- 相等则为1 不相等为0
安全等于运算符 <=>
- 可以比较null
- 相等则为1 不相等为0
不等于 <>
- 不能用来比较
NULL
判空 IS NULL、 IS NOT NULL
逻辑运算符
AND:与
OR:或
AND运算符的优先级高于OR运算符。
() 可以提高优先级
真值
众所周知,真值有true和false两种,但是在SQL中还有一种UNKNOWN的情况。前者是二值逻辑,后者是三值逻辑。
在值为NULL时,真值为UNKNOWN

浙公网安备 33010602011771号