现在你大概了解什么是关系型数据库,这样对了解SQL的实质很有帮助。简单来说SQL就是一种编程语言,用它来编程可以创建和操作关系型数据库。进一步讲SQL是声明式编程(Declarative programming)它描述目标的性质,让计算机明白目标,而非流程。也就是说用SQL编程你要关注的是你要达到的目标效果而不是关注计算机怎么实现的过程。
下面用一个简单的例子讲解SQL语言和其他命令式编程语言的区别。当使用诸如C Java等命令式编程语言时,你需要将解决方案分解到每一步。比如当你口渴了想喝水。用命令式编程可能是:第一步,找到一个植被,第二步走到饮水机旁,第三步按下出水按钮,第四步用纸杯接水。而如果是声明式编程直接告诉计算机你的目标和结果就行,即给我一杯水。SQL内置了算法,并且自带优化程序,只要给指令,程序内部会将指令分解成每一步执行想要得到的结果。
除非你是专家级别用户,如果你是一个普通的数据库使用者只要关注你想要提取什么样的数据即可,完全不用考虑算法问题。
了解了SQL语言是声明式编程,我们接下来看一下它的句法。SQL语言由DDL、DML、DCL、TCL构成。DDL(Data Definition Language)为数据定义语言。DML(data manipulation language)为数据操纵语言。DCL(data control language)为数据控制语言。TCL(transaction control language)为事物控制语言。.
与其说DDL是一种语言还不如说它是一种句法。这种句法就是一系列的可以帮助用户定义和修改数据结构的语句。
语句1:创建语句(CREATE statement)
1.创建数据库
CREATE DATABASE database_name;
2.创建表
CREATE TABLE object_name(column_name data_type);
其中object_name是表格名,column_name是字段名,data_type是数据类型。我们以创建Sales表为例。CREATE TABLE Sales(purchase_number INT);创建表时,SQL支持表名和数据库名相同.
语句2:修改语句(ALTER statement)
1.增加(ADD)
如增加字段--
ALTER TABLE Sales
ADD COLUMN date_of_purchase DATE;
语句3:删除语句(DELETE statement)
如删除表--
DROP TABLE Sales;
另外,可以使用TRUNCATE达到删除目的,语句为TRUNCATE TABLE Customers;.和DROP 删除整个数据表不一样,TRUNCATE TABLE Customers; .只是删除整个数据表的数据,但是数据表还存在于数据库内.
语句4:重命名语句(RENAME statement)
如给存在的表重命名--
RENAME TABLE Sales TO sale_data;
注:前述提到的CREATE ADD ALTER 是SQL的关键字(key words或 reserved words) ,不能作为数据表中变量的名字.比如CREATE TABLE add(purchase_number INT)是不合法的.
DML即数据操纵语言,通过DML,我们可以操纵数据库的数据.最常见的就是SELECT语句.SELECT 语句帮助使用者从数据库例查询相应数据.
1. 提取数据信息
SELECT * FROM Sales;
该语句可以提取出整个数据表所有字段和记录的信息.
SELECT ... FROM Sales;
该语句用于提取部分数据信息
2.插入数据
INSERT...INTO...VALUES;
比如INSERT INTO Sales (purchase_number, date_of_purchase) VALUES(1,'2017-10-11');
如果Sales只有purchase_number, date_of_purchase两个字段,INSERT INTO Sales VALUES(1,'2017-10-11');效果一样.
3.更新数据
UPDATE Sales SET date_of_purchase = '2017-12-12' WHERE purchase_number = 1;
4.删除数据
DELETE FROM sales;(此语句等同于TRUNCATE TABLE sales;)
DELETE FROM sales
WHERE
purchase_number = 1;
DDL中的TRUNCATE和DML中的DELETE语句都能实现删除数据的效果.TRUNCATE删除全部数据保留表.DELETE可以精确具体地删除表中的某一部分数据.
DDL和DML是最常用的SQL语言.DCL和TCL较少用.
DCL包含GRANT和REVOKE语句.此二语句用于管理数据库用户的权限.同一个数据库由无数个不同的用户使用,他们获取的权限是不一样的.GRANT语句为用户授权不同程度的权限.
如GRANT type_of_permission ON database_name.table_name TO 'username'@'localhost'
localhost是本地主机,大的公司企业并不使用本地主机而是将数据库建在远程云端.
REVOKE语句用于撤销数据库用户的使用权限.如REVOKE type_of_permission ON database_name.table_name TO 'username'@'localhost'
TCL语言
在实际工作中,数据的每次一修改并不一定马上自动地存储进数据库里,TCL语言中的COMMIT语句用于将修改(包括INSERT DELETE UPDATE)永久地存储到数据库里.
比如使用UPDATE更新数据:
UPDATE customers
SET last_name = 'Johnson'
WHERE customer_id =4
COMMIT;
使用了COMMIT以外,所有含有此数据的其他表的相应数据也会被更改保存.
TCL中的ROLLBACK语句可以让你对COMMIT的语句进行反悔,回到COMMIT前的状态.
UPDATE customers
SET last_name = 'Johnson'
WHERE customer_id =4
COMMIT;
ROLLBACK;
这样操作后,数据回到之前的状态.
版权声明:本文章里引用的数据来源于网络,仅供学习交流使用,版权归原作者。