《软件技术基础》之《SQL》

  • SQL
    • SQL简介
    • SQL特性
      • 综合统一
      • 高度非过程化
      • 面向集合的操作方式
      • 以同一种语法结构提供两种使用方法
      • 语言简洁
  • 数据库操作
    • 创建数据库
    • 修改数据库
    • 删除数据库
    • 选择数据库
  • 数据表操作
    • SQL Server的数据类型、功能及特点
    • 创建数据表
    • 修改数据表
    • 删除数据表
  • 数据操作
    • SELECT
    • SELECT DISTINCT
    • WHERE
      • IN
    • ORDER BY
    • 带聚集函数的统计查询
    • GROUP BY
    • HAVING
    • UNION
      • UNION ALL
    • INSERT INTO
    • UPDATE
    • DELETE
  • 视图(Views)
    • CREATE VIEW
    • CREATE OR REPLACE VIEW
    • DROP VIEW
  • 索引
    • 概念
    • 普通索引
      • 创建索引
      • 删除索引
    • 唯一索引
    • 使用ALTER 命令添加和删除索引
    • 显示索引信息

SQL

SQL简介

SQL 是用于访问和处理数据库的标准的计算机语言。

  • SQL,指结构化查询语言,全称是 Structured Query Language;
  • SQL 是一种 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言;
  • SQL 让您可以访问和处理数据库,但SQL决不仅仅是一个查询工具,还用于控制DBMS提供给用户的所有功能;
  • SQL支持三级模式。

SQL特性

综合统一

  • 集DDL、DML、DCL的功能于一体;
  • 可以在运行后根据需要随时修改模式;
  • 数据操作符统一。

高度非过程化

  • 只需提出“做什么”,而无需指明“怎么做”;
  • 无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。

面向集合的操作方式

  • 操作对象和结果均为集合

以同一种语法结构提供两种使用方法

  • 既是自含式语言,又是嵌入式语言。

语言简洁

核心功能只需9个动词:

  • DDL:CREATE、DROP、ALTER
  • DML: SELECT、INSERT、UPDATE、DELETE
  • DCL:GRANT、REVOKE

数据库操作

数据库是包含多个对象的集合,包含了相关的基表、视图、索引、存储过程、与数据库安全性有关的控制机制及其他对象。
SQL SERVER使用一组操作系统文件映射数据库。所有数据和对象(如表、视图等)都存储3种操作系统文件中:

  • 主文件:扩展名为mdf,包含数据库的启动信息及数据信息。每个数据库都有一个主文件。
  • 次要文件(从文件):扩展名为ndf,含有主文件以外的所有数据。作用是提高数据访问效率。
  • 事务日志:扩展名为ldf,包含用于恢复数据库的日志信息。每个数据库都必须至少有一个日志文件。

创建数据库

为了创建数据库,用户必须是系统管理员或者被授权使用CREATE DATABASE语句,语法形式如下:

CREATE DATABASE <数据库名>
[<On Primary>
% 一个数据库可建多个档案文件,主档案文件是会有一个,默认在主档案文件
([Name = 系统使用的逻辑名],
[Filename = 完全限定的NT Server文件名],
[Size = 文件的初始大小],
[MaxSize = 最大的文件尺寸],
[FileGrowth = 系统的扩展文件量])…]
[<Log On>
([Name = 系统使用的逻辑名],
[Filename = 完全限定的NT Server文件名],
[Size = 文件的初始大小],
[FileGrowth = 系统的扩展文件量])]

修改数据库

语法形式如下:

ALTER DATABASE <数据库名>
[<Add File>
(<Name = 系统使用的逻辑名>,
[Filename = 完全限定的NT Server文件名],
[Size = 文件的初始大小],
[MaxSize = 最大的文件尺寸],
[FileGrowth = 系统的扩展文件量])…]
[<Modify File>
(<Name = 系统使用的逻辑名>,
[Filename = 完全限定的NT Server文件名],
[Size = 文件的初始大小],
[MaxSize = 最大的文件尺寸],
[FileGrowth = 系统的扩展文件量])…]
[<Remove File> <系统使用文件的逻辑名>,…]
[<Add Log File>
(<Name = 系统使用的逻辑名>,
[Filename = 完全限定的NT Server文件名],
[Size = 文件的初始大小],
[MaxSize = 最大的文件尺寸],
[FileGrowth = 系统的扩展文件量])…]

删除数据库

语法形式如下:

DROP DATABASE 需要删除的数据库名

数据库删除之后,该数据库的文件及其数据都从服务器的磁盘删除。当数据库被删除,它即被永久删除,并且不能进行检索,除非使用以前的备份。
不能删除系统数据库msdb,master,model和tempdb。

选择数据库

语法形式如下:

USE 数据库名

数据表操作

SQL Server的数据类型、功能及特点




菜鸟教程:MySQL 数据类型

创建数据表

以下为创建MySQL数据表的SQL通用语法:

CREATE TABLE table_name (column_name column_type);

举例:

CREATE TABLE IF NOT EXISTS `runoob_tbl`(`runoob_id` INT UNSIGNED AUTO_INCREMENT,`runoob_title` VARCHAR(100) NOT NULL,`runoob_author` VARCHAR(40) NOT NULL,`submission_date` DATE,PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

解析:

  • 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错;
  • AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1;
  • PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔;
  • ENGINE 设置存储引擎,CHARSET 设置编码。

修改数据表

语法格式:

ALTER TABLE 〈表名〉
[ ALTER COLUMN <列名> <数据类型>],
[ ADD <新列名> <数据类型> <约束规则>],
[ DROP <列名>],
[ DROP <约束规则>];
  • <表名>:要修改的基本表;
  • ADD子句:增加新列和新的完整性约束条件;
  • DROP子句:删除指定的完整性约束条件;
  • ALTER子句:用于修改列名和数据类型。

注意:
使用ALTER TABLE语句在表中增加列,如果新增列定义为NOT NULL列,必须用Default子句指定缺省值,否则,没有指定缺省值,当给表增加新列时,表中原有记录的新增列将自动为NULL,这样就会违背NOT NULL的定义而出错。

删除数据表

以下为删除MySQL数据表的通用语法:

DROP TABLE table_name ;

数据操作

SELECT

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

SELECT column_name,column_name FROM table_name;

SELECT * FROM table_name;

菜鸟教程:表的别名

SELECT DISTINCT

在表中,一个列可能会包含多个重复值,有时您也许希望仅仅列出不同(distinct)的值。
DISTINCT 关键词用于合并查询结果中的重复记录,返回唯一不同的值。

SQL SELECT DISTINCT 语法:

SELECT DISTINCT column_name,column_name FROM table_name;

WHERE

WHERE 子句用于提取那些满足指定条件的记录。
SQL WHERE 语法:

SELECT column_name,column_name FROM table_name
WHERE column_name operator value;

WHERE 子句中的运算符:

条件运算符的优先级顺序:

横向同行优先级相同,在具体的运算表达式中在左边者优先。
如有括号则括号优先。

IN

IN 操作符允许您在 WHERE 子句中规定多个值。
SQL IN 语法:

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

举例:

ORDER BY

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

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

SQL ORDER BY 语法:

SELECT column_name,column_name FROM table_name
ORDER BY column_name,column_name ASC|DESC;

带聚集函数的统计查询

GROUP BY

GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组。

SQL GROUP BY 语法:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

举例:

HAVING

HAVING 子句可以让我们筛选分组后的各组数据。

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。

SQL HAVING 语法:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;

举例:

UNION

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

SQL UNION 语法:

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

举例:

UNION ALL

SQL UNION ALL 语法:

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

举例:

INSERT INTO

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

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

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

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

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

举例:

UPDATE

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

SQL UPDATE 语法:

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

举例:

DELETE

DELETE 语句用于删除表中的行。

SQL DELETE 语法:

DELETE FROM table_name
WHERE some_column=some_value;

举例:

视图(Views)

在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。

视图的特点

  • 虚表,是从一个或几个基本表(或视图)导出的表;
  • 只存放视图的定义,不会出现数据冗余;
  • 基表中的数据发生变化,从视图中查询出的数据也随之改变;
  • 当视图建立后,用户可以象基表一样对视图进行数据查询,在某些特殊情况下,还可以对视图进行修改和插入操作。

视图的作用

  • 视图能够简化用户的操作;
  • 视图使用户能以多种角度看待同一数据;
  • 视图能够对机密数据提供安全保护;
  • 利用视图可以清晰地表达查询;
  • 视图对重构数据库提供了一定程度的逻辑独立性。
    视图的优点
  • 限制用户直接存取基表的某些列或记录,从而为基表带来附加的安全性;
  • 视图可定义在多个基表上或其他视图上,通过视图可得到多个表经计算后的数据,从而隐藏数据的复杂性。

视图的缺点

  • 增加了数据库的维护成本;
  • 视图只是简化了查询,但是并不能加快查询的速度。

CREATE VIEW

SQL CREATE VIEW 语法:

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

举例:

CREATE OR REPLACE VIEW

SQL CREATE OR REPLACE VIEW 语法:

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

DROP VIEW

SQL DROP VIEW 语法:

DROP VIEW view_name

举例:

索引

概念

索引类似于词典的索引,索引是关于数据位置信息的关键字表。数据库中的索引是一个表中所包含的值的列表,其中注明了表中包含各个值的记录所在的存储位置。索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

索引由DBMS内部实现,属于内模式范畴。


索引的优点
数据库系统检索数据时,根据索引提供的信息,可以直接找到与该条件临近的数据区,而不是一条一条记录地比较,因此可提高查询速度

索引的缺点
虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。

普通索引

创建索引

这是最基本的索引,它没有任何限制。它有以下几种创建方式:

CREATE INDEX indexName ON mytable(username(length));

如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定 length。

或者创建表的时候直接指定:

CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
INDEX [indexName] (username(length))
);

修改表结构(添加索引):

ALTER table tableName ADD INDEX indexName(columnName)

删除索引

DROP INDEX [indexName] ON mytable;

唯一索引

它与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:

CREATE UNIQUE INDEX indexName ON mytable(username(length))

或者创建表的时候直接指定:

CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
UNIQUE [indexName] (username(length))
);

修改表结构:

ALTER table mytable ADD UNIQUE [indexName] (username(length))

使用ALTER 命令添加和删除索引

有四种方式来添加数据表的索引:

ALTER TABLE tbl_name ADD PRIMARY KEY (column_list)

该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。

ALTER TABLE tbl_name ADD UNIQUE index_name (column_list)

这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。

ALTER TABLE tbl_name ADD INDEX index_name (column_list)

添加普通索引,索引值可出现多次。

ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list)

该语句指定了索引为 FULLTEXT ,用于全文索引。

显示索引信息

使用 SHOW INDEX 命令来列出表中的相关的索引信息。可以通过添加 \G 来格式化输出信息。

SHOW INDEX FROM table_name; \G

《软件技术基础》之《SQL》相关推荐

  1. 语C、耽美、盲盒、Lolita……这些95后文化,你看懂了吗?

    作者:闫丽娇,编辑:阿伦,本文经授权转载自公众号燃财经(rancaijing) 当炒鞋.炒盲盒等话题不断升温,当语C.耽美等词汇频频出现,当Soul.最右等App的用户越来越多,主导创新经济的创业者和 ...

  2. 耽美是女性调节大脑反应的潜在性吸引力

    文章来源于微信公众号(茗创科技),欢迎有兴趣的朋友搜索关注. 耽美泛指漫画和文学作品里的美男以及发生在他们之间的爱情.这是一种以女性为主要创作和受众的潮流.虽然这种亚文化广泛流行,但目前尚缺乏可靠方法 ...

  3. 如何利用网络信息处理规范耽美文学并给读者带来更好的阅读体验

    一.当今大学生对耽美文学态度的调查报告 1.调查时间:11月22号 2.地点:电子科技大学清水河校区品学楼和立人楼附近 3.调研人员:杨佳鑫,吴婧,杨金山,石汭其,朱心成 4.调研数据: (1)总参与 ...

  4. 太吾绘卷第一世攻略_耽美推文-BL-仿佛在攻略一只河豚

    目录:<全能攻略游戏>by公子如兰 <无限升级游戏>by暗夜公主 <无限游戏>BY SISIMO <请听游戏的话>by木兮娘 <游戏,在线直播&g ...

  5. 一个做耽美漫画的内容网站源码解析过程,讲解他的框架和功能实现

    这里讲的是43321漫画网源码,采用的是thinkphp6开发,Nginx构架 php7.0环境和mysql应用数据库 漫画站重要的是前后端分离和内容管理系统 而thinkphp拥有强大的控制器和模板 ...

  6. “耽改”热中的“腐文化”!为我开启创意者和教育者的,Adobe国际认证旅程

    原标题:"耽改"热中的"腐文化"!为我开启创意者和教育者的,Adobe国际认证旅程. "耽美"一词产生于20世纪二三十年代的日本,原指&qu ...

  7. 【美少女】四面温柔攻,一人血书跟腾讯傲娇受组成cp可以吗?

    编辑于2020-3-20 笔试做完之后,温柔小哥部门的流程又衔接了起来,来自杭州的0571它又来了,接电话的这个小哥又是个温柔小哥,<论四轮面试的面试官都是温柔朝气小哥是一种什么体验>,面 ...

  8. 爱优腾火力聚焦耽改101,2021能否续写出圈神话?

    文/ 螳螂财经(ID:TanglangFin) 作者/ 伊宁 要想红,演耽改.这已成为男明星们心照不宣的一条青云路. 自14年第一部耽美小说被搬上银幕以来,据不完全统计共有24部耽改网络剧已在各大平台 ...

  9. 什么吃掉了你的执行力?在浮躁中求解

    http://www.36kr.com/p/213023.html 编者按:"职责越多,执行力越弱?"本文作者为移动创作及阅读应用"汤圆"市场部钱婧(微信:gr ...

  10. 值得和孩子一起看的100部BBC经典纪录片

    --------------------- 作者:King-Blog 来源:CSDN 原文:https://blog.csdn.net/qq1175421841/article/details/523 ...

最新文章

  1. linux中错误日志等级
  2. 分布式任务分发框架Gearman测试、性能监控、队列持久化【python 实例】
  3. linux文件统计命令,linux文件统计命令和目录统计命令
  4. 由oschina.neT了解到博客备份的代码
  5. Ubuntu 18.0安装教程
  6. jsapi.php 参数设置,统一支付接口中,缺少必填参数openid!trade_type为JSAPI时,openid为必填参数!...
  7. Sql Server临时表获取链接数据库查询结果
  8. opencl初探-sobel检测
  9. Lua,LuaJIT,Luarocks的安装与配置-史上最详细【Linux】
  10. 个人信息保护法应加速制定
  11. 微商新手如何选产品?史上最详细操作指南!
  12. JavaWeb相关知识和技巧概括
  13. 华为机试:统计射击比赛成绩
  14. java入门拼图小游戏_【java】JavaFX从零开始实现拼图小游戏
  15. 微信小程序开发者工具使用vant组件
  16. 【官方文档】Fluent Bit 简介
  17. java---File类笔记(简单介绍)
  18. word论文页眉的横线怎么删除去掉
  19. 毫秒级返回数据,TDengine 在大疆车载智能驾驶云端平台上的应用
  20. 如何安装 Composer

热门文章

  1. CSDN 周赛37期题解
  2. 油猴脚本的安装及使用教程
  3. 多智能体强化学习之QMIX
  4. python实现 政府工作报告词云的生成(嵩天老师)
  5. 电话机器人详解,电销机器人获客的正确姿势是什么?
  6. dbeaver工具连接DB2数据库
  7. 学成在线,全部流程图
  8. 赵海英《C语言精讲》,《数据结构》
  9. Latex 中设置 表格字体大小,行间距 等
  10. loading页面加载(等待页面加载完毕再隐藏loading页面)