一、SQL简介
结构化查询语言(Structured QueryLanguage)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。
1980年10月,经美国国家标准局(ANSI)的数据库委员会X3H2批准,将SQL作为关系数据库语言的美国标准,同年公布了标准SQL,此后不久,国际标准化组织(ISO)也作出了同样的决定。
注:除了标准SQL外,大部分关系型数据库都有自己的私有扩展。
二、SQL功能
SQL功能的体现主要在于SQL语言,SQL按功能类型分以下6种语言,其中1-4条使用最多。
1、数据查询语言(DQL:Data Query Language):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其它类型的SQL语句一起使用。
2、数据操作语言(DML:Data Manipulation Language):其语句包括动词INSERT、UPDATE和DELETE。它们分别用于添加、修改和删除。
3、数据控制语言(DCL):它的语句通过GRANT或REVOKE实现权限控制,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
4、数据定义语言(DDL):其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。
5、指针控制语言(CCL):它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
6、事务控制语言(TCL):它的语句能确保被DML语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
三、SQL使用
DDL:CREATE,ALTER和DROP
CREATE(创建)
CREATE DATABASE 数据库名;--创建数据库
复制
CREATE TABLE 表名称
(
列名1 数据类型(数据长度),
列名2 数据类型(数据长度),
列名3 数据类型(数据长度)
);--创建数据表
复制
数据类型 | 描述 |
integer(size) int(size) smallint(size) tinyint(size) | 仅容纳整数。在括号内规定数字的最大位数。 |
decimal(size,d) numeric(size,d) | 容纳带有小数的数字。 'size" 规定数字的最大位数。" d " 规定小数点 |
char(size) | 容纳固定长度的字符串( 可容纳字母、数字以及特殊字符) 在括号中规定字符串的长度。 |
varchar(size) | 容纳可变长度的字符串( 可容纳字母、数字以及特殊字符) 在括号中规定字符串的最大长度 |
date(yyyymmdd) | 容纳日期。 |
CREATE USER 用户名 IDENTIFIED BY 密码;--创建用户
复制
CREATE INDEX 索引名称 ON 表名称(列名称);--创建索引
复制
ALTER(修改)
alter table 表名称 add 列名称 数据类型;--在某个表增加某个字段
alter table 表名称 drop column 列名称;--删除某个表的某个字段
alter table 表名称 alter column 列名称 数据类型;--修改某个字段的数据类型
复制
DROP(撤销)
drop database 数据库名称;--删除数据库
drop table 表名称;--删除表(表的结构、属性以及索引也会删除)
复制
DML:SELECT、INSERT、UPDATE和DELETE
SELECT(查询)
SELECT 列名称 FROM 表名称;--查询某个表中某些列值
SELECT * FROM 表名称;--查询某个表中所有列的数据
复制
INSERT(插入)
INSERT INTO 表名称 (列1,列2,列3,)VALUES (值1,值2,值3,);--向某个表的某些字段插入数据,注意列名称要与值一一对应
INSERT INTO 表名称 VALUES (值1,值2,值3,);--向某个表的所有字段插入数据,同样名称要与值一一对应
复制
UPDATE(更新)
UPDATE 表名称 SET 列名称=新值;--更新某个表的某列的值,实际生产使用中常与WHERE子句同用,筛选一条或多条数据进行修改
update 表名称 set 列名称=REPLACE(列名称,'原字符','新字符');--更新某个表中某个字段的部分字符
复制
DELETE(删除)
delete from 表名称;--删除某个表中数据,同样生产使用中常与WHERE子句同用,筛选一条或多条数据进行删除
复制
DCL:GRANT或REVOKE
GRANT(授予)
GRANT <权限> ON 表名[(列名)] TO <数据库用户>;
GRANT <权限> ON <数据对象> FROM <数据库用户>;--授权
复制
REVOKE(回收)
REVOKE <权限> ON <数据对象> FROM <数据库用户名>;--收回权限
复制
DQL:WHERE,ORDER BY,GROUP BY和HAVING
WHERE(在某种情况下)
WHERE子句常与“增删改查”语句搭配作筛选数据用,通过运算符对比某个字段以此作为条件筛选部分数据进行其他操作;可以理解为条件语句,满足条件的执行“增删改查”操作,不满足条件的不进行“增删改查”操作。
常见运算符:
运算符 | 描述 |
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
like | 相似于(模糊查询) |
between | 某个范围内 |
ORDER BY(排序)
ORDER BY 关键字用于对结果集进行排序,ORDER BY DESCD倒序排列
SELECT * FROM 表名称 ORDER BY 列名称;--查询表按某列进行排列
SELECT * FROM 表名称 ORDER BY 列名称 DESC;--查询表按某列进行倒序排列
复制
GROUP BY(分组)
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组
SELECT 列名称 FROM 表名称 GROUP BY 列名称;--查询某列所有不同值显示
复制
HAVING
在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。
HAVING 子句可以让我们筛选分组后的各组数据。