SQL笔记

阅读数:1405 发布时间:2016-07-04 08:06:12

作者:zzl005 标签: SQL 数据库 朱忠来005

SQL 语言基础相关课程资料请看这里SQL 语言基础

sql 是一个标准,也是一门计算机语言

SQL 对大小写不敏感,用来访问和操作数据库。

RDBMS 指的是关系型数据库管理系统。

RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础。

RDBMS 中的数据存储在被称为表(tables)的数据库对象中。 表是相关的数据项的集合,它由列和行组成。

数据库表

一个数据库通常包含一个或多个表。

每个表由一个名字标识。

表包含带有数据的记录(行)。

列代表字段,行代表记录

SQL 语句

可以把 SQL 分为两个部分:

SQL 中的单引号

SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号

建库

CREATE DATABASE database_name

建表

CREATE TABLE 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)

数据类型

数据类型(data_type)规定了列可容纳何种数据类型。

数据类型 描述
integer(size), int(size), smallint(size), tinyint(size) 仅容纳整数,括号内规定数字的最大位数
decimal(size,d), numeric(size,d) 容纳带有小数的数字。"size" 规定数字的最大位数。"d" 规定小数点右侧的最大位数。
char(size) 容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。在括号中规定字符串的长度。
varchar(size) 容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。
date(yyyymmdd) 容纳日期。

select

where 子句

操作符    描述  
=    等于  
<>    不等于  
> 大于  
<    小于  
>=    大于等于  
<=    小于等于  
BETWEEN    在某个范围内  
LIKE    搜索某种模式  

注意:
不等于号是<>

AND 和 OR 运算符

and 和 or 可以在where 子句中把两个或多个条件结合起来。

ORDER BY 子句

ORDER BY 语句用于根据指定的列对结果集进行排序(默认按照升序--ACS)。

使用 DESC 关键字--降序

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

INSERT INTO

基本语法:

  1. INSERT INTO 表名称 VALUES (值1, 值2,....)

或是指定所要插入数据的列

  1. INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

Update

修改指定列:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 修改指定多列(逗号隔开):
UPDATE 表名称 SET 列名称1 = '新值1', 列名称2 = '新值2' WHERE 列名称 = '某值'

delete

DELETE FROM 表名称 WHERE 列名称 = 值

删除所有行
可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:
DELETE FROM table_name 或者: DELETE * FROM table_name

TOP 子句

TOP 子句用于规定要返回的记录的数目

注释:并非所有的数据库系统都支持 TOP 子句

SELECT TOP 数目|百分比 字段... FROM 表名

实例:
SELECT TOP 2 * FROM Persons
SELECT TOP 50 PERCENT * FROM Persons

LIKE 操作符

用于在 WHERE 子句中搜索列中的指定模式。

SELECT 字段(s) FROM 表名 WHERE 字段 LIKE 模式

通配符

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

示例:

in操作符

in 操作符允许我们在 WHERE 子句中规定多个值。

SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...)

between 操作符

between ... and 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

SELECT column_name(s) FROM 表名 WHERE 字段名 BETWEEN value1 AND value2

Alias(别名)

可以为列名称表名称指定别名(Alias)。

表的 SQL Alias 语法:
SELECT column_name(s) FROM table_name AS alias_name

列的 SQL Alias 语法:
SELECT column_name AS alias_name FROM table_name

别名使查询程序更易阅读和书写

join

join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

SQL 约束

我们将主要探讨以下几种约束:

null

NOT NULL 约束强制列不接受 NULL 值
如果不向字段添加值,就无法插入新记录或者更新记录。

unique 约束

唯一标识数据库表中的每条记录
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

mysql中使用 unique:
MySQL:

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (Id_P)
)

primary key 约束

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (Id_P)
)

表以存在,添加主键的语句:

alter talble Persons add primary key (Id_P)

撤销 primary key 约束,请使用下面的 SQL:

MySQL:  
alter talble Persons drop primary key

foreign key(外键) 约束

一个表中的 foreign key 指向另一个表中的 primary key。

check 约束

check 约束用于限制列中的值的范围
如果对单个列定义 check 约束,那么该列只允许特定的值。 如果对一个表定义 check 约束,那么此约束会在特定的列中对值进行限制。
MySQL示例:

在 "Persons" 表创建时为 "Id_P" 列创建 CHECK 约束。CHECK 约束规定 "Id_P" 列必须只包含大于 0 的整数。
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)
)

Persons表已经存在:
alter table Persons add check (Id_P>0)

default 约束

default 约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新记录。

MySQL:
alter table Persons alter City set default 'SANDNES'

create index 语句

create index 语句用于在表中创建索引

在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

- 您可以在表中创建索引,以便更加快速高效地查询数据。  
- 用户无法看到索引,它们只能被用来加速搜索/查询。
CREATE INDEX index_name
ON table_name (column_name)

可以配合 desc 关键字。实现降序索引

drop 语句

删除索引、表和数据库

mysql删除索引:

alter table table_name drop index index_name

删除数据库 DROP DATABASE 数据库名称

删除表 DROP TABLE 表名称

相关文章推荐: