Akagi201
8/10/2014 - 2:42 PM

SQL.md

Structured Query Language: 结构化查询语言

  • SQL是一个ANSI标准计算机语言, 设计用来访问, 操作数据库系统.
  • 几乎所有现今的关系型数据库软件(MySQL, MS Access, DB2, Informix, MS SQL Server, Oracle, Sybase等等)都使用SQL进行查询, 管理及常用操作.

SQL能做什么?

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

不标准

  • 不幸地是, 存在着很多不同版本的SQL语言, 但是为了与ANSI标准相兼容, 它们必须以相似的方式共同地支持一些主要的关键词(比如: SELECT, UPDATE, DELETE, INSERT, WHERE等等).
  • 除了SQL标准之外, 大部分SQL数据库程序都拥有它们自己的私有扩展!

数据

  • 数据在数据库中使用表格形式保存.
  • 使用SQL语句从表中获取信息: SELECT * FROM ic_course;

SQL语言分类

  • DDL - Data Definition Language CREATE ALTER DROP RENAME

  • DML - Data Manipulation Language SELECT INSERT UPDATE DELETE

  • DCL - Data Control Language GRANT REVOKE

  • TCL - Transaction Control COMMIT SAVEPOINT ROLLBACK

数据库管理

  1. 创建数据库 CREATE DATABASE linuxcast;

  2. 删除数据库 DROP DATABASE linuxxast;

  3. 重命名数据库(只在mysql的一个版本可用) RENAME DATABASE linuxcast TO lcdb;

数据表格

  • 数据以表格形式保存
  • 每一列是一个属性.
  • 每一行是一条记录.

数据类型

  • 每个列(属性)以特定数据类型保存, 常见数据类型如下:
数据类型用途
integer(size), int(size), smallint(size), tinyint(size)存储整数数据
decimal(size), numeric(size)存储浮点数数据
char(size)存储固定长度字符串
verchar(size)存储可变长度字符串
date(yyyymmdd)存储日期

创建表格

CREATE TABLE 表名称{
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
...
};

查看表结构

  • 我们通过以下命令查看一个表的结构: DESCRIBE lc_course;
  • 删除一个表格: DROP TABLE lc_course;

修改表

  • 重命名表名: ALTER TABLE lc_courese RENAME course;
  • 向表中添加一列: ALTER TABLE lc_course ADD link varcher(100);
  • 删除表中一列: ALTER TABLE lc_course DROP COLUMN link;
  • 修改一个列的数据类型: ALTER TABLE lc_course MODIFY teacher varcher(100);
  • 重命名一个列: ALTER TABLE lc_course CHANGE COLUMN teacher lecture varchar(100);

向表格中插入数据

  • 向表格中插入一条记录: INSERT INTO 表名称 VALUES (值1,值2, ...); 或者 INSERT INTO 表名称 (列1, 列2) VALUES (值1, 值2); 数字不需要单引号, 其他要用单引号引起来.

查询数据

  • 从表格中查询记录: SELECT 列名称1, 列名称2 ... FROM 表名称;SELECT * FROM 表名称;

按条件查询数据

  • 从表格中按条件查询一条记录: SELECT 列名称 FROM 表名 WHERE 列 运算符 值;

SQL WHERE支持的运算符

运算符功能
=等于
<>不等于
>大于
<小于
>=大于等于
<=小于等于
BETWEEN在某范围内
LIKE搜索某种模式

删除一条记录

  • 从表格中删除一条记录: DELETE FROM 表名称 WHERE 列 运算符 值;DELETE * FROM 表名称;

更新一条记录

  • 从表格中更新一条记录: UPDATE 表名称 SET 列名称 = 新值 WHERE 列=值;

Distinct

  • 删除返回结果的重复项: SELECT DISTINCT 列名称 FROM 表名称;

AND & OR

  • WHERE 条件中使用逻辑组合: SELECT * FROM 表名称 WHERE 条件1 AND 条件2;SELECT * FROM 表名称 WHERE 条件1 OR 条件2;

对结果进行排序

  • 对查询结果按指定列进行排序: SELECT * FROM 表名称 ORDER BY 列名称;SELECT * FROM 表名称 ORDER BY 列名称 DESC;