SQL语言初了解

SQL(Structured Query Language)是一种特殊的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询,更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。一个SQL语句是由多个子句(clause)组成的,子句包括select ,from,where,order by,group by,havingSQL(Structured Query Language)是一种特殊的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询,更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。一个SQL语句是由多个子句(clause)组成的,子句包括select ,from,where,order by,group by,having

一、DQL(DATA QUERY LANGUAGE):

数据查询语言,包括select,select的三大功能:查询行,查询列,多表查询

1、SQLPLUS不区分大小写,语句要以分号结束,*表示所有列,关键字不能分行输入。

2、取别名  select last_name as name,salary from employees;

select last_name name,salary money from employees;

select last_name “Name”,salary “Money” from employees;

3、将指定列连接起来

select ‘name is ’ || last_name as name,’salary is ’ || salary as salary

 from employees;

4、去重

select distinct salary from employees;

5、查询表结构

desc employees;查询employees表有哪些列

二、DDL:DATA DEFINITION LANGUAGE 数据定义语言,是创建数据库对象从无到有的过程。

1、create,创建

2、alter,修改

3、drop,删除

4、truncate,清空表内容,保留表结构

5、comment,给对象添加说明

一张表是一个用户下的对象,一个用户有一个默认的表空间,还要有一个默认的临时表空间

(1)创建表空间

(2)创建用户

(3)给用户分配权限

grant xxx to user;grant是授予权限的作用,xxx可以是一个角儿role,也可以是权限,例如grant role to user;或grant insert on table to user;

其中的connect是连接角色,临时用户特别是不需要建表的用户通常只赋予他们connect角色,拥有connect角色的用户可以创建表,视图,序列,簇,同义词,会话和与其他数据库的链。resource是资源角色,更可靠和正式的用户赋予resource角色,提供给用户另外的权限是可以创建他们自己的表,序列,索引等,还有一个DBA的角色,它拥有所有系统权限,不随便授予普通用户。

(4)连接到用户

conn wy/oracle;

show user;

(5)创建表

CREATE TABLE EMP

            (

              EMPLOYEE_ID NUMBER(6, 0) NOT NULL

            , FIRST_NAME VARCHAR2(20 BYTE)

            , LAST_NAME VARCHAR2(25 BYTE) NOT NULL

            , EMAIL VARCHAR2(25 BYTE) NOT NULL

            , PHONE_NUMBER VARCHAR2(20 BYTE)

            , HIRE_DATE DATE NOT NULL

            , JOB_ID VARCHAR2(10 BYTE) NOT NULL

            , SALARY NUMBER(8, 2)

            , COMMISSION_PCT NUMBER(2, 2)

            , MANAGER_ID NUMBER(6, 0)

            , DEPARTMENT_ID NUMBER(4, 0)

            );

CREATE TABLE EMPLOYEES

            (

              EMPLOYEE_ID NUMBER(6, 0) NOT NULL primary key

            , FIRST_NAME VARCHAR2(20 BYTE)

            , LAST_NAME VARCHAR2(25 BYTE) NOT NULL

            , EMAIL VARCHAR2(25 BYTE) NOT NULL UNIQUE

            , PHONE_NUMBER VARCHAR2(20 BYTE)

            , HIRE_DATE DATE NOT NULL

            , JOB_ID VARCHAR2(10 BYTE) NOT NULL

            , SALARY NUMBER(8, 2)

            , COMMISSION_PCT NUMBER(2, 2)

            , MANAGER_ID NUMBER(6, 0)

            , DEPARTMENT_ID NUMBER(4, 0)

            );

6、添加约束:约束就是对某一列数据的限制条件,常见的约束有:

not null:非空约束

unique:唯一性约束

primary key:主键约束,一张表只能有一个主键

foreign key:外键约束

check:检查约束,根据所设定的值进行匹配,如果符合条件就允许插入,否则就是违反约束。

每一张表的约束都会对应一个索引(除了非空约束),对于约束的索引是系统自动创建的。

7、alter 语句可以修改表的结构:

alter table employees add(mobile char(11));

alter table employees modify (mobile varchar2(20));

alter table employees drop (mobile);

alter table employees rename column employees_id to emp_id;

alter table employees modify (salary default 1000);

8、数据库里有哪些对象:

(1)、表(table)

数据库中的表与我们日常生活中使用的表格类似,它也是由行(Row) 和列组成的。列由同类的信息组成,每列又称为一个字段,每列的标题称为字段名。行包括了若干列信息项。一行数据称为一个或一条记录,它表达有一定意义的信息组合。一个数据库表由一条或多条记录组成,没有记录的表称为空表。每个表中通常都有一个主关键字,用于唯一地确定一条记录。

(2)、索引(index)

索引是根据指定的数据库表列建立起来的顺序。它提供了快速访问数据的途径,并且可监督表的数据,使其索引所指向的列中的数据不重复。如聚簇索引。

(3)、视图(view)

看上去同表似乎一模一样,具有一组命名的字段和数据项,但它其实是一个虚拟的表,在数据库中并不实际存在。视图是由查询数据库表产生的,它限制了用户能看到和修改的数据。由此可见,视图可以用来控制用户对数据的访问,并能简化数据的显示,即通过视图只显示那些需要的数据信息

(4)、序列(sequence)

序列定义存储在数据字典中,序列通过提供唯一数值的顺序表用于简化程序设计工作。

(5)、同义词(synoym)

类似于取别名。

三、DML

(Data Manipulation Language)数据操纵语句。只要发起一个DML语句,就会产生一个事务,这个事务需要TCL语句控制。

1、插入数据

insert into 表名 values (插入值需要与相应的列对应);

2、update修改更新数据

update employees set salary=300;不加限制条件,修改整个表的记录

update employees set salary=300 where last_name=’wei’;

update employees set salary=300 where salary = 1000;

update employees set salary=300 where salary in null;

update employees set salary=300 where last_name like’w%’;

其中%表示多个字符,_代表单个字符。

3、delete删除表的现有数据

delete from employees;删除整张表

delete employees;

delete employees where salary >=1000;

4、merge

create table A_MERGE

                   (

                     id   NUMBER not null,

                     name VARCHAR2(12) not null,

                     year NUMBER

                   );

 

                  

create table B_MERGE

                   (

                     id   NUMBER not null,

                     aid  NUMBER not null,

                     name VARCHAR2(12) not null,

                     year NUMBER,

                     city VARCHAR2(12)

                   );

                  

create table C_MERGE

                   (

                     id   NUMBER not null,

                     name VARCHAR2(12) not null,

                     city VARCHAR2(12) not null

                   );

commit;

创建三张表 ,分别插入数据

insert into A_MERGE values(1,'liuwei',20);

insert into A_MERGE values(2,'zhangbin',21);

insert into A_MERGE values(3,'fuguo',20);

commit;

                    

insert into B_MERGE values(1,2,'zhangbin',30,'jilin');

insert into B_MERGE values(2,4,'yihe',33,'hljian');

insert into B_MERGE values(3,3,'fuguo',null,'shandong');

commit;

执行以下语句

MERGE INTO A_MERGE A USING (select B.AID,B.NAME,B.YEAR from B_MERGE B) C ON (A.id=C.AID)

                   WHEN MATCHED THEN

                     UPDATE SET A.YEAR=C.YEAR

                   WHEN NOT MATCHED THEN

                     INSERT(A.ID,A.NAME,A.YEAR) VALUES(C.AID,C.NAME,C.YEAR);

语句的意思为:选取B表中三列将其结果作为集合取别名为C,判断若列A.id=C.AID,则更新A表的值,若不想等则将C中的值插入替换A中的值。

OLTP:online transaction process:联机事务处理,即关系型数据库,增删改查做日常的事务处理,是数据库的基础

OLAP:online analytical processing:联机分析处理,是数据仓库系统的主要应用

DSS:decision support system :人机交互方式进行决策的计算机一ing用系统。

四、DCL

Data Control Language)数据控制语句,允许用户有哪些权限。

1、grant授权

数据库对于权限管理有两种方式:直接授予相应的权限,以及通过角色来授予权限,角色是权限或者子角色的集合。

在创建数据库的时候,系统就有预定义的角色

select * from dba_roles;查询数据库中的所有角色

select * from dba_sys_privs where grantee=’DBA’;查询DBA角色有哪些系统权限

select * from dba_tab_privs where grantee=’DBA’;查询DBA角色有哪些对象权限

select * from dba_role_privs where grantee=’yu’;查询一个用户下有什么角色

select * from session_privs;查询当前用户有哪些权限

数据有两种权限:

(1)系统权限,例如创建会话,创建表,创建视图,创建索引等,可以通过select * from dba_sys_privs;来查询数据库中有哪些系统权限。

(2)对象权限,若用户A想要访问用户B的对象,则需要用户B将相应的权限授予A,也可以使用管理员权限授予。

可以通过select * from dba_tab_privs;来查询数据库中有哪些对象权限

2、revoke回收权限

revoke unlimited tablespace from yu;

revoke resource from yu;

3、创建角色

create role r1;

grant connect,resource to r1;

grant create indextype to r1;

grant r1 to yu;

revoke r1 from yu;

五、TCL

(Transaction Control Language)事务控制语言

commit 提交数据,使数据生效,正常退出数据也会自动提交

rollback 回滚数据,使数据失效

savepoint 设置回滚点

 

猜你喜欢

转载自blog.csdn.net/weixin_42774383/article/details/81546279