数据分析——SQL基础知识概要介绍
“ SQL作为面向数据库的通用数据处理语言规范,是数据分析、数据开发必备语言之一。”
不必说数据分析师和数据开发了,很多大厂已经开始推行全员数据SQL能力了。但这里的SQL和真正意义的SQL,是有很大区别的,即SQL≠select。
01 什么是SQL(SQL≠select)
首先,什么是SQL?
SQL是一种面向数据库的通用数据处理语言规范,说白了,就是一种代码语言,主要是对结构化数据库进行操作的语音。
SQL的主要数据类型有:
CHAR():定长字符串 最大长度为 254
VARCHAR():变长字符 最大长度为 4000
SMALLINT:短整型数字 长度为 2 字节
INTEGER:整型数字 长度为 4 字节
REAL:单精度浮点 32 位近似值
DOUBLE:双精度浮点 64 位近似值
DECIMAL(m,n):数字 精度为m小数位为n
DATE:日期时间
TIME:日期时间
TIMESTAMP:日期时间
它主要能完成以下几类功能。
(1)数据定义(DDL)
数据定义的含义,就是对数据表的表结构等进行定义。
主要包括的语句有:CREATE,ALTER,DROP,DECLARE
(2)数据操纵(DML)
数据操纵的含义,就是对基本表和视图的数据插入、删除和修改。这里最最最重要的,就是具有很强的数据查询功能,查询功能是SQL里最常用的功能了。
主要包括的语句有:SELECT,DELETE,UPDATE,INSERT。其中SELECT就是查询。
(3)数据控制(DCL)
数据控制的含义,主要是对用户的访问权限加以控制,以保证系统的安全性。
主要包括的语句有:GRANT,REVOKE,COMMIT,ROLLBACK
看到了吧,其实SQL语言包括的内容是很多的。大家常常说的用的select其实只是SQL中的一个查询语句而已,但这个语句,确是SQL中最最重要的语句。尤其是作为数据分析师或者业务,在绝大部分场景下都是取数需求,所谓的取数需求,就是对数据进行查询而已,因此用的都是select语句。
至于其他语句,绝大部分时间是用不太到的。毕竟分析师不需要对数据进行维护。但作为数据开发,需要。
02 SQL语句介绍:数据定义DDL
DDL—数据库定义语言:直接提交的。
CREATE:用于创建数据库对象
DECLARE:除了是创建只在过程中使用的临时表外,DECLARE语句和CREATE语句非常相似。唯一可以被声明的对象是表。并且必须放入用户临时表空间
DROP:可以删除任何用CREATE(数据库对象)和DECLARE(表)创建的对象
ALTER:允许修改某些数据库对象的信息。不能修改索引
下面主要基于对象介绍基本的语法:
(1)数据库
创建数据库:
CREATE DATABASE database-name [USING CODESET codeset TERRITORY territory]删除数据库:
drop database dbname(2)表
创建新表:
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)根据已有的表创建新表:
create table tab_new like tab_old; create table tab_new as select col1,col2… from tab_old definition only修改表:增加一个列:
Alter table tabname add column col type注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
添加主键:
Alter table tabname add primary key(col)删除主键:
Alter table tabname drop primary key(col)删除表:
drop table tabname(3)表空间
创建表空间:
create tablespace tbsname pagesize 4k managed by database using (file ‘file’ size)表空间加入容器:
alter tablespace tablespace_name add(file 'filename' size)注:该操作是不可逆的,加入容器后将不能将其删除,因此在加入的时候注意。
删除表空间:
drop tablespace tbsname(4)索引
创建索引:
create [unique] index idxname on tabname(col….)删除索引:
drop index idxname注:索引是不可更改的,想更改必须删除重新建。
(5)视图
创建视图:
create view viewname as select statement删除视图:
drop view viewname注:视图唯一能修改的是引用类型列,改变列的范围。其他定义好了都不能修改。当视图基于的基表drop后,视图变为无效。
03 SQL语句介绍:数据操纵DML
DML—数据库操纵语言,它不隐式地提交当前事务 ,是否提交视环境设定而定。(1)SELECT:从表中查询符合数据
关于select的具体语句,由于内容丰富,将在后面逐一展开,这里不详细阐述。
select时,注意索引谓词和非索引谓词,尽量在有索引的列上使用索引谓词。谓词类型可索引注释
(2)DELETE:删除已有表的数据
从表中删除记录语法格式:
DELETE FROM tablename WHERE (conditions)(3)UPDATE:更新已有表的数据
语法格式:
UPDATE tabname SET (col1=values1,col2=values2,…) WHERE (conditions);注:update的速度比较慢,要在相应列上建立索引。
(4)INSERT:向已有表中插入数据
向表中插入记录语法格式:
INSERT INTO tablename (col1,col2,…) VALUES (value1,value2,…);INSERT INTO tablename (col1,col2,…) VALUES (value1, value2,…), (value1, value2,…),……Insert不会等待任何程序,不会导致锁定。
04 SQL语句介绍:数据控制DCL
DCL—数据控制语言,主要包括以下语句:(1)GRANT—授予用户权限
所有者或者管理员把访问权限赋给其他用户,语法格式:
grant [all privileges|privileges,….] on tabname | viewname to [public|user,….](2)REVOKE—撤消用户权限
取消某一用户的某中访问权限,语法格式:
Revoke [all privileges|privileges,….] on tabname | viewname from [public|user,….]注:不能取消实例级别的用户的任何权限,他们不是通过grant授权的,是通过组实现的权限。
(3)COMMIT—提交事务,可以使数据库的修改永久化
COMMIT:把事务中所做的修改永久化记录到数据库。语法格式:
commit [work](4)ROLLBACK—回滚事务,消除上一个COMMIT命令后的所做的全部修改,使得数据库的内容恢复到上一个COMMIT执行后的状态.。ROLLBACK:将上次提交以来所做的更改全部撤消。语法格式:
Rollback [work]今天主要是这些,后续将主要针对一些常用语句进行分享
-END-