SQL:Structured Query Language结构化查询语言

MySQL是一个关系型数据库管理系统, 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

一.基本概念

数据库:保存有组织的数据的容器(文件柜)

关系数据库:把信息分解为多个表,一类数据一个表,各表通过某些共同的值相互关联

表 :某种特定类型的结构化清单

表名:同一数据库中不能两次使用相同的表名

列:表中的一个字段

行:表中的一个记录

数据类型:所允许的数据的类型

主键:一列或一组列,能唯一标识表中每一行

外键:外键是表中的一列,其值必须列在另一表的主键中。外键是保证引用完 整性的极其重要部分。

二 .检索数据 查询语句

1
SELECT prod_name
2
FROM Products

利用SELECT语句从Produces表中检索一个名为prod_name的列

注:

此时的返回数据为未排序数据,只要返回相同数目的行,就是正常的。

SQL语句不区分大小写,SELECT和select是相同的。

处理SQL语句时,空格都被忽略,多句SQL语言必须用分号分割。

检索多个列时,列名间用逗号隔开

1
SELECT prod_id,peod_name,prod_price
2
FROM Products

检索所有列 用通配符*

1
SELECT *
2
FROM Products

检索不同的值 ,指示数据库只返回不同的值 使用DISDINCT关键词

1
DELECT DISTINCT ven_id
2
FROM Products

限制结果 用TOP关键字来限制最多返回多少行

1
SELECT TOP 5 prod_name
2
FROM Products

LIMIT5 指示MySQL等DBMS不超过5行的数据

三.SQL注释

1.行内注释

1
SELECT prod_name  --这是一条注释
2
FROM Products

2.#这是一条注释

3./* 多行注释 */

四.排序检索数据

1.order by 子句 需要放在最后

1
SELECT prod_name 
2
FROM Products
3
ORDER BY prod_name

ORDER BY子句取一个或多个列的名字,据此对输出进行排序

2.按多个列排序

1
SELECT prod_id,prod_price,prod_name 
2
FROM Products
3
ORDER BY prod_price,prod_name;

在按多个列排序时,排序的顺序完全按规定进行

3.按列位置排序

1
SELECT prod_id,prod_price,prod_name 
2
FROM Products
3
ORDER BY 2,3;

DESC关键字 可以使默认升序排列变为降序排

五.过滤数据

1.在SELECT语句中,数据根据WHERE子句中指定的搜素条件进行过滤。WHERE子句在表名(FROM子句之后给出)

1
SELECT prod_id,prod_price
2
FROM Products
3
WHERE prod_price=3.49

此句表示从products表中检索两个列,只返回prod_price为3.49的行

注:在同时使用 ORDER BY 子句和 WHERE子句时,ORDER BY应该放在后面

2.WHERE子句操作符

此处只列出几个特殊的

操作符 说明
<> 不等于
!> 不大于
BETWEEN 在指定的两个值之间
IS NULL 为NULL值

3.检查单个值

1
SELECT prod_id,prod_price
2
FROM Products
3
WHERE prod_price<10

4.不匹配检查 用不等于的操作符

1
SELECT prod_id,prod_name 
2
FROM Products
3
WHERE vend_id<>'DLL01'

注:

  • 何时使用引号:将值与字符串类型的列进行比较则需要限定引号,与数值列进行比较则不需要

  • !=和<>通常可以互换,但并非所有DBMS都支持这两种操作符

    5.范围值检查

1
SELECT prod_id,prod_price
2
FROM Products
3
WHERE prod_price  BETWEEN 5 AND 10;

6.空值检查

1
SELECT prod_name 
2
FROM Products
3
WHERE prod_price IS NULL;

六.通配符

通配符:用来匹配值的一部分的特殊字符。(实际上是SQL的WHERE子句中含有特殊含义的字符)

为在搜索子句中使用通配符,必须使用LIKE操作符

七.代码实践

1.mysql5.7版本之后,password属性已经取消(使用SELECT Password(‘123’) 会报错),
用户密码的语句已经改变,语句如下

1
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345';

2.创建数据库

1
mysql> CREATE DATABASE IF NOT EXISTS yiibaidb DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 
2
mysql> use yiibaidb;

图示为下载的示例数据库

3.导入数据

1
mysql> use yiibaidb;
2
mysql> source D:/yiibaidb/yiibaidb.sq

4.测试导入结果

1
mysql> select city,phone,country from `offices`;