网游网站开发,深圳龙华区发达吗,广州网站制作哪家专业,Wordpress 织梦 哪个容易文章目录 文章简介演示库表创建数据库表选择数据库删除数据库创建表删除表向表中插入数据更新数据删除数据查询数据WHERE 操作符聚合函数LIKE 子句分组 GROUP BY HAVINGORDER BY(排序) 语句LIMIT 操作符 分页查询多表查询-联合查询 UNION 操作符多表查询-连接的使用-JOIN语句编… 文章目录 文章简介演示库表创建数据库表选择数据库删除数据库创建表删除表向表中插入数据更新数据删除数据查询数据WHERE 操作符聚合函数LIKE 子句分组 GROUP BY HAVINGORDER BY(排序) 语句LIMIT 操作符 分页查询多表查询-联合查询 UNION 操作符多表查询-连接的使用-JOIN语句编写和底层执行顺序 文章简介
本文主要介绍了MySQL核心命令的介绍和使用方法。
演示库表
mmall_learning库表结构。 部分命令中涉及的其他库表均为简单说明可不必在意具体表结构。
创建数据库表
CREATE DATABASE 数据库名;
CREATE DATABASE mmall_learning;列出 MySQL 数据库管理系统的数据库列表。
SHOW DATABASES;结果如下
选择数据库
USE 数据库名;
USE mmall_learning;显示指定数据库的所有表使用该命令前需要使用 use 命令来选择要操作的数据库。 SHOW TABLES: 显示数据表的属性属性类型主键信息 是否为 NULL默认值等其他信息。
SHOW COLUMNS FROM 数据表;例如展示购物车的数据表结构
SHOW COLUMNS FROM mmall_cart;结果如下
删除数据库
1.直接删除数据库不检查是否存在
DROP DATABASE 数据库;2.删除数据库如果存在的话
DROP DATABASE IF EXISTS 数据库;创建表
CREATE TABLE table_name (column1 datatype,column2 datatype,...
);示例
CREATE TABLE mmall_cart (id int(11) NOT NULL AUTO_INCREMENT,user_id int(11) NOT NULL,product_id int(11) DEFAULT NULL COMMENT 商品id,quantity int(11) DEFAULT NULL COMMENT 数量,checked int(11) DEFAULT NULL COMMENT 是否选择,1已勾选,0未勾选,create_time datetime DEFAULT NULL COMMENT 创建时间,update_time datetime DEFAULT NULL COMMENT 更新时间,PRIMARY KEY (id),KEY user_id_index (user_id) USING BTREE
) ENGINEInnoDB AUTO_INCREMENT146 DEFAULT CHARSETutf8;解释 ~如果你不想字段为空可以设置字段的属性为 NOT NULL如上实例中的 id 与 user_id 字段在操作数据库时如果输入该字段的数据为空就会报错。 ~AUTO_INCREMENT 定义列为自增的属性一般用于主键数值会自动加 1。 ~PRIMARY KEY 关键字用于定义列为主键。 您可以使用多列来定义主键列间以逗号 , 分隔。 ~ENGINE 设置存储引擎CHARSET 设置编码。 ~UNIQUE KEY 唯一约束是指所有记录中字段的值不能重复出现。例如为 user_id 字段加上唯一性约束后每条记录的 user_id 值都是唯一的不能出现重复的情况。
删除表
1.删除表如果存在的话
DROP TABLE IF EXISTS 数据表;2.直接删除表不检查是否存在
DROP TABLE 数据表;向表中插入数据
INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);table_name 是你要插入数据的表的名称。 column1, column2, column3, … 是表中的列名。 value1, value2, value3, … 是要插入的具体数值。
示例 向以下表mmall_cart中再插入一行数据
INSERT INTO mmall_cart VALUES (126, 21, 26, 1, 1, 2017-04-13 21:27:06, 2017-04-13 21:27:06);更新数据
UPDATE table_name
SET column1 value1, column2 value2, ...
WHERE condition;示例 将上表中的user_id/product_id均改为20
UPDATE mmall_cart SET user_id 20, product_id 20 WHERE id 126;结果如下
删除数据
DELETE FROM table_name
WHERE condition;删除id为127的数据
DELETE FROM mmall_cart WHERE id 127;结果为
查询数据
SELECT column1, column2, ...
FROM table_name
[WHERE condition]
[ORDER BY column_name [ASC | DESC]]
[LIMIT number];简单示例
-- 选择所有列的所有行
SELECT * FROM users;-- 选择特定列的所有行
SELECT username, email FROM users;-- 添加 WHERE 子句选择满足条件的行
SELECT * FROM users WHERE is_active TRUE;-- 添加 ORDER BY 子句按照某列的升序排序
SELECT * FROM users ORDER BY birthdate;-- 添加 ORDER BY 子句按照某列的降序排序
SELECT * FROM users ORDER BY birthdate DESC;-- 添加 LIMIT 子句限制返回的行数
SELECT * FROM users LIMIT 10;-- 使用 AND 运算符和通配符
SELECT * FROM users WHERE username LIKE j% AND is_active TRUE;-- 使用 OR 运算符
SELECT * FROM users WHERE is_active TRUE OR birthdate 1990-01-01;-- 使用 IN 子句
SELECT * FROM users WHERE birthdate IN (1990-01-01, 1992-03-15, 1993-05-03);WHERE 操作符
有条件地从表中选取数据可将 WHERE 子句添加到 SELECT 语句中。WHERE 子句用于在 MySQL 中过滤查询结果只返回满足特定条件的行。 示例
SELECT * FROM users WHERE username test;常搭配的逻辑符号有
说明符号不等于, !等于大于小于大于等于小于等于
聚合函数
语法
SELECT 聚合函数(字段列表) FROM 表名;示例表 COUNT计数结果为4
SELECT COUNT(quantity) FROM mmall_cart;MAX求最大值结果为9
SELECT MAX(quantity) FROM mmall_cart;MIN求最小值结果为1
SELECT MIN(quantity) FROM mmall_cart;AVG求平均值结果为4.25
SELECT AVG(quantity) FROM mmall_cart;SUM求和结果为17
SELECT SUM(quantity) FROM mmall_cart;LIKE 子句
LIKE 子句是在 MySQL 中用于在 WHERE 子句中进行模糊匹配的关键字。 示例
SELECT * FROM customers WHERE last_name LIKE S%;以上 SQL 语句将选择所有姓氏以 ‘S’ 开头的客户。
分组 GROUP BY HAVING
GROUP BY 语句根据一个或多个列对结果集进行分组。一般配合聚合函数和HAVING使用。 WHERE和HAVING的区别是HAVING可以对分组后的数据进行过滤。
语法
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];示例 查询年龄小于45的员工并根据工作地址分组获取同一地址员工数量大于等于3的工作地址
SELECT workaddress, COUNT(*) FROM emp WHERE age 45 GROUP BY workaddress HAVING COUNT(*) 3;ORDER BY(排序) 语句
ORDER BY(排序) 语句可以按照一个或多个列的值进行升序ASC或降序DESC排序。 语法
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC | DESC], column2 [ASC | DESC], ...;示例
SELECT * FROM mmall_cart ORDER BY user_id;数据就会按给定字段排序结果如下
LIMIT 操作符 分页查询
语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数示例 查询第一页员工数据每页展示十条记录
SELECT * FROM emp LIMIT 10;多表查询-联合查询 UNION 操作符
UNION连接数据集关键字可以将两个查询结果集拼接为一个会过滤掉相同的记录 UNION ALL连接数据集关键字可以将两个查询结果集拼接为一个不会过滤掉相同的记录 注意对于联合查询的多张表列数必须保持一致字段类型也需要保持一致。 作用简单描述就是表A有a/b两列20条数据表B有a/b两列30条数据通过UNION ALL以后可以得到a/b两列50条数据。使用UNION后会获得不重复的a/b两列数据
语法
SELECT 字段列表 FROM 表A ...
UNION [ALL]
SELECT 字段列表 FROM 表B ...;示例查询 product_id15quantity5的数据
SELECT * FROM mmall_cart WHERE product_id 18
UNION
SELECT * FROM mmall_cart WHERE quantity 6;查询结果为 说明第一条SELECT可以查询出后两条数据第二条SELECT语句可以查询出第二条数据拼一起后即为原表后三条数据。
多表查询-连接的使用-JOIN
JOIN用于联合多表查询其中 INNER JOIN内连接,或等值连接获取两个表中字段匹配关系的记录。 LEFT JOIN左连接获取左表所有记录即使右表没有对应匹配的记录。 RIGHT JOIN右连接 与 LEFT JOIN 相反用于获取右表所有记录即使左表没有对应匹配的记录。 以下 以员工表emp部门表dept为例来简单说明。每个部门有对应的多个员工属于1对N。
内连接
语法
SELECT column1, column2, ...
FROM table1
INNER JOIN table2 ON table1.column_name table2.column_name;内连接分为隐式和显示连接。对于显示内连接inner可以省略。 左连接和右连接 语法
SELECT column1, column2, ...
FROM table1
LEFT JOIN table2 ON table1.column_name table2.column_name;SELECT column1, column2, ...
FROM table1
RIGHT JOIN table2 ON table1.column_name table2.column_name;自连接 自连接是表与自身表相连接 语句编写和底层执行顺序
语句编写顺序 示例
SELECT DISTINCT column1, column2
FROM table1
JOIN table2 ON table1.id table2.foreign_id
WHERE column1 100
GROUP BY column1
HAVING COUNT(*) 1
ORDER BY column1 DESC
LIMIT 10;MySQL语句底层的执行顺序如下
1. FROM子句选择数据来源的表或视图。
2. ON子句连接条件如果有的话例如在JOIN操作中。
3. JOIN子句如果有的话执行连接操作。
4. WHERE子句过滤条件只返回符合条件的记录。
5. GROUP BY子句分组统计的字段。
6. HAVING子句分组后的过滤条件。
7. SELECT子句选取特定的列。
8. DISTINCT子句去除重复数据。
9. ORDER BY子句结果集的排序顺序。
10. LIMIT子句限制结果集的数量。