天天看点

sql 一对多获得一条数据_结构化查询语言SQL学习入门

sql 一对多获得一条数据_结构化查询语言SQL学习入门

一、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 子句可以让我们筛选分组后的各组数据。

推荐书籍:《SQL基础教程》,想要深入学习的朋友有机会可以看看

继续阅读