一起来学SQL(一)

写给自己

总是追求忙碌,在忙碌中却不知追求什么。一个总是闲不下来的自己,或许只有在广泛的涉猎中才能找到什么是最适合自己的,毕竟没有尝试,就没有资格评价。之前做项目时,也曾经接触过Android中的SQLite,但是那个时候涉猎的还是太浅了。数据库的知识我发现还是很必须的,无论实在实习还是项目中,从今天开始,从零开始,让这份博客记录我学习的足迹,成为我学习的笔记吧~~~(撒花,鼓掌)

本文主要介绍何为SQL,并介绍SQL最重要的增删查改功能中的“查”

写在前面

大数据时代,数据为王

数据库简述

何为SQL

结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
是一种 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言。

SQL 让您可以访问和处理数据库。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

数据库基本术语

  • 数据库: 数据库是一些关联表的集合。.
  • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
  • 列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
  • 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
  • 冗余:存储两倍数据,冗余可以使系统速度更快。
  • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
  • 外键:外键用于关联两个表。
  • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
  • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
  • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

SQL数据类型

结构化查询语言中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型。

  • 字符型(VARCHARVS CHAR)
    VARCHAR型和CHAR型数据用来储存字符串长度小于255的字符。
    VARCHAR和CHAR的区别
    1、向一个长度为四十个字符的VARCHAR型字段中输入数据Bill Gates,取出的数据其长度为十个字符,即字符串Bill Gates的长度;把字符串输入一个长度为四十个字符的CHAR型字段中,取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。
    2、VARCHAR型字段的比CHAR型字段占用更少的内存

  • 文本型(TEXT)
    文本型数据,可以存放超过二十亿个字符的字符串。适用于需要存储大串的字符
    p.s.
    文本型数据没有长度,一个文本型字段中的数据通常要么为空,要么很大。
    只要能避免使用文本型字段,就应该不使用。文本型字段既大且慢,滥用文本型字段会使服务器速度变慢。文本型字段还会吃掉大量的磁盘空间。

  • 数值型(整数INT 、小数NUMERIC、钱数MONEY)
    通常,为了节省空间,应该尽可能的使用最小的整型数据。
    一个TINYINT型数据只占用一个字节;一个INT型数据占用四个字节。一个NUMERIC型字段可以存储从-10^38到10^38范围内的数。
    可以使用 INT型或NUMERIC型数据来存储钱数。MONEY型数据可以存储从-922,337,203,685,477.5808到922,337,203,685,477.5807的钱数。SMALLMONEY型数据只能存储从-214,748.3648到214,748.3647 的钱数。

  • 逻辑型(BIT)
    BIT型字段只能取两个值:0或1。
    p.s.:创建好一个表之后,不能向表中添加 BIT型字段。如果打算在一个表中包含BIT型字段,必须在创建表时完成。

  • 日期型(DATETIME 对比 SMALLDATETIME)
    DATETIME型的字段可存储的日期 1753年1月1日第一毫秒到9999年12月31日最后一毫秒。
    一个SMALLDATETIME型的字段能够存储从1900年1月1日到2079年6月6日的日期,它只能精确到秒。

SQL语法

数据库表

一个数据库通常包含一个或多个表。每个表由一个名字标识(例如 “Customers” 或者 “Orders”)。表包含带有数据的记录(行)。

这里写图片描述

每一行代表一个城市,共三列来描述一行的内容

SQL语句

语句功能
SELECT从数据库中提取数据
UPDATE更新数据库中的数据
DELETE从数据库中删除数据
INSERT INTO向数据库中插入新数据
CREATE DATABASE创建新数据库
ALTER DATABASE修改数据库
CREATE TABLE创建新表
ALTER TABLE变更(改变)数据库表
DROP TABLE删除表
CREATE INDEX创建索引(搜索键)
DROP INDEX删除索引

select语句

1、SELECT 语句用于从数据库中选取数据。

基本语法
SELECT column_name,column_name FROM table_name;
SELECT * FROM table_name;

2、SELECT DISTINCT 语句
在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。
DISTINCT 关键词用于返回唯一不同的值。

语法
SELECT DISTINCT column_name,column_name FROM table_name;

3、SELECT TOP, LIMIT, ROWNUM
SELECT TOP 子句用于规定要返回的记录的数目。

SELECT TOP 子句对于拥有数千条记录的大型表来说,是非常有用的。

p.s.:并非所有的数据库系统都支持 SELECT TOP 子句。

SQL Server / MS Access 语法

SELECT TOP number|percent column_name(s) FROM table_name;

MySQL语法

SELECT column_name(s) FROM table_name LIMIT number;

Oracle 语法

SELECT column_name(s) FROM table_name WHERE ROWNUM <= number;

where语句

1、WHERE 子句用于提取那些满足指定标准的记录。

SQL WHERE 语法
SELECT column_name FROM table_name WHERE column_name operation value;

e.g.
SELECT * FROM Customers WHERE Country=’Mexico’;
从Customers” 表中选取国家为 “Mexico” 的所有客户

SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值字段,请不要使用引号
e.g.
SELECT * FROM Customers WHERE CustomerID=1;

下面的运算符可以在 WHERE 子句中使用:

运算符描述
=等于
<>不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
>大于
<小于
(>=)大于等于
<=小于等于
BETWEEN在某个范围内
LIKE搜索某种模式

>
2、LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

LIKE 语法
SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern;

e.g.
SELECT * FROM Customers WHERE City LIKE ‘s%’;
选取 City 以字母 “s” 开始的所有客户

运算符描述
s%以s开头的字符
%s以s结尾的字符
%s%包含s的
not s不包含s的

这里涉及到SQL的通配符,正则表达式

通配符描述
%替代 0 个或多个字符
_替代一个字符
[charlist]字符列中的任何单一字符
[^charlist] or [!charlist]不在字符列中的任何单一字符

[charlist] 通配符
下面的 SQL 语句选取 City 以 “b”、”s” 或 “p” 开始的所有客户:

SELECT * FROM Customers WHERE City LIKE ‘[bsp]%’;

下面的 SQL 语句选取 City 不以 “b”、”s” 或 “p” 开始的所有客户:

SELECT * FROM Customers WHERE City LIKE ‘[!bsp]%’;

>
3、IN 操作符
IN 操作符允许我们在 WHERE 子句中规定多个值。

语法
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,…)

e.g.选取姓氏为 Adams 和 Carter 的人
SELECT * FROM Persons WHERE LastName IN (‘Adams’,’Carter’)

4、BETWEEN 操作符
BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。

语法
SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2

e.g.以字母顺序显示介于 “Adams”(包括)和 “Carter”(不包括)之间的人
SELECT * FROM Persons WHERE LastName BETWEEN ‘Adams’ AND ‘Carter’

AND & OR 运算符

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

AND 运算符实例

SELECT * FROM Customers WHERE Country=’Germany’ AND City=’Berlin’;
从 “Customers” 表中表中选取国家为 “Germany” 且城市为 “Berlin” 的所有客户

OR 运算符实例

SELECT * FROM Customers WHERE City=’Berlin’ OR City=’München’;
从 “Customers” 表中选取城市为 “Berlin” 或者 “München” 的所有客户:

ORDER BY 关键字

ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,可以使用 DESC (降序)关键字。

语法
SELECT column_name,column_name
FROM table_name
ORDER BY column_name,column_name ASC|DESC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值