SQL语言(一):基础

一、SQL语言

    SQL是用于访问和处理数据库的标准的计算机语言。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。

    SQL语言共分为两大类:

    1、数据操纵语言DML:主要包括增删改查(insert、delete、select、update

    2、数据定义语言DDL:主要包括创建、修改、删除(create、alter、drop)数据库、表、索引。

二、数据操纵语言DML

1、SELECT语句
SELECT 列名称 FROM 表名称
或者
SELECT * FROM 表名称
(1)DISTINCT:去掉重复
SELECT DISTINCT 列名称 FROM 表名称
(2)WHERE:条件
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
(3)AND和OR:与和或运算符
(4)ORDER BY:排序

     DESC代表降序排列

    ASC代表升序排列(默认)

(5)LIKE:匹配

    %:替代一个或多个字符

    _:仅替代一个字符

(6)IN和NOT IN:在和不在集合中
(7)BETWEEN AND:在数据值之内,值可以是数值、文本或者日期
(8)AS:列名称和表名称指定别名
(9)UNION:合并两个或多个 SELECT 语句的结果集,UNION ALL允许重复
(10)JOIN:连接表
SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2 
ON table_name1.column_name=table_name2.column_name
  • JOIN(INNER JOIN): 如果表中有至少一个匹配,则返回行
  • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
  • FULL JOIN: 只要其中一个表中存在匹配,就返回行
(11)ROWNUM:序列(oracle)
    常用来分页,注意rownum>2使用陷阱
SELECT *
  FROM (SELECT row_.*, rownum rn
          FROM A
         WHERE rownum <= 30000)
WHERE RN > 20000

2、INSERT语句

INSERT INTO 表名称 VALUES (值1, 值2,....)
或者
INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

  查询其他表插入

INSERT INTO table_name (列1, 列2,...) select(列1, 列2,...) FROM table_name2

3、UPDATE语句

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
或者
UPDATE 表名称 SET 列名称 = 新值 ,列名称 = 新值 WHERE 列名称 = 某值

4、DELETE语句

DELETE FROM 表名称 WHERE 列名称 = 值

三、数据定义语言DDL

1、CREATE:创建数据库或表或序列或视图
CREATE DATABASE database_name
或者
CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
或者
CREATE INDEX index_name ON table_name (column_name)
或者
CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

列约束

  • NOT NULL:不为空
  • UNIQUE:唯一
  • PRIMARY KEY:主键
  • FOREIGN KEY:外键
  • CHECK:检验条件
  • DEFAULT:默认值
  • AUTO_INCREMENT:自增

2、DROP: 撤销索引、表以及数据库

DROP DATABASE 数据库名称
或者
DROP TABLE 表名称
或者
DROP INDEX index_name

3、ALTER :添加、修改或删除表中列

ALTER TABLE table_name ADD column_name datatype
或者
ALTER TABLE table_name DROP COLUMN column_name
或者
ALTER TABLE table_name ALTER COLUMN column_name datatype

四、多表操作

1、多表联合更新

oracle:

update customers a -- 使用别名
set city_name=(select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id)
where exists (select 1
from tmp_cust_city b
where b.customer_id=a.customer_id
)
-- update 超过2个值
update customers a -- 使用别名
set (city_name,customer_type)=(select b.city_name,b.customer_type
from tmp_cust_city b
where b.customer_id=a.customer_id)
where exists (select 1
from tmp_cust_city b
where b.customer_id=a.customer_id
)

mysql:

UPDATE td_population_people A
SET  
A.Issuing_standard=(SELECT B.Issuing_standard FROM td_population_people_approved B
 WHERE B.People_code=A.People_code and 
B.people_approved_xh = '201')
2、start with connect by prior 递归查询用法

https://www.cnblogs.com/benbenduo/p/4588612.html

3、查找一张表的外键

删除表A的记录时,Oracle 报错:“ORA-02292:违反完整约束条件(XXX.FKXXX)- 已找到子记录

select a.constraint_name, a.table_name, b.constraint_name 
from user_constraints a, user_constraints b
where a.constraint_type = 'R' 
and b.constraint_type = 'P' 
and a.r_constraint_name = b.constraint_name
and a.constraint_name = 'FKXXX'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值