1. mysql数据库
1.1 mysql数据库介绍
MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
1.2 mysq数据库特点
●MySQL 是开源的,目前隶属于 Oracle 旗下产品。
●MySQL 支持大型的数据库。可以处理拥有上千万条记录的大型数据库。
●MySQL 使用标准的 SQL 数据语言形式。
●MySQL 可以运行于多个系统上,并且支持多种语言。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby 和 Tcl 等。
●MySQL 对PHP有很好的支持,PHP 是目前最流行的 Web 开发语言。
●MySQL 支持大型数据库,支持 5000 万条记录的数据仓库,32 位系统表文件最大可支持 4GB,64 位系统支持最大的表文件为8TB。
●MySQL 是可以定制的,采用了 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。
1.3 mysql数据库的安装
1.3.1 官网下载
mysql官网下载mysql安装包,直接安装 MySQL :: Download MySQL Community Server
参考按照网址:MySQL数据库的下载及安装教程-百度经验
1.3.2 phpstudy集成mysql数据库
下载安装phpstudy ,使用其集成的mysql数据库 小皮面板(phpstudy) - 让天下没有难配的服务器环境!
2. SQL语句
2.1 SQL SELECT
SELECT 语句用于从数据库中选取数据。
2.1.1 查询指定字段
SELECT field1, field2,...fieldN FROM table_name;
2.1.2 查询全部
*代表所有的字段
SELECT * FROM table_name;
2.2 SQL WHERE
SELECT field1, field2,...fieldN FROM table_name WHERE 条件
WHERE 子句用于过滤记录。WHERE 子句用于提取那些满足指定条件的记录。
2.2.1 AND & OR
AND & OR 运算符用于基于一个以上的条件对记录进行过滤
如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。
# and 运算符
SELECT * FROM Websites WHERE field1 = value AND field2 > value;
# or 运算符
SELECT * FROM Websites WHERE field1 = value or field2 > value;
2.2.3 WHERE 子句
以下为操作符列表,可用于 WHERE 子句中
2.2.4 IN
IN 操作符允许您在 WHERE 子句中规定多个值
SELECT field1, field2,...fieldN FROM table_name WHERE field IN (value1,value2,...);
2.2.5 BETWEEN
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
SELECT field1, field2,...fieldN FROM table_name WHERE field BETWEEN value1 AND value2;
2.2.6 ORDER BY
ORDER BY 关键字用于对结果集进行排序
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序。
ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,您可以使用 DESC 关键字。
SELECT field1, field2,...fieldN FROM table_name ORDER BY field1, field2 ASC|DESC;
2.2.7 GROUP BY
GROUP BY 语句用于结合聚合函数,根据一个或多个列对结果集进行分组
SELECT field1, field2,...fieldN aggregate_function(field) FROM table_name WHERE field operator value GROUP BY column_name;
2.2.8 SQL函数
SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。
●AVG() - 返回平均值
●COUNT() - 返回行数
●MAX() - 返回最大值
●MIN() - 返回最小值
●SUM() - 返回总和
# AVG() 案例
SELECT AVG(column_name) FROM table_name
# COUNT() 案例
SELECT COUNT(column_name) FROM table_name;
# MAX() 案例
SELECT MAX(column_name) FROM table_name;
# MIN() 案例
SELECT MIN(column_name) FROM table_name;
# SUM() 案例
SELECT SUM(column_name) FROM table_name;
2.2.9 LIKE
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SELECT field1, field2,...fieldN FROM table_name WHERE field LIKE pattern;
通配符可用于替代字符串中的任何其他字符。在 SQL 中,通配符与 SQL LIKE 操作符一起使用。
# 案例
SELECT * FROM Websites WHERE url LIKE 'https%';
#案例
SELECT * FROM Websites WHERE name LIKE '_oogle';
# 案例
SELECT * FROM Websites WHERE name REGEXP '^[GFs]';
# 案例
SELECT * FROM Websites WHERE name REGEXP '^[^A-H]';
2.2.10 LIMIT
MySQL 支持 LIMIT 语句来选取指定的条数数据
# 获取指定条数
SELECT column_name(s) FROM table_name LIMIT number;
# 从指定的索引值位置获取指定的条数数据
SELECT column_name(s) FROM table_name LIMIT index,number;
2.3 SQL INSERT INTO
INSERT INTO 语句用于向表中插入新记录。
# 插入记录 values
INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);
# 插入记录 set
INSERT INTO table_name SET column1 = value2,column2 = value2 ,column3 = value3 ,...;
2.4 SQL UPDATE
UPDATE 语句用于更新表中的记录
请注意 SQL UPDATE 语句中的 WHERE 子句!
WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新!
UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value;
2.5 SQL DELETE
DELETE 语句用于删除表中的记录
请注意 SQL DELETE 语句中的 WHERE 子句!
WHERE 子句规定哪条记录或者哪些记录需要删除。如果您省略了 WHERE 子句,所有的记录都将被删除!
DELETE FROM table_name WHERE some_column=some_value;
2.6 SQL 别名
通过使用 SQL,可以为表名称或列名称指定别名。
创建别名是为了让列名称的可读性更强
2.6.1 列的别名
SELECT column_name AS alias_name FROM table_name;
2.6.2 表的别名
SELECT column_name(s) FROM table_name AS alias_name;
2.7 SQL 连接(JOIN)
SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段
●INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
# 等值连接
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
# 等价where子句
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b WHERE a.runoob_author = b.runoob_author;
- LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
- RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a RIGHT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;