数据库SQL

数据库SQL

一、SQL概述

1.SQL的特点

​ ·综合统一:集模式定义语言、外模式定义语言、数据描述语言、数据操纵语言于一体

​ ·高度非过程化

​ ·面向集合的操作方式

​ ·以同一种语法结构提供多种使用方式

​ ·语言简洁,易学易用

2.SQL使用的动词

SQL功能动词
数据查询SELECT(查询)
数据定义CREATE(生成),DROP(删除),ALTER(修改)
数据操纵INSERT(插入),UPDATE(更新),DELETE(删除)
数据控制GRANT,REVOKE

3.SQL与三级模式体系结构

外模式:视图

模式:基本表

内模式:存储文件

SQL语句:操作视图和基本表,仅索引可以直接操作存储文件,故索引属于内模式的内容

二、数据定义

1.数据定义语句

操作对象创建删除修改
模式CREATE SCHEMADROP SCHEMA
CREATE TABLEDROP TABLEALTER TABLE
视图CREATE VIEWDROP VIEW
索引CREATE INDEXDROP INDEX

2.数据类型

数据类型含义
CHAR(n)长度为n的定长字符串
VARCHAR(n)最大长度为n的变长字符串
INT长整数(也可INTEGER)
SMALLINT短整数
NUMERIC(p,d)定点数,p位数字(不含符号、小数点)组成,小数后有d位数字
REAL取决于机器精度的浮点数
Double Precision取决于机器精度的双精度浮点数
FLOAT(n)浮点数,精度至少n位数字
DATE日期 格式为YYYY-MM-DD
TIME时间 格式位 HH:MM:SS

3.创建删除语句

​ (1)创建模式:

​ CREATE SCHEMA <模式名> AUTHORIZATION <用户名>

​ (2)删除模式

​ DROP SCHEMA <模式名><CASCADE|RESTRICT>

​ CASCADE和RESTRICT必须二选一

​ CASCADE(级联)表示删除模式时把该模式全部对象删除

​ RESTRICT(限制)表示如果该模式中已有下属对象则禁止此语句执行

#需要数据库管理权限或语句使用权限
#为用户LIXING定义一个模式SCHOOL
#没有指定模式名则模式名默认为用户名
#定义模式相当于定义了一个命名空间
CREATE SCHEMA SCHOOL AUTHORIZATION LIXING;
#级联删除表SCHOOL
DROP SCHEMA SCHOOL CASCADE;
#限制删除表SCHOOL
DROP SCHEMA SCHOOP RESTRICT;

​ (3)创建表

​ CREATE TABLE <表名>(

​ <列名><数据类型><列级完整性约束条件>

​ <表级完整性约束规则>

​ )

约束意义
PRIMARY KEY主码约束
UNIQUE不能取相同值,但能有多个空值
NOT NULL非空
FOREIGN <列名>REFERENCES<表名>(<列名>)参照完整性约束
CREATE TABLE STUDENT(
	SNO CHAR(5) NOT NULL UNIQUE,
	SNAME CHAR(20) UNIQUE,
    SAGE INT,
    PRIMARY KEY SNO
);

​ (4)删除表

​ DROP TABLE <表名> [RESTRICT|CASCADE]

​ 同模式删除,RESTRICT有限制条件,若其他表存在依赖该表,则此表不能删除

​ CASCADE会将依赖表一同删除

​ 不同:可缺省,默认RESTRICT

​ (5)修改表:

​ ALTER ATBLE<表名>

操作意义
ADD COLUMN <新列名><完整性约束>添加新列
DROP [COLUMN] <列名> [RESTRICT|CASCADE]删除列
ADD <表级完整性约束>添加表级完整性规则
DROP CONSTRAINT<完整性约束>[RESTRICT|CASCADE]删除完整性约束规则
ALTER [COLUMN] <列名><数据类型>修改某列的数据类型
#针对上表
ALTER TABLE STUDENT ADD UNIQUE(SNAME);
ALTER TABLE STUDENT DROP STUDENT;

​ (6)建立索引

​ CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名> (<列名> [ASC|DESC] )

​ ASC 升序、DESC降序,默认升序

​ (7)修改索引

​ ALTER INDEX <旧索引名> RENAME TO <新索引名>

​ (8)删除索引

​ DROP INDEX <索引名>

三、数据查询

1、单表查询

​ SELECT [ALL] <目标列> FROM <表、视图> [WHERE <条件表达式>]

​ [GROUP BY <列名>[HAVING<条件表达式>]]

​ [ORDER BY <列名>[ASC,DESC]];

注:WHERE:条件选项

​ GROUP BY:按列的值分组

​ ORDER BY:升降序

2.谓词

查询条件谓词
比较= ,<,>,<=,>=,<>,!=,!>,!<;NOT +前述
确定范围BETWEEN AND;NOT BETWEEN AND
确定集合IN;NOT IN
字符匹配LIKE; NOT LIKE (通配符%(任意长度个任意字符),_(任意单个字符))
空值IS NULL,IS NOT NULL(不可以=NULL)
多重条件AND ;OR

3.集函数

集函数作用
COUNT (*)统计元组个数
COUNT([DISTINCT|ALL]<列名>)统计一列中值的个数
SUM([DISTINCT|ALL]<列名>)求和,必须为数值型
AVG([DISTINCT|ALL]<列名>)求平均值,必须为数值型
MAX([DISTINCT|ALL]<列名>)求最大值
MIN([DISTINCT|ALL]<列名>)求最小值

​ DISTINCT:删除重复值

4.GROUP BY 子句

​ 每一组都会有一个集函数。

SELECT CNO,COUNT(SNO)
FROM SC
GROUP BY CON;

5.连接查询

​ (1)自身连接

​ 定义COURSE 的两个表FIRST、SECOND区分

SELECT FIRST.CNO,SECOND.CPNO
FROM COURSE FIRST,COURSE SECOND
WHERE FIRST.CPNO=SECOND.CNO;

​ (2)外连接

SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade
FROM Student LEFT OUTER JOIN SC
USING(Sno);

​ USING表示同名连接列

​ 左外连接:LEFT OUTER JOIN

​ 右外连接:RIGHT OUTER JOIN

​ 内连接:INNER JOIN

6.嵌套查询

<父查询块><表达式>(<子查询块>)

谓词意义
IN在子查询返回的集合中
比较运算符+ANY(SOME)与某个值符合条件
比较运算符+ALL与全部值符合条件
EXISTS存在量词,若内层空返回假,非空返回真

7.集合查询

​ (1)操作:

​ 并UNION (自动去重,保留UNION ALL)

​ 交INTERSECT

​ 差 EXCEPT

​ (2)基本语句结构

​ <查询块>操作<查询块>

四、数据更新

1.插入数据

​ INSERT INTO <表名>[(属性列集合)] VALUES (值集合);

​ INSERT INTO <表名>[(属性列集合)] 子查询;

2.修改数据

​ UPDATE <表名> SET <列名>=值 WHERE <条件>

3.删除数据

​ 并UNION (自动去重,保留UNION ALL)

​ 交INTERSECT

​ 差 EXCEPT

​ (2)基本语句结构

​ <查询块>操作<查询块>

四、数据更新

1.插入数据

​ INSERT INTO <表名>[(属性列集合)] VALUES (值集合);

​ INSERT INTO <表名>[(属性列集合)] 子查询;

2.修改数据

​ UPDATE <表名> SET <列名>=值 WHERE <条件>

3.删除数据

​ DELETE FROM <表名> WHERE<条件>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李星且小白blog.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值