SQL 简介

SQL 是 Structured Query Language(结构化查询语言)的缩写,用于管理关系数据库;包含数据库模式创建和修改、数据的访问控制:插入、查询、更新和删除等操作。

用途

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

    特性

  • 标准的计算机语言

  • 对大小写不敏感
  • ;表示结束,可分成多行以便于阅读和调试
  • 自上而下执行

    概念

    | 数据库(database) | 保存有组织的数据的容器 | | —- | —- | | 表(table) | 某种特定类型数据的结构化清单 | | 模式(schema) | 关于数据库和表的布局及特性的信息 | | 列(column) | 表中的一个字段,所有表都是由一个或多个列组成 | | 数据类型(datatype) | 所容许的数据的类型 | | 行(row) | 表中的一个记录 | | 主键(primary key) | 一列(或一组列),其值能够唯一区分表中每个行 | | 外键(foreign key) | 表中的一列,它包含另一个表的主键值,定义了两个表之间的关系 | | 子句(clause) | SQL 语句由子句构成,有些子句是必需的,有些是可选的,比如 select 语句的 from 子句 |

主键

不更新主键列中的值;
不重用主键列的值;
不在主键列中使用可能会更改的值。

SQL 语句

连接数据库

  1. mysql -uroot -p
  2. show full processlist
  3. explain
  4. ALTER TABLE employee ADD COLUMN Ethnic_Groups char(6) DEFAULT NULL COMMENT '民族' AFTER Sex;

数据库表

CREATE DATABASE 创建新数据库
ALTER DATABASE 修改数据库
CREATE TABLE 创建新表
ALTER TABLE 变更(改变)数据库表
DROP TABLE 删除表

增删改查

INSERT INTO 向数据库中插入新数据
DELETE 从数据库中删除数据
UPDATE 更新数据库中的数据
SELECT 从数据库中提取数据

增加

INSERT INTO 语句用于向表中插入新记录,有两种编写形式:

  1. INSERT INTO 表名
  2. VALUES (数据1,数据2,数据3,...);
  1. INSERT INTO 表名 (列1,列2,列3,...)
  2. VALUES (数据1,数据2,数据3,...);

删除

DELETE 语句用于删除表中的行,使用时要慎重,没有撤销操作

  1. DELETE FROM 表名
  2. WHERE 列=数据;

修改

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

  1. UPDATE 表名
  2. SET 1=新数据,列2=新数据,...
  3. WHERE 列=数据;
  4. #例如:
  5. UPDATE employee SET Office="青网科技园" WHERE Office="合肥";

查询

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

  1. SELECT * FROM 表名;
  1. SELECT 1,列2
  2. FROM 表名;
  1. SELECT * FROM employee;
  2. SELECT Employee_Name,Sex FROM employee WHERE Office="中科大厦";

SELECT DISTINCT 语句用于返回唯一不同的值,去重

  1. SELECT DISTINCT 1,列2
  2. FROM 表名;

其他语句

WHERE

WHERE 子句用来指定满足条件的记录,省略所有的记录都会受影响

  • 文本需要使用引号包括
  • 可以使用运算符、函数

    运算符

    | = | 等于 | | —- | —- | | <> | 不等于(!=) | | > | 大于 | | < | 小于 | | >= | 大于等于 | | <= | 小于等于 | | BETWEEN | 在某个范围内 | | LIKE | 搜索某种模式 | | IN | 指定针对某个列的多个可能值 | | AND | 两个条件都得满足 | | OR | 满足其中一个就行 |

IS (NOT) NULL

是(否)为空值,=&<>!=不能用来判断NULL

  1. SELECT
  2. FROM 表名
  3. WHERE IS (NOT) NULL;

BETWEEN AND

使用BETWEEN m AND n指定所需范围的开始值和结束值,进行范围限定,m<n

IN & OR

IN操作符后接()里面的每个条件进行匹配,如果只有两个条件可用 OR 代替

  1. SELECT
  2. FROM 表名
  3. WHERE IN (a,b,c);

NOT

否操作符,跟上述两个操作一起使用,对条件取反

LIKE 操作符

  • %表示任意多个字符,包括没有字符(无法匹配NULL的)
  • _表示任意单个字符
  • 可以使用\进行转义

    正则表达式

    正则表达式中转译使用 \
    1. SELECT
    2. FROM 表名
    3. WHERE REGEXP 'regexp';

    ORDER BY

    1. SELECT 1,列2
    2. FROM 表名
    3. ORDER BY 1,列2 ASC|DESC;

    LIMIT

    限制运行结果
    1. SELECT DISTINCT 1,列2
    2. FROM 表名
    3. LIMIT 数字;