当前位置: 首页 > news >正文

石家庄电子商务网站建设怎么创一个网站赚钱

石家庄电子商务网站建设,怎么创一个网站赚钱,河南省考生服务平台官网,wordpress盗版模板文章目录表的增删查改Create#xff08;创建#xff09;单行数据 全列插入多行数据 指定列插入插入否则更新替换Retrieve#xff08;读取#xff09;SELECT列全列查询指定列查询查询字段为表达式查询结果指定别名结果去重WHERE 条件基本比较BETWEEN AND 条件连接OR 条件连… 文章目录表的增删查改Create创建单行数据 全列插入多行数据 指定列插入插入否则更新替换Retrieve读取SELECT列全列查询指定列查询查询字段为表达式查询结果指定别名结果去重WHERE 条件基本比较BETWEEN AND 条件连接OR 条件连接IN 条件连接LIKE 条件匹配WHERE 条件中使用表达式AND 与 NOT 的使用综合性查询NULL的查询结果排序升序显示降序排序多字段排序ORDER BY 使用表达式结合 WHERE 子句 和 ORDER BY 子句筛选分页结果Update更新更新单列更新多列更新值为原值基础上变更更新全表Delete删除删除单条记录删除整表截断表插入查询结果聚合函数group by子句的使用表的增删查改 CRUD : Create(创建), Retrieve(读取) Update(更新) Delete删除 Create创建 基本语法 INSERT [INTO] table_name[(column [, column] ...)]VALUES (value_list) [, (value_list)] ...value_list: value, [, value] ...案例 mysql create table students (- id int unsigned primary key auto_increment,- sn int not null unique comment 学号,- name varchar(20) not null,- email varchar(20)- )engineinnodb default charsetutf8; Query OK, 0 rows affected (0.03 sec)mysql desc students; ------------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | ------------------------------------------------------------- | id | int(10) unsigned | NO | PRI | NULL | auto_increment | | sn | int(11) | NO | UNI | NULL | | | name | varchar(20) | NO | | NULL | | | email | varchar(20) | YES | | NULL | | ------------------------------------------------------------- 4 rows in set (0.00 sec)单行数据 全列插入 插入两条记录当value_list 数量和定义表的列的数量及顺序一致时就可以省略value_list。注意这里在插入的时候也可以不用指定idmysql会使用默认的值进行自增。 mysql insert into students values (100, 1000, Curry, NULL); Query OK, 1 row affected (0.01 sec)mysql insert into students values (101, 1001, Durant, 3306163.com); Query OK, 1 row affected (0.00 sec)mysql select * from students; --------------------------------- | id | sn | name | email | --------------------------------- | 100 | 1000 | Curry | NULL | | 101 | 1001 | Durant | 3306163.com | --------------------------------- 2 rows in set (0.00 sec)多行数据 指定列插入 插入两条记录value_list 数量必须和指定列数量及顺序一致 mysql insert into students (id, sn, name) values (102, 1002, Kobe), (103, 1003, Klay); Query OK, 2 rows affected (0.00 sec) Records: 2 Duplicates: 0 Warnings: 0mysql select * from students; --------------------------------- | id | sn | name | email | --------------------------------- | 100 | 1000 | Curry | NULL | | 101 | 1001 | Durant | 3306163.com | | 102 | 1002 | Kobe | NULL | | 103 | 1003 | Klay | NULL | --------------------------------- 4 rows in set (0.00 sec)插入否则更新 由于 主键 或者 唯一键 对应的值已经存在而导致插入失败 主键冲突 mysql insert into students (id, sn, name) values (100, 1004, Brown); ERROR 1062 (23000): Duplicate entry 100 for key PRIMARY唯一键冲突 mysql insert into students (id, sn, name) values (104, 1003, Bryant); ERROR 1062 (23000): Duplicate entry 1003 for key sn可以选择性的进行同步更新操作 语法 INSERT ... ON DUPLICATE KEY UPDATEcolumn value [, column value] ...mysql insert into students (id, sn, name) values (104, 1003, Bryant)- on duplicate key update id104, nameBryant; Query OK, 2 rows affected (0.01 sec)mysql select * from students; --------------------------------- | id | sn | name | email | --------------------------------- | 100 | 1000 | Curry | NULL | | 101 | 1001 | Durant | 3306163.com | | 102 | 1002 | Kobe | NULL | | 104 | 1003 | Bryant | NULL | --------------------------------- 4 rows in set (0.00 sec)0 row affected: 表中有冲突数据但冲突数据的值和 update 的值相等1 row affected: 表中没有冲突数据数据被插入2 row affected: 表中有冲突数据并且数据已经被更新 替换 主键 或者 唯一键 没有冲突则直接插入 主键 或者 唯一键 如果冲突则删除后再插入 mysql replace into students (sn, name) values (1002, Mitchell); Query OK, 2 rows affected (0.00 sec)mysql select * from students; ----------------------------------- | id | sn | name | email | ----------------------------------- | 100 | 1000 | Curry | NULL | | 101 | 1001 | Durant | 3306163.com | | 104 | 1003 | Bryant | NULL | | 105 | 1002 | Mitchell | NULL | ----------------------------------- 4 rows in set (0.00 sec)1 row affected: 表中没有冲突数据数据被插入2 row affected: 表中有冲突数据删除后重新插入 Retrieve读取 基础语法 SELECT[DISTINCT] {* | {column [, column] ...}[FROM table_name][WHERE ...][ORDER BY column [ASC | DESC], ...]LIMIT ...案例 创建表结构 mysql create table exam_result (- id int unsigned primary key auto_increment,- name varchar(20) not null comment 姓名,- chinese float default 0.0 comment 语文成绩,- math float default 0.0 comment 数学成绩,- english float default 0.0 comment 英语成绩- )engineinnodb default charsetutf8; Query OK, 0 rows affected (0.02 sec)插入测试数据 mysql insert into exam_result (name, chinese, math, english) values- (唐三藏, 67, 98, 56),- (孙悟空, 87, 78, 77),- (猪悟能, 88, 98, 90),- (曹孟德, 82, 84, 67),- (刘玄德, 55, 85, 45),- (孙权, 70, 73, 78),- (宋公明, 75, 65, 30); Query OK, 7 rows affected (0.00 sec) Records: 7 Duplicates: 0 Warnings: 0SELECT列 全列查询 通常情况下不建议使用 * 进行全列查询 查询的列越多意味着需要传输的数据量越大可能会影响到索引的使用 mysql select * from exam_result; --------------------------------------- | id | name | chinese | math | english | --------------------------------------- | 1 | 唐三藏 | 67 | 98 | 56 | | 2 | 孙悟空 | 87 | 78 | 77 | | 3 | 猪悟能 | 88 | 98 | 90 | | 4 | 曹孟德 | 82 | 84 | 67 | | 5 | 刘玄德 | 55 | 85 | 45 | | 6 | 孙权 | 70 | 73 | 78 | | 7 | 宋公明 | 75 | 65 | 30 | --------------------------------------- 7 rows in set (0.00 sec)指定列查询 指定列的顺序不需要按定义表的顺序来 mysql select id, name, math from exam_result; --------------------- | id | name | math | --------------------- | 1 | 唐三藏 | 98 | | 2 | 孙悟空 | 78 | | 3 | 猪悟能 | 98 | | 4 | 曹孟德 | 84 | | 5 | 刘玄德 | 85 | | 6 | 孙权 | 73 | | 7 | 宋公明 | 65 | --------------------- 7 rows in set (0.00 sec)查询字段为表达式 表达式不包含字段 mysql select id, name, 10 from exam_result; ------------------- | id | name | 10 | ------------------- | 1 | 唐三藏 | 10 | | 2 | 孙悟空 | 10 | | 3 | 猪悟能 | 10 | | 4 | 曹孟德 | 10 | | 5 | 刘玄德 | 10 | | 6 | 孙权 | 10 | | 7 | 宋公明 | 10 | ------------------- 7 rows in set (0.00 sec)表达式包含一个字段 mysql select id, name, math10 from exam_result; ------------------------ | id | name | math10 | ------------------------ | 1 | 唐三藏 | 108 | | 2 | 孙悟空 | 88 | | 3 | 猪悟能 | 108 | | 4 | 曹孟德 | 94 | | 5 | 刘玄德 | 95 | | 6 | 孙权 | 83 | | 7 | 宋公明 | 75 | ------------------------ 7 rows in set (0.00 sec)表达式包含多个字段 mysql select id, name, mathchineseenglish from exam_result; ------------------------------------- | id | name | mathchineseenglish | ------------------------------------- | 1 | 唐三藏 | 221 | | 2 | 孙悟空 | 242 | | 3 | 猪悟能 | 276 | | 4 | 曹孟德 | 233 | | 5 | 刘玄德 | 185 | | 6 | 孙权 | 221 | | 7 | 宋公明 | 170 | ------------------------------------- 7 rows in set (0.00 sec)查询结果指定别名 基础语法 ELECT column [AS] alias_name [...] FROM table_name;mysql select id, name, mathchineseenglish total from exam_result; ---------------------- | id | name | total | ---------------------- | 1 | 唐三藏 | 221 | | 2 | 孙悟空 | 242 | | 3 | 猪悟能 | 276 | | 4 | 曹孟德 | 233 | | 5 | 刘玄德 | 185 | | 6 | 孙权 | 221 | | 7 | 宋公明 | 170 | ---------------------- 7 rows in set (0.00 sec)结果去重 查询结果重复 mysql select math from exam_result; ------ | math | ------ | 98 | | 78 | | 98 | | 84 | | 85 | | 73 | | 65 | ------ 7 rows in set (0.00 sec)查询结果去重 mysql select distinct math from exam_result; ------ | math | ------ | 98 | | 78 | | 84 | | 85 | | 73 | | 65 | ------ 6 rows in set (0.00 sec)WHERE 条件 基本比较 英语不及格的同学及英语成绩 ( 60 ) mysql select name, english from exam_result where english60; -------------------- | name | english | -------------------- | 唐三藏 | 56 | | 刘玄德 | 45 | | 宋公明 | 30 | -------------------- 3 rows in set (0.00 sec)BETWEEN AND 条件连接 语文成绩在 [80, 90] 分的同学及语文成绩 使用 AND 进行条件连接 mysql select name, chinese from exam_result where chinese80 and chinese90; -------------------- | name | chinese | -------------------- | 孙悟空 | 87 | | 猪悟能 | 88 | | 曹孟德 | 82 | -------------------- 3 rows in set (0.00 sec)使用 BETWEEN AND 条件连接 mysql select name, chinese from exam_result where chinese between 80 and 90; -------------------- | name | chinese | -------------------- | 孙悟空 | 87 | | 猪悟能 | 88 | | 曹孟德 | 82 | -------------------- 3 rows in set (0.00 sec)OR 条件连接 数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩 mysql select name, math from exam_result where math58 or math59 or math98 or math99; ----------------- | name | math | ----------------- | 唐三藏 | 98 | | 猪悟能 | 98 | ----------------- 2 rows in set (0.00 sec)IN 条件连接 数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩 mysql select name, math from exam_result where math in (58,59,98,99); ----------------- | name | math | ----------------- | 唐三藏 | 98 | | 猪悟能 | 98 | ----------------- 2 rows in set (0.00 sec)LIKE 条件匹配 查找姓孙的同学% 匹配任意多个包括 0 个任意字符 mysql select name from exam_result where name like 孙%; ----------- | name | ----------- | 孙悟空 | | 孙权 | ----------- 2 rows in set (0.00 sec)查找孙某同学 _ 匹配严格的一个任意字符 mysql select name from exam_result where name like 孙_; -------- | name | -------- | 孙权 | -------- 1 row in set (0.00 sec)WHERE 条件中使用表达式 总分在 200 分以下的同学 mysql select name, chinesemathenglish total from exam_result where total200; ERROR 1054 (42S22): Unknown column total in where clause这里我们发现一个问题where条件查询中不能使用指定别名这是因为chinesemathenglish这个字句比where total200字句先执行所以MySQL并不认识total这个别名就会报错。 正确写法 mysql select name, chinesemathenglish total from exam_result where chinesemathenglish200; ------------------ | name | total | ------------------ | 刘玄德 | 185 | | 宋公明 | 170 | ------------------ 2 rows in set (0.00 sec)AND 与 NOT 的使用 语文成绩 80 并且不姓孙的同学 mysql select name,chinese from exam_result where chinese80 and name not like 孙%; -------------------- | name | chinese | -------------------- | 猪悟能 | 88 | | 曹孟德 | 82 | -------------------- 2 rows in set (0.00 sec)综合性查询 查询孙某同学否则要求总成绩 200 并且 语文成绩 数学成绩 并且 英语成绩 80 mysql select name,chinese,math,english,chinesemathenglish total from exam_result- where (name like 孙_) or (chinesemathenglish200 and chinesemath and english80); ------------------------------------------ | name | chinese | math | english | total | ------------------------------------------ | 猪悟能 | 88 | 98 | 90 | 276 | | 孙权 | 70 | 73 | 78 | 221 | ------------------------------------------ 2 rows in set (0.00 sec)NULL的查询 查询 email 号已知的同学姓名 mysql select name from students where email is not null; -------- | name | -------- | Durant | -------- 1 row in set (0.00 sec)NULL 和 NULL 的比较 和 的区别 mysql select NULLNULL, NULL1, NULL0; --------------------------- | NULLNULL | NULL1 | NULL0 | --------------------------- | NULL | NULL | NULL | --------------------------- 1 row in set (0.00 sec)mysql select NULLNULL, NULL1, NULL0; --------------------------------- | NULLNULL | NULL1 | NULL0 | --------------------------------- | 1 | 0 | 0 | --------------------------------- 1 row in set (0.00 sec)结果排序 基本语法 -- ASC 为升序从小到大 -- DESC 为降序从大到小 -- 默认为 ASC SELECT ... FROM table_name [WHERE ...]ORDER BY column [ASC|DESC], [...];升序显示 查询姓名及数学成绩按数学成绩升序显示 mysql select name,math from exam_result order by math; ----------------- | name | math | ----------------- | 宋公明 | 65 | | 孙权 | 73 | | 孙悟空 | 78 | | 曹孟德 | 84 | | 刘玄德 | 85 | | 唐三藏 | 98 | | 猪悟能 | 98 | ----------------- 7 rows in set (0.00 sec)降序排序 查询姓名 及 eamil按 eamil排序显示 mysql select name,email from students order by email; ------------------------ | name | email | ------------------------ | Curry | NULL | | Bryant | NULL | | Mitchell | NULL | | Durant | 3306163.com | ------------------------ 4 rows in set (0.00 sec)NULL 视为比任何值都小升序出现在最上面 多字段排序 查询同学各门成绩依次按 数学降序英语升序语文升序的方式显示 mysql select name,chinese,math,english from exam_result order by math desc, english asc, chinese asc; ----------------------------------- | name | chinese | math | english | ----------------------------------- | 唐三藏 | 67 | 98 | 56 | | 猪悟能 | 88 | 98 | 90 | | 刘玄德 | 55 | 85 | 45 | | 曹孟德 | 82 | 84 | 67 | | 孙悟空 | 87 | 78 | 77 | | 孙权 | 70 | 73 | 78 | | 宋公明 | 75 | 65 | 30 | ----------------------------------- 7 rows in set (0.00 sec)多字段排序排序优先级随书写顺序 ORDER BY 使用表达式 查询同学及总分由高到低 mysql select name, chinesemathenglish from exam_result order by chinesemathenglish desc; --------------------------------- | name | chinesemathenglish | --------------------------------- | 猪悟能 | 276 | | 孙悟空 | 242 | | 曹孟德 | 233 | | 唐三藏 | 221 | | 孙权 | 221 | | 刘玄德 | 185 | | 宋公明 | 170 | --------------------------------- 7 rows in set (0.00 sec)ORDER BY 子句中可以使用列别名 mysql select name, chinesemathenglish total from exam_result order by total desc; ------------------ | name | total | ------------------ | 猪悟能 | 276 | | 孙悟空 | 242 | | 曹孟德 | 233 | | 唐三藏 | 221 | | 孙权 | 221 | | 刘玄德 | 185 | | 宋公明 | 170 | ------------------ 7 rows in set (0.00 sec)结合 WHERE 子句 和 ORDER BY 子句 查询姓孙的同学或者姓曹的同学数学成绩结果按数学成绩由高到低显示 mysql select name,math from exam_result where name like 孙% or name like 曹% order by math desc; ----------------- | name | math | ----------------- | 曹孟德 | 84 | | 孙悟空 | 78 | | 孙权 | 73 | ----------------- 3 rows in set (0.00 sec)筛选分页结果 基础语法 -- 起始下标为 0 -- 从 0 开始筛选 n 条结果 SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n;-- 从 s 开始筛选 n 条结果 SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n;-- 从 s 开始筛选 n 条结果比第二种用法更明确建议使用 SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;建议对未知表进行查询时最好加一条 LIMIT 1避免因为表中数据过大查询全表数据导致数据库卡死按 id 进行分页每页 3 条记录分别显示 第 1、2、3 页。 案例第 1 页 mysql select id, name, chinese, math, english from exam_result order by id limit 3 offset 0; --------------------------------------- | id | name | chinese | math | english | --------------------------------------- | 1 | 唐三藏 | 67 | 98 | 56 | | 2 | 孙悟空 | 87 | 78 | 77 | | 3 | 猪悟能 | 88 | 98 | 90 | --------------------------------------- 3 rows in set (0.00 sec)第 2 页 mysql select id, name, chinese, math, english from exam_result order by id limit 3 offset 3; --------------------------------------- | id | name | chinese | math | english | --------------------------------------- | 4 | 曹孟德 | 82 | 84 | 67 | | 5 | 刘玄德 | 55 | 85 | 45 | | 6 | 孙权 | 70 | 73 | 78 | --------------------------------------- 3 rows in set (0.00 sec)第 3 页如果结果不足 3 个不会有影响 mysql select id, name, chinese, math, english from exam_result order by id limit 3 offset 6; --------------------------------------- | id | name | chinese | math | english | --------------------------------------- | 7 | 宋公明 | 75 | 65 | 30 | --------------------------------------- 1 row in set (0.00 sec)Update更新 基本语法 UPDATE table_name SET column expr [, column expr ...][WHERE ...] [ORDER BY ...] [LIMIT ...]更新单列 将孙悟空同学的数学成绩变更为 80 分 mysql select name, math from exam_result where name孙悟空; ----------------- | name | math | ----------------- | 孙悟空 | 78 | ----------------- 1 row in set (0.00 sec)mysql update exam_result set math80 where name孙悟空; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0mysql select name, math from exam_result where name孙悟空; ----------------- | name | math | ----------------- | 孙悟空 | 80 | ----------------- 1 row in set (0.00 sec)更新多列 将曹孟德同学的数学成绩变更为 60 分语文成绩变更为 70 分 mysql select name, math, chinese from exam_result where name曹孟德; -------------------------- | name | math | chinese | -------------------------- | 曹孟德 | 84 | 82 | -------------------------- 1 row in set (0.00 sec)mysql update exam_result set math60, chinese70 where name曹孟德; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0mysql select name, math, chinese from exam_result where name曹孟德; -------------------------- | name | math | chinese | -------------------------- | 曹孟德 | 60 | 70 | -------------------------- 1 row in set (0.00 sec)更新值为原值基础上变更 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分 mysql update exam_result set mathmath30 order by chinesemathenglish limit 3; Query OK, 3 rows affected (0.00 sec) Rows matched: 3 Changed: 3 Warnings: 0mysql select name, math from exam_result; ----------------- | name | math | ----------------- | 唐三藏 | 98 | | 孙悟空 | 80 | | 猪悟能 | 98 | | 曹孟德 | 90 | | 刘玄德 | 115 | | 孙权 | 73 | | 宋公明 | 95 | ----------------- 7 rows in set (0.00 sec)更新全表 将所有同学的语文成绩更新为原来的 2 倍 mysql select name, chinese from exam_result; -------------------- | name | chinese | -------------------- | 唐三藏 | 67 | | 孙悟空 | 87 | | 猪悟能 | 88 | | 曹孟德 | 70 | | 刘玄德 | 55 | | 孙权 | 70 | | 宋公明 | 75 | -------------------- 7 rows in set (0.00 sec)mysql update exam_result set chinesechinese*2; Query OK, 7 rows affected (0.00 sec) Rows matched: 7 Changed: 7 Warnings: 0mysql select name, chinese from exam_result; -------------------- | name | chinese | -------------------- | 唐三藏 | 134 | | 孙悟空 | 174 | | 猪悟能 | 176 | | 曹孟德 | 140 | | 刘玄德 | 110 | | 孙权 | 140 | | 宋公明 | 150 | -------------------- 7 rows in set (0.00 sec)Delete删除 基础语法 DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]删除单条记录 删除孙悟空同学的考试成绩 mysql select * from exam_result where name孙悟空; --------------------------------------- | id | name | chinese | math | english | --------------------------------------- | 2 | 孙悟空 | 174 | 80 | 77 | --------------------------------------- 1 row in set (0.00 sec)mysql delete from exam_result where name孙悟空; Query OK, 1 row affected (0.00 sec)mysql select * from exam_result where name孙悟空; Empty set (0.00 sec)删除整表 注意删除整表操作要慎用 准备测试表 mysql create table for_delete (- id int unsigned primary key auto_increment,- name varchar(20)- )engineinnodb default charsetutf8; Query OK, 0 rows affected (0.02 sec)插入测试数据 mysql insert into for_delete (name) values (a), (b), (c); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0mysql select * from for_delete; ---------- | id | name | ---------- | 1 | a | | 2 | b | | 3 | c | ---------- 3 rows in set (0.00 sec)删除整表数据 mysql delete from for_delete; Query OK, 3 rows affected (0.00 sec)mysql select * from for_delete; Empty set (0.00 sec)再插入一条数据自增 id 在原值上增长 mysql insert into for_delete (name) values (d); Query OK, 1 row affected (0.00 sec)mysql select * from for_delete; ---------- | id | name | ---------- | 4 | d | ---------- 1 row in set (0.00 sec)查看表结构会有 AUTO_INCREMENTn 项 mysql show create table for_delete \G *************************** 1. row ***************************Table: for_delete Create Table: CREATE TABLE for_delete (id int(10) unsigned NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT5 DEFAULT CHARSETutf8 1 row in set (0.00 sec)说明虽然delete语句删除了整表但是再向删除后的表插入时表中的自增值会在之前的原数据的基础之上增加。 截断表 基础语法 TRUNCATE [TABLE] table_nameTRUNCATE 只能对整表操作不能像 DELETE 一样针对部分数据操作实际上 MySQL 不对数据操作所以比 DELETE 更快但是TRUNCATE在删除数据的时候并不经过真正的事物所以无法回滚会重置 AUTO_INCREMENT 项 准备测试表 mysql create table for_truncate (- id int unsigned primary key auto_increment,- name varchar(20)- )engineinnodb default charsetutf8; Query OK, 0 rows affected (0.02 sec)插入测试数据 mysql insert into for_truncate (name) values (a), (b), (c); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0mysql select * from for_truncate; ---------- | id | name | ---------- | 1 | a | | 2 | b | | 3 | c | ---------- 3 rows in set (0.00 sec)截断整表数据注意影响行数是 0所以实际上没有对数据真正操作 mysql truncate for_truncate; Query OK, 0 rows affected (0.02 sec)mysql select * from for_truncate; Empty set (0.00 sec)再插入一条数据自增 id 在重新增长 mysql insert into for_truncate (name) values (d); Query OK, 1 row affected (0.00 sec)mysql select * from for_truncate; ---------- | id | name | ---------- | 1 | d | ---------- 1 row in set (0.00 sec)查看表结构会有 AUTO_INCREMENT2 项 mysql show create table for_truncate \G *************************** 1. row ***************************Table: for_truncate Create Table: CREATE TABLE for_truncate (id int(10) unsigned NOT NULL AUTO_INCREMENT,name varchar(20) DEFAULT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT2 DEFAULT CHARSETutf8 1 row in set (0.00 sec)插入查询结果 基础语法 INSERT INTO table_name [(column [, column ...])] SELECT ...案例删除表中的的重复记录重复的数据只能有一份 创建原数据表插入测试数据 mysql create table duplicate_table (- id int,- name varchar(20)- ); Query OK, 0 rows affected (0.04 sec)mysql insert into duplicate_table values- (100, aaa),- (100, aaa),- (200, bbb),- (200, bbb),- (200, bbb),- (300, ccc); Query OK, 6 rows affected (0.00 sec) Records: 6 Duplicates: 0 Warnings: 0创建一张空表 no_duplicate_table结构和 duplicate_table结构一样 mysql create table no_duplicate_table like duplicate_table; Query OK, 0 rows affected (0.01 sec)mysql desc no_duplicate_table; ----------------------------------------------- | Field | Type | Null | Key | Default | Extra | ----------------------------------------------- | id | int(11) | YES | | NULL | | | name | varchar(20) | YES | | NULL | | ----------------------------------------------- 2 rows in set (0.00 sec)将 duplicate_table 的去重数据插入到 no_duplicate_table mysql insert into no_duplicate_table select distinct * from duplicate_table; Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0mysql select * from no_duplicate_table; ------------ | id | name | ------------ | 100 | aaa | | 200 | bbb | | 300 | ccc | ------------ 3 rows in set (0.00 sec)通过重命名表实现原子的去重操作 mysql alter table duplicate_table rename to duplicate_table_bak; Query OK, 0 rows affected (0.00 sec)mysql alter table no_duplicate_table rename to duplicate_table; Query OK, 0 rows affected (0.01 sec)聚合函数 案例 统计班级共有多少同学 mysql select count(*) from students; ---------- | count(*) | ---------- | 4 | ---------- 1 row in set (0.00 sec)统计班级收集的 email 有多少 mysql select count(email) from students; -------------- | count(email) | -------------- | 1 | -------------- 1 row in set (0.00 sec)统计本次考试的数学成绩分数个数 统计全部成绩 mysql select count(math) from exam_result; ------------- | count(math) | ------------- | 6 | ------------- 1 row in set (0.00 sec)统计去重成绩数量 mysql select count(distinct math) from exam_result; ---------------------- | count(distinct math) | ---------------------- | 5 | ---------------------- 1 row in set (0.00 sec)统计数学成绩总分 mysql select sum(math) from exam_result; ----------- | sum(math) | ----------- | 569 | ----------- 1 row in set (0.00 sec)统计平均总分 mysql select avg(chinesemathenglish) from exam_result; --------------------------- | avg(chinesemathenglish) | --------------------------- | 297.5 | --------------------------- 1 row in set (0.00 sec)返回英语最高分 mysql select max(english) from exam_result; -------------- | max(english) | -------------- | 90 | -------------- 1 row in set (0.00 sec)返回 70 分以上的数学最低分 mysql select min(math) from exam_result where math70; ----------- | min(math) | ----------- | 73 | ----------- 1 row in set (0.00 sec)group by子句的使用 在select中使用group by 子句可以对指定列进行分组查询 基本语法 select column1, column2, .. from table group by column;案例 准备工作创建一个雇员信息表 EMP员工表DEPT部门表SALGRADE工资等级表 mysql desc dept; ------------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | ------------------------------------------------------------- | deptno | int(2) unsigned zerofill | NO | | NULL | | | dname | varchar(14) | YES | | NULL | | | loc | varchar(13) | YES | | NULL | | ------------------------------------------------------------- 3 rows in set (0.00 sec)mysql desc emp; --------------------------------------------------------------- | Field | Type | Null | Key | Default | Extra | --------------------------------------------------------------- | empno | int(6) unsigned zerofill | NO | | NULL | | | ename | varchar(10) | YES | | NULL | | | job | varchar(9) | YES | | NULL | | | mgr | int(4) unsigned zerofill | YES | | NULL | | | hiredate | datetime | YES | | NULL | | | sal | decimal(7,2) | YES | | NULL | | | comm | decimal(7,2) | YES | | NULL | | | deptno | int(2) unsigned zerofill | YES | | NULL | | --------------------------------------------------------------- 8 rows in set (0.00 sec)mysql desc salgrade; ------------------------------------------- | Field | Type | Null | Key | Default | Extra | ------------------------------------------- | grade | int(11) | YES | | NULL | | | losal | int(11) | YES | | NULL | | | hisal | int(11) | YES | | NULL | | ------------------------------------------- 3 rows in set (0.00 sec)显示每个部门的平均工资和最高工资 mysql select deptno, avg(sal) avg, max(sal) max from emp group by deptno; ------------------------------ | deptno | avg | max | ------------------------------ | 10 | 2916.666667 | 5000.00 | | 20 | 2175.000000 | 3000.00 | | 30 | 1566.666667 | 2850.00 | ------------------------------ 3 rows in set (0.00 sec)每个部门的每种岗位的平均工资和最低工资 mysql select deptno, job, avg(sal) avg, min(sal) min from emp group by deptno, job; ----------------------------------------- | deptno | job | avg | min | ----------------------------------------- | 10 | CLERK | 1300.000000 | 1300.00 | | 10 | MANAGER | 2450.000000 | 2450.00 | | 10 | PRESIDENT | 5000.000000 | 5000.00 | | 20 | ANALYST | 3000.000000 | 3000.00 | | 20 | CLERK | 950.000000 | 800.00 | | 20 | MANAGER | 2975.000000 | 2975.00 | | 30 | CLERK | 950.000000 | 950.00 | | 30 | MANAGER | 2850.000000 | 2850.00 | | 30 | SALESMAN | 1400.000000 | 1250.00 | ----------------------------------------- 9 rows in set (0.00 sec)平均工资低于2000的部门和它的平均工资 mysql select deptno, avg(sal) avg from emp group by deptno having avg 2000; --------------------- | deptno | avg | --------------------- | 30 | 1566.666667 | --------------------- 1 row in set (0.00 sec)having经常和group by搭配使用作用是对分组进行筛选作用有些像where但是having通常在数据where选择完group by进行分组再执行having筛选。
http://www.hkea.cn/news/14341551/

相关文章:

  • 网站漂浮广告效果厦门市建设局网站住房保障专栏
  • 做繁体书的网站新冠2024中国又要封城了
  • 网站ul优化新闻头条最新消息摘抄
  • 教你如何建网站视频微营销方案
  • 做优秀网站质量好网站建设价格
  • 网站群 优点黔东南建设厅网站
  • 宁波网络建站公司有哪些dedecms网站别名解析
  • 那些网站专门做游戏辅助的wordpress主题超2m
  • 网站建设方案书阿里云可信赖的坪山网站建设
  • qq群网站制作怎么自己做淘宝网站吗
  • 公司网站建设费用怎么记账wordpress插件 数据
  • dtcms网站开发百度 医疗网站建设
  • 网站开发服务外包合同免费风景视频素材下载
  • 营销型企业网站系统模板下载wordpress能做app
  • 淘宝联盟建网站济源市网站建设
  • 微信公众号的跳转网站怎么做的潍坊专业滑轮组
  • 陕西有色建设有限公司网站企业信用信息公示系统福建
  • 自己做网站投放广告网站建立的重要性
  • 上海南站网站建设公司做餐饮网站
  • 深圳商业网站建设系统兰州中川国际机场
  • 遵化手机网站设计广州app开发定制公司
  • 做货代用什么网站找客户公众号官方
  • 什么是网站代理自己搭建网站服务器
  • 秦皇岛做网站公司如何选择网站托管公司
  • 垂直类网站怎么做网站文章更新数量
  • 律所网站建设建议免费托管wordpress
  • 怎样建设一个网站教学深圳做网站的公
  • 农村电商网站设计与发展现状微信小程序开发工具官网入口
  • 用于做网站的软件手机网站改版公司加盟
  • 电子商务营销网站建设网站页面打开速度