@jaiminc
2015-07-23T07:09:14.000000Z
字数 2169
阅读 2442
MySQL
SQL的确是一门比较容易上手的语言,语法和结构都与人类现实思维十分相似。我大概零零散散看了一周左右的O'REILLY出版的《SQL学习指南(第二版)》,现在其前五章内容进行简单的总结。
显然,对于数据库而言,最基本的职责就是数据的存储和提取,扩展或者深入的功能都是这两个基本点的延伸。
数据存储主要包含以下几个方面:
对于一个数据库的建立,我们的思路应该是先搭建框架后填充数据。SQL中“表”是一个基本的数据存储单位,这个概念也十分直观、容易理解,和Excel电子表格实际上很相似。create的基本工作就是建立一张“表”。
作为“结构化查询语言”而不是应用程序,sql语言中也有数据类型的规范。建立一张表的时候我们也应该去定义每列的数据都应该是什么样的数据类型。这样对内容管理以及系统资源分配都会有好处。所以最基本的create语句是如下格式:
create table <table_name>
(person_id smallint unsigned,
name varchar(20),
gender char(1),
......
<column_name> <type>
);
但是实际应用中不仅需要定义数据类型,有些时候还要定义具体是“哪些值”,比如gender列中只能填‘M’和‘F’,这就需要用到约束,create语句进行了进一步延伸:
create table <table_name>
(person_id smallint unsigned,
name varchar(20),
gender char(1) check (gender in ('M','F')),
......
<column_name> <type>
);
当然约束不仅仅有内容约束(check、enum),还有主键约束(constraint)来确定表间连接。
表的结构确定好之后就可以向其中添加数据,insert用法如下:
insert into <table_name>
(<column_name_1>,<column_name_2>,......)
value (<value_1>,<value_2>,......);
update用于数据的更改,用法如下。不过既然是更改,就应该指明更改哪个或哪些数据:
set <column_name> = <value_new>
where <condition>;
delete用于删除数据(行),同样应该指明删除哪行:
delete from <table_name>
where <condition>;
注意:删除整张表需要用drop,格式:drop table <table_name>
至此,利用这些语句及一些高级用法(条件的设定),就可以完成数据库存储数据的功能。
数据提取的核心在于select,select语句可以由若干的子句构成,下面从最基本的语句开始进行拓展,总结常用子句的功能:
对于最简单的数据提取,我们最关心的问题应该是“从哪里取”,这就需要from子句,来确定所需要的表:
select *
from <table_name>;
但是我们并不是需要这张表中所有的数据,所以还要确定“取什么”:
select <cloumn_name>
from <table_name>;
有时不仅需要限定列,我们还要“限定行”,“取谁的?”:
select <cloumn_name>
from <table_name>
where <condition>;
可能一张表并不能包含所有我们需要的数据或是限定条件,我们还要“连接其他表”:
select <cloumn_name>
from <table1_name> join <table2_name>
on <condition_linking>
where <condition>;
有时候仅仅连接现有的表还不够,我们还需要对一些列进行简单处理、组合,这时候我们需要一个“中间表”,相关案例通常利用子查询来建立中间表:
select <colunm_name>......
from <table_for_new> join
(select <column_name>.....
from <table1_name> join <table2_name>
on <condition_linking>
group by ......)
<new_table_name>
on <condition_linking>;
限定条件并不都是确定的信息,还可能有模糊的内容,这时候就要利用where子句中的通配符,例如:
select lname
from employee
where lname like '_a%e%';/*第二个字符为a,e在其后的任意位置*/
我们还希望最后输出的结果有序一些,这就需要利用order by:
order by <name> /*默认降序*/
order by <name> desc /*升序*/
SQL最基本的语句用法总结到这里,难免会有我自己理解上错误的地方,您及时打脸指正我将感激不尽。例子中涉及的用法都是比较浅显的,如果希望深入学习可以参考其他资料:实体书籍、实验楼SQL教程、w3cschool教程等等,我自己在看书过程中也做了一些笔记保存在记事本中,欢迎一起探讨。