SQL教程

1 SQL简介

SQL(Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统(RDBMS)。 SQL的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。

1.1 RDBMS

RDBMS 指关系型数据库管理系统,全称 Relational Database Management System。

RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server、IBM DB2、Oracle、MySQL 以及 Microsoft Access。

RDBMS 中的数据存储在被称为表的数据库对象中。

表是相关的数据项的集合,它由列和行组成。

2 SQL语法

2.1 数据库表

一个数据库通常包含一个或多个表。每个表有一个名字标识,表包含带有数据的记录(行)。

SQL对大小写不敏感。

2.2 SQL语句后面的分号

某些数据库系统要求在每条 SQL 语句的末端使用分号。

分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的 SQL 语句。

2.3 一些重要的SQL命令

  • select 从数据库中提取数据

  • update 更新数据库中的数据

  • delete 从数据库中删除数据

  • insert into 向数据库中插入数据

  • create database 创建新数据库

  • alter database 修改数据库

  • create table 创建新表

  • alete table 变更(改变)数据库表

  • drop table 删除表

  • create index 创建索引(搜索键)

  • drop index 删除索引

3 SQL select语句

select语句用于从数据库中选取数据。

3.1 select语法

select语句用于从数据库中选取数据。

结果被存储在一个结果表中,称为结果集。

3.1.1 select 语法

select <字段名> from <表名>;

3.2 select distinct语句

select distinct 语句用于返回唯一不同的值。

在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同的值。

distinct关键词用于返回唯一不同的值。

3.2.1 select distinct语句

select distinct <字段名> from <表名>;

3.3 Where 子句

Where 子句用于过滤记录。

3.3.1 where 子句

where子句用于提取那些满足指定条件的记录。

3.3.2 where 语法

select <字段名> from <表名> [where条件];

3.3.3 文本字段 与 数值字段

SQL使用单引号来环绕文本值(大部分数据库系统也接受双引号)。

如果是数值字段,请不要使用引号。

3.3.4 where 子句中的运算符

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

运算符 描述
= 等于
<> 不等于,注释:在SQL的一些版本中,改操作符可以被写成!=
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
IN 指定针对某个列的多个可能值

4、举例学习mysql

4.1 创建数据库RUNOOB

create database RUNOOB;

4.2 打开RUNOOB数据库

use RUNOOB;

4.3 创建Websites表

 create table Websites (
     id int(8) primary key,
     name varchar(30),
     url varchar(30),
     alexa int(8),
     country char(6)
 );

4.4 在Websites表中输入数据

insert into Websites value (1,"Google","https://www.google.com/",1,"USA"),
     (2,"淘宝","https://www.taobao.com/",13,"CN"),
     (3,"菜鸟教程","https://www.runoob.com/",4689,"CN"),
     (4,"微博","http://www.weibo.com/",20,"CN"),
     (5,"Facebook","https://www.facebook.com/",3,"USA"),
     (6,"百度","https://www.baidu.com/",2,"CN"),
     (7,"stackoverflow","http://stackoverflow.com/",0,"IND");

4.5 查询Websites数据库

select * from Websites;

4.6 创建索引

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

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

注:更新一个包含索引的表需要比更新一个没有索引的表花费更多时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上创建索引。

4.6.1 create index 语法

在表上创建一个简单的索引。允许使用重复的值:

create index index_name
on table_name (column_name);

4.6.2 create unique index 语法

在表上创建一个唯一的索引。不允许使用重复值:唯一的索引意味着两个行不能拥有相同的索引。

create unique index index_name
on table_name (column_name);

注:用于创建索引的语法在不同的数据库中不一样。

4.6.3 create index 实例

在Websites 表中的 “id,name。url” 列创建一个名为 “WIndex” 的索引:

create index WIndex
     on Websites (id,name,url);

5 撤销索引、撤销表 以及 撤销数据库

通过使用 drop 语句,可以轻松地删除索引、表和数据库。

5.1 drop index 语句

drop index 语句用于删除表中的索引。

用于MS SQL server的drop index语法:

drop index table_name.index_name

用于DB2/Oracle 的drop index 语句:

drop index index_name;

用于MySQL 的 drop index语法:

alter table table_name drop index index_name

5.2 drop table 语句

drop table 语句用于删除表。

drop table table_name

5.3 drop database 语句

drop database 语句用于删除数据库。

drop database database_name

5.4 truncate table 语句

如果我们仅仅需要删除表中的数据,但并不删除表本身,那么我们应该使用下面的语法。

truncate table table_name

6 alter table语句

alter table 语句用于在已有的表中添加、删除或修改列。

6.1 alter table 语法

如果在表中添加列,请使用下面的语法进行添加:

alter table table_name
add column_name datatype

如果要删除表中的列,请使用下面的语法:
注意:某些数据库系统不允许在这种数据库中删除列的方式

alter table table_name
drop column column_name

6.2 改变表中的数据类型

如果要改变表中的数据类型,请使用如下方法:

SQL server/MS Access

alter table table_name
alter column column_name datatype

mysql/oracle

alter table table_name
modify column column_name datatype

7 auto increment 字段

auto_increment 会在新纪录插入表中时生成一个唯一的数字。

7.1 auto increment 字段

我们通常希望在每次插入新纪录时,自动地创建主键字段的值。

我们可以在表中创建一个auto-insrement字段。

7.2 用于 mysql 的语法

在 person表中把 “ID” 列定义为auto-insrement 主键字段:

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

其中:
mysql 使用的auto_insrement 关键字来执行 auto_insrement 任务。

默认地,auto_insrement 的开始值是1,每条新纪录递增1.

要让auto_insrement 序列以其他的只开始,请使用下面的SQL 语法:

alter table persons auto_increment=100

7.3 用于 SQL server 的语法

将 persons 表中 “id” 列定义为 auto-insrement 主键字段:

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

MS sql server 使用 identity 关键字来执行 auto-insrement 任务。
在上面的实例中,identity 的开始值是1,每条新纪录递增1。
提示:要规定“ID”雷伊10起始切递增5,请把identity 改为identity(10.5)。

8 视图(views)

视图就是可视化的表。(如何创、更新和删除视图)

8.1 create view 语句

在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。

视图包含行和列,就像一个真是的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。

你可以向视图添加 SQL 函数、where 以及 join语句,也可以呈现数据,就像这些数据来自于某个单一的表一样。

视图的作用:

  • 视图隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系。
  • 视图提供了一个统一访问数据的接口。(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)
  • 从而加强了安全性,使用户只能看到视图所显示的数据。
  • 视图还可以被嵌套,一个视图中可以嵌套另一个视图。

SQL create view 语法

create view view_name as 
select column_name(s)
from table_name
where condition

注释:视图总是显示最新的数据!每当用户查询视图时,数据库引擎通过使用视图的SQL语句重建数据。

8.2 更新视图

create or replace view 语法

CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

8.3 撤销视图

可以通过 drop view 命令来删除视图。

drop view view_name

posted @ 2022-10-28 15:31  空岛迷梦  阅读(1130)  评论(0编辑  收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css