1. 前言

一般日常数据库工作会经常使用到增删改查,这里我们就来记录下他们的基础语法

2. 简介

SQL是结构化查询语言,可以使我们有能力访问数据库,是一门 ANSI(美国国家标准化组织) 的标准计算机语言,用来访问和操作数据库系统。

市面上有很多数据库如MySQL、SQL Server、Oracle等,这样就会存在着很多不同版本的 SQL 语言, 但是在ANSI标准下,它们会有相同的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等), 除了标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展.

3. SQL语法

SQL 对大小写不敏感。一些数据库系统要求在每条 SQL 语句的末端使用分号,分号是在数据库系统中分隔每条 SQL 语句的标准方法。

SQL数据定义定义语言

CREATE DATABASE - 创建新数据库

ALTER DATABASE - 修改数据库

CREATE TABLE - 创建新表

ALTER TABLE - 变更(改变)数据库表

DROP TABLE - 删除表

CREATE INDEX - 创建索引(搜索键)

DROP INDEX - 删除索引

数据操作语言

SELECT - 从数据库表中获取数据

UPDATE - 更新数据库表中的数据

DELETE - 从数据库表中删除数据

INSERT INTO - 向数据库表中插入数据

互联网上很多功能的实现离不开SQL的参与, 如本文档页面访问接口是用go语言实现的,页面上的访问数量是用数据库mysql存储的,下面是面访问数记录表结构:

CREATE TABLE `counter` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(36) DEFAULT NULL COMMENT '页面名称',
  `url` varchar(255) NOT NULL COMMENT '链接',
  `num` int(11) DEFAULT '0' COMMENT '访问数',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx_url` (`url`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=413 DEFAULT CHARSET=utf8mb4 COMMENT='页面访问数记录';

页面访问记录IP表结构:

CREATE TABLE `counter_ip` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `counter_id` int(11) NOT NULL,
  `ip` varchar(20) NOT NULL,
  `url` varchar(255) DEFAULT NULL,
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_counter_id` (`counter_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=7780 DEFAULT CHARSET=utf8mb4 COMMENT='页面访问记录IP表';

4. select

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

SELECT column_name FROM table_name;
SELECT * FROM table_name;

5. select distinct

用于返回唯一不同的值

SELECT DISTINCT a, b FROM table_name;

DISTINCT 必须写在字段最前面,会影响后面所有字段,搜索的字段组合成唯一的

6. where

用于帅选记录

如需在满足一定条件下地从表中获取数据:

SELECT column_name FROM table_name WHERE column_name operator value;
运算符operator

= 等于

<> 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=

> 大于

< 小于

>= 大于等于

<= 小于等于

BETWEEN 在某个范围内

LIKE 搜索某种模式

IN 指定针对某个列的多个可能值

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

实列

SELECT url,num FROM counter WHERE num > 100 AND url = '/doc/file/';

7. and & or

AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来.

AND 两边条件都要成立

OR 两边有一个成立就可

8. order by

用于对结果集进行排序。默认按照升序(ASC)对记录进行排序,降序可用 DESC 关键字。

如对页面访问记录表进行降序查询

SELECT url, num FROM counter ORDER BY num DESC;

可接受多个排序

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

9. insert into

INSERT INTO 语句用于向表中插入新的行。

INSERT INTO 语句可以有两种编写形式。

第一种无需指定要插入数据的列名,只需提供被插入的值即可 (这种VALUES要列出插入行的每一列数据)

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

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

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

如增加本页面的访问数量记录counter表

insert into counter (name,url) values ('SQL基础','/SQL/SQL基础.html');

10. update

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

UPDATE table_name SET column=value,... WHERE column=value;

如更新记录counter表url

update counter set url = '/doc/file/SQL/SQL基础.html' where id = 1;

11. delete

用于删除表中的行。

DELETE FROM table_name WHERE column=value;

不带where,可删除所有行,表的结构、属性和索引都是完整的

DELETE FROM table_name;
DELETE * FROM table_name;
Copyright © yzx该文章修订时间: 2021-11-02 21:22:55

results matching ""

    No results matching ""