SQL 中文文档

1 简介

1.1 数据库和 SQL 概念
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它的产生距今已有六十多年。随着信息技术和市场的发展,数据库变得无处不在:它在电子商务、银行系统等众多领域都被广泛使用,且成为其系统的重要组成部分。

数据库用于记录数据,使用数据库记录数据可以表现出各种数据间的联系,也可以很方便地对所记录的数据进行增、删、改、查等操作。

结构化查询语言(Structured Query Language)简称 SQL,是上世纪 70 年代由 IBM 公司开发,用于对数据库进行操作的语言。更详细地说,SQL 是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统,同时也是数据库脚本文件的扩展名。

1.2 MySQL 介绍
MySQL 是一个 DBMS(数据库管理系统),由瑞典 MySQLAB 公司开发,目前属于 Oracle 公司,MySQL 是最流行的关系型数据库管理系统(关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发者都选择 MySQL 作为网站数据库。MySQL 使用 SQL 语言进行操作。

2 SQL表创建

2.1实际中使用,连接database->sql 操作

Linux
# 打开 MySQL 服务
sudo service mysql start

#使用 root 用户登录,密码为空
mysql -u root

---------------------------------------------
SQL
# 创建一个database 名字mysql
CREATE DATABASE mysql;

# 连接mysql进行操作
use mysql;

# 创建表
CREATE TABLE 表的名字
(
列名a 数据类型(数据长度),
列名b 数据类型(数据长度),
列名c 数据类型(数据长度)
);

# 插入
INSERT INTO 表的名字(列名a,列名b,列名c) VALUES(值1,值2,值3);

2.2 约束

2.3 数据类型

 3 数据其他操作

3.1 索引与视图

索引:

索引是一种与表有关的结构,它的作用相当于书的目录,可以根据目录中的页码快速找到所需的内容。

当表中有大量记录时,若要对表进行查询,没有索引的情况是全表搜索:将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录。这样做会消耗大量数据库系统时间,并造成大量磁盘 I/O 操作。

而如果在表中已建立索引,在索引中找到符合查询条件的索引值,通过索引值就可以快速找到表中的数据,可以大大加快查询速度。

视图

视图是从一个或多个表中导出来的表,是一种虚拟存在的表。它就像一个窗口,通过这个窗口可以看到系统专门提供的数据,这样,用户可以不用看到整个数据库中的数据,而只关心对自己有用的数据。

注意理解视图是虚拟的表:

  • 数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中;
  • 使用视图查询数据时,数据库系统会从原来的表中取出对应的数据;
  • 视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变;
  • 在使用视图的时候,可以把它当作一张表。
# 索引的创建

ALTER TABLE 表名字 ADD INDEX 索引名 (列名);

CREATE INDEX 索引名 ON 表名字 (列名);

# 视图
CREATE VIEW 视图名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;


3.2 导入、导出和备份

# 把.txt 格式的数据导入数据库
LOAD DATA INFILE '文件路径和文件名' INTO TABLE 表名字;

# 把数据库中的数据导出.txt
SELECT 列1,列2 INTO OUTFILE '文件路径和文件名' FROM 表名字;

----------------------------------------------------
Linux 备份

mysqldump -u root 数据库名>备份文件名;   #备份整个数据库

mysqldump -u root 数据库名 表名字>备份文件名;  #备份整个表

恢复原来数据库
mysqldump -u root 数据库名<备份文件名;   #恢复整个数据库

source 路劲 # 另一种恢复,读取保存的sql文件

4 进阶的SQL

4.1 使用AUTO_INCREMENT语句

定义列属性的时候添加AUTO_INCREMENT语句可以使得每条记录都能被唯一标识。

4.2 使用用户变量

# 设置用户变量
SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;

SELECT * FROM shop WHERE price=@min_price OR price=@max_price;

4.3 使用外键????

 

10-02 16:42