SQL基础教程详解

SQL简介


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

SQL是什么?

  • SQL指结构化查询语言,全称是Structured Query Language。
  • SQL可以访问和处理数据库,包括数据插入、查询、更新和删除
  • SQL在1986年成为 ANSI(American National Standards Institute 美国国家标准化组织)的一项标准,在 1987 年成为国际标准化组织(ISO)标准。

SQL能做什么?

  • SQL面向数据库执行查询、存取数据
  • SQL可以在数据库中插入、更新、删除记录
  • SQL可以创建新的数据库并在数据库中建立新表和存储过程
  • SQL可以在数据库中创建视图,设置表、存储过程中和视图的权限

在您的网站中使用SQL,要创建一个显示数据库中数据的网站,您需要:

  • RDBMS数据库程序(比如 MS Access、SQL Server、MySQL)
  • 使用服务器端脚本语言,比如PHP或ASP
  • 使用SQL来获取您想要的数据
  • 使用HTML/CSS

RDBMS

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

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

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

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

SQL语法


数据库表

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

SQL语句

SELECT *FROM Websites;

SQL语句后面的分号?

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

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


一些比较重要的SQL命令

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

SQL SELECT语句

SELECT语句用于从数据库中选取数据,将结果存储在一个结果表中,称为结果集。

SQL SELECT语法

SELECT colum1,colum2,....
FROM table_name;

或者

SELECT *FROM table_name;

参数说明:

  • column1, column2, ...:要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
  • table_name:要查询的表名称

示例演示:

以下为某小学部分学生信息表,表名为Student

学号(id)姓名(name)年级(grade)班级(class)学科(course)
1204小红二年级三班数学
1205小兰三年级一班语文
1206小艾二年级二班数学
1207小粉一年级一班语文

下面的SQL语句从"Student"表中选取"name"和"class"列

SELECT name,class FROM Student;

输出结果为:

姓名(name)班级(class)
小红三班
小兰一班
小艾二班
小粉一班

在上述表格中选取所有的列:

SELECT *FROM Student;

输出结果为:

学号(id)姓名(name)年级(grade)班级(class)学科(course)
1204小红二年级三班数学
1205小兰三年级一班语文
1206小艾二年级二班数学

1207

小粉一年级一班

语文

SQL SELECT DISTINCT语句


 SELECT DISTINCT语句用于返回唯一不同的值(通俗来讲就是去掉选取的对象中重复的值)。


SELECT DISTINCT语法:

SELECT DISTINCT column1, column2, ...
FROM table_name;

参数说明:

  • column1,column2,.....要选择的字段名称,可以为多个字段。如果不指定字段名称,则回选择所有字段。
  • table_name:要查询的表名称。

示例:在Student表中,筛选出班级(class)中唯一不同的值,也就是去掉“class”中的重复值

SELECT DISTINCT class FROM Student;

输出结果:

班级(class)
三班
一班
二班

SQL WHERE 子句


WHERE子句用于过滤记录。,提取出满足条件的记录。


WHERE语法:

SELECT column1,column2,...
FROM table_name
WHERE condition;

参数说明:

  • column1, column2, ...:要选择的字段名称,可以为多个字段。如果不指定字段名称,则会选择所有字段。
  • table_name:要查询的表名称。

演示说明,此处我们继续使用Student表的数据

从Student表中筛选出班级为一班的学生姓名:

SELECT name FROM Student WHERE class="一班";

执行输出结果:

姓名(name)班级(class)
小蓝一班
小粉一班

文本字段VS.数值字段

SQL使用单引号来环绕文本值(大部分数据库系统也接受双引号),在上个实例中"一班"文本字段使用了双引号,但是如果是数值字段,请不要使用引号。

示例:

SELECT *FROM Student WHERE id=1204

执行输出结果

学号(id)姓名(name)年级(grade)班级(class)学科(course)
1204小红二年级三班数学
 WHERE子句中的运算符

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

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

SQL AND &OR运算符


AND & OR运算符用于基于一个以上的条件对记录进行过滤。

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

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


演示示例

我们在Student表中再添加一列学生的成绩,新表如下所示:

学号(id)姓名(name)年级(grade)班级(class)学科(course)成绩(score)
1204小红二年级三班数学98
1205小兰三年级一班语文88
1206小艾二年级二班数学92
1207小粉一年级一班语文90
AND运算符实例

下面的SQL语句是从Student表中选取班级为二年级且成绩大于95的学生。

SELECT *FROM Student
WHERE grade='二年级'
AND score >95;

执行输出结果:

学号(id)姓名(name)年级(grade)班级(class)学科(course)成绩(score)
1204小红二年级三班数学98
OR运算符实例

下面的SQL语句从Student表中选取年级为“二年级”或者“三年级”的所有学生

SELECT * FROM Student
WHERE grade='二年级'
OR grade='三年级';

输出执行结果:

学号(id)姓名(name)年级(grade)班级(class)学科(course)成绩(score)
1204小红二年级三班数学98
1205小兰三年级一班语文88
1206小艾二年级二班数学92
结合AND&OR

也可以把AND和OR结合起来(使用圆括号来组成复杂的表达式)。

下面的SQL语句从Student表中选取成绩大于90且班级为一班或者二班的学生信息。


SELECE *FROM Student
WHERE score>90
AND(class='一班' OR '二班');

执行输出结果:

学号(id)姓名(name)年级(grade)班级(class)学科(course)成绩(score)
1206小艾二年级二班数学92
1207小粉一年级一班语文90

SQL ORDER BY关键字


ORDER BY 关键字用于对结果集进行排序。

ORDER BY 关键字用于对结果集按照一个列或多个列进行排序。

ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,可以使用DESC关键字。


SQL ORDER BY 语法

SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
  • column1,column2,...要排序的字段名称,可以为多个字段。
  • ASC:表示按升序排序。
  • DESC:表示按降序排序。

演示数据库

此处我们继续使用Student表中数据。

ORDER BY 实例

下面的SQL语句从Student表中选取所有学生信息,并按照成绩升序排序:

SELECT *FROM Student
ORDER BY score;

执行输出结果:

学号(id)姓名(name)年级(grade)班级(class)学科(course)成绩(score)
1204小红二年级三班数学98
1206小艾二年级二班数学92
1207小粉一年级一班语文90
1205小兰三年级一班语文88
ORDER BY DESC 实例

下面的SQL语句从Student表中选取所有学生信息,并按照学号降序排序:

SELECT * FROM Student
ORDER BY id DESC;

执行输出结果:

学号(id)姓名(name)年级(grade)班级(class)学科(course)成绩(score)
1207小粉一年级一班语文90
1206小艾二年级二班数学92
1205小兰三年级一班语文88
1204小红二年级三班数学98
ORDER BY 多列

下面的SQL语句从Student表中选取所有学生信息,并按照年级和班级排序:

SELECT * FROM Student
ORDER BY grade,class; 

执行输出结果:

学号(id)姓名(name)年级(grade)班级(class)学科(course)成绩(score)
1207小粉一年级一班语文90
1206小艾二年级二班数学92
1204小红二年级三班数学98
1205小兰三年级一班语文88

SQL INSERT INTO 语句


INSERT INTO 语句用于向表中插入新记录。

INSERT INTO语句可以有两种编写形式,第一种形式无需指定要插入数据的列名,只需提供被插入的值即可。

INSERT INTO table_name
VALUES(value1,value2,value3,...);

第二种形式需要指定列名及被插入的值:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

参数说明:

  • table_name:需要插入新记录的表名。
  • column1, column2, ...:需要插入的字段名。
  • value1, value2, ...:需要插入的字段值。

演示数据库

INSERT INTO 实例

假设我们要在Student表中插入一个新行,可以使用下面的语句

INSERT INTO Student (name, grade, class,course,score)
VALUES ('小紫','二年级','一班','语文','95');

执行以上SQL,再次读取"Student"表,数据如下所示:

学号(id)姓名(name)年级(grade)班级(class)学科(course)成绩(score)
1204小红二年级三班数学98
1205小兰三年级一班语文88
1206小艾二年级二班数学92
1207小粉一年级一班语文90
1208小紫二年级一班语文95

注意:id列是自动更新的,表中的每条记录都有一个唯一的数字。

SQL UPDATE语句


UODATE语句用于更新表中已存在的记录。


SQL UPDATE语法

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

参数说明:

  • table_name:要修改的表名称。
  • column1, column2, ...:要修改的字段名称,可以为多个字段。
  • value1, value2, ...:要修改的值,可以为多个值。
  • condition:修改条件,用于指定哪些数据要修改。

lamp

请注意 SQL UPDATE 语句中的 WHERE 子句!
WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新

 演示数据库

我们将继续使用Student表进行数据演示。

SQL UPDATE 实例

假设我们要将小兰的成绩改为95,学科改为数学。

UPDATE Student
SET SCORE='95',COUESR='数学'
WHERE name='小兰';

执行以上SQL,再读取表格,数据如下所示:

学号(id)姓名(name)年级(grade)班级(class)学科(course)成绩(score)
1204小红二年级三班数学98
1205小兰三年级一班数学95
1206小艾二年级二班数学92
1207小粉一年级一班语文90
1208小紫二年级一班语文95

警告!

在更新记录表时,我们如果省略了WHERE语句,如下所示:

UPDATE Student
SET score='95',course='数学'

执行以上代码会将Student表中所有的数据的score改为95,course改为数学。

SQL DELETE 语句


DELETE语句用于删除标总的行记录。


SQL DELETE语法

DELETE FROM table_name
WHERE condition;

参数说明:

  • table_name:要删除的表名称。
  • condition:删除条件,用于指定哪些数据要删除。
SQL DELETE 实例

假设我们要从Student表中删除名为”小粉"且成绩在90分以上的信息。

DELETE FROM Student
where name='小粉'AND score>'90';

执行以上结果,重新读取Student表,数据如下所示:

学号(id)姓名(name)年级(grade)班级(class)学科(course)成绩(score)
1205小兰三年级一班语文88

注释:在删除记录时要格外小心!因为您不能重来!在写删除代码时,WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除!

SQL入门教程到这里就结束啦,更多精彩内容敬请期待吧!!!!!码字不易,希望可以一键三连哦!!!

  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值