mysql操作数据表中的记录1
一、插入记录INSERT
mysql> create TABLE users(
-> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
-> username VARCHAR(20) NOT NULL,
-> password VARCHAR(32) NOT NULL,
-> age TINYINT UNSIGNED NOT NULL DEFAULT 10,
-> sex BOOLEAN
-> );(示例)
1.对于有默认增加的AUTO_INCREMENT用NULL就行:
(1)、mysql> INSERT users VALUES(NULL,'Tom',123,25,1);(2)、mysql> INSERT users VALUES(DEFAULT,'Jim',789,35,0);
2.还可以使用表达式:
mysql> INSERT users VALUES(DEFAULT,'Jim',789,3*7-5,0);
3.用逗号表达式一次性插入多条记录
mysql> INSERT users VALUES(DEFAULT,'Jim',789,DEFAULT,0),(DEFAULT,'Rose',md5('123'),23,1);
mysql> INSERT users SET username ='Ben',password='456';(一次性只能插入一个记录)
4.更新记录
(1)mysql> UPDATE users SET age = age - id,sex = 1;(把users里的所有记录age减去id,sex设成1)
(2)mysql> UPDATE users SET age = age + 10 WHERE id % 2 = 0;(用WHERE设置条件)
5,删除记录
mysql> DELETE FROM users WHERE ID = 3;(删除id为3记录,若再加入新纪录,新记录的id为默认递增)
6.SELECT 查询
(1)mysql> SELECT username,id FROM users;(可以用‘,’隔开重排序)
(2)mysql> SELECT users.id,users.username from USERS;(明确表)
(3)mysql> SELECT id AS userid,username AS uname FROM users;(用AS起别名)
7.WHERE语句
8.GROUP BY
(1)mysql> SELECT sex FROM users GROUP BY sex;(对sex按照sex分组)
(2)mysql> SELECT sex,id FROM users GROUP BY 1;(用序号表示前面的sex)
(3)mysql> SELECT sex,age FROM users GROUP BY sex HAVING age > 19;(按照age > 10分组,age必须在前面出现)
(4)mysql> SELECT sex FROM users GROUP BY sex HAVING count(id) >= 2;(如果id字段在函数里边,前面无需出现)
9.ORDER
(1)mysql> SELECT * FROM users ORDER BY id DESC;(按照id进行降序排序(desc))
(2)mysql> SELECT * FROM users ORDER BY age,id DESC;(先按照age进行顺序排序,如果age数值一样没有排序,则按照id降序排序)
10.LIMIT
(1)mysql> SELECT * FROM users LIMIT 2;
(2)mysql> SELECT * FROM users LIMIT 1,2;(按照0,1,2顺序排列)
(3)mysql> INSERT test(username) SELECT username FROM users WHERE age >= 10;(选择test表插入记录,为username字段赋值,从users里的username字段搜索age大于10的记录
小结:
1.INSERT:
2.UPDATE
3.DELETE
4.SELECT
一、什么是子查询
子查询返回的结果可以是:标量、一行、一列、子查询。
二、比较运算符子查询
(1)平均值 mysql> SELECT AVG(goods_price) FROM tdb_goods;
(2)四舍五入 mysql> SELECT ROUND(AVG(goods_price),2) FROM tdb_goods;
(3)按照一个条件查询 mysql> SELECT ROUND(AVG(goods_price),2) FROM tdb_goods;
(4)结合(2),(3)子查询
mysql> SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price >= (SELECT ROUND(AVG(goods_price),2)FROM tdb_goods);
(5)ANY,SOME,ALL的使用,如上图
mysql> SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price > ANY (SELECT goods_price FROM tdb_goods WHERE goods_cate = '超级本');
三、[NOT] IN/EXISTS引发子查询
四、INSERT......SELECT插入记录
mysql> CREATE TABLE IF NOT EXISTS tdb_goods_cates(
-> cate_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
-> cate_name VARCHAR(40) NOT NULL
-> );
mysql> SELECT goods_cate FROM tdb_goods GROUP BY goods_cate;
mysql> DESC tdb_goods_cates;
+-----------+----------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------------------+------+-----+---------+----------------+
| cate_id | smallint(5) unsigned | NO | PRI | NULL | auto_increment |
| cate_name | varchar(40) | NO | | NULL | |
+-----------+----------------------+------+-----+---------+----------------+
mysql> INSERT tdb_goods_cates(cate_name) SELECT goods_cate FROM tdb_goods GROUP BY goods_cate;
五、create select 一步实现
->UPDATE tdb_goods AS g INTER JOIN tdb_goods_brands AS b ON g.brand_name = b.brand_name
->SET brand_name = brand_id;
把商品表的表结构改变:(商品表结构的变量名和数据类型没有改变,现在改变它)
->ALTER TABLE tdb_goods
->CHANGE goods_cate cate_id SMALLINT UNSIGNED NOT NULL,
->CHANGE brand_name brand_id SMALLINT UNSIGNED NOT NULL;
->SELECT goods_id,goods_name,cate_name FROM tdb_goods INNER tdb_goods_cates
->ON tdb_goods.cate_id = tdb_goods_cates.cate_id;
如果有不符合连接条件的记录,不显示。
->SELECT goods_id,goods_name,cate_name FROM tdb_goods LEFT tdb_goods_cates
->ON tdb_goods.cate_id = tdb_goods_cates.cate_id;
->SELECT goods_id,goods_name,cate_name FROM tdb_goods RIGHT tdb_goods_cates
->ON tdb_goods.cate_id = tdb_goods_cates.cate_id;
->SELECT goods_id,goods_name,cate_name,brand_name,goods_price FROM tdb_goods AS g
->INNER JOIN tdb_goods_cates AS c ON g.cate_id = c.cate.id ,
->INNER JOIN tdb_goods_brands AS b ON g.brand_id = b.brand_id;
创建树分类表(自身连接)
mysql> CREATE TABLE tdb_goods_types(
-> type_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
-> type_name VARCHAR(50) NOT NULL,
-> parent_id SMALLINT UNSIGNED NOT NULL DEFAULT 0
-> );
将type—id和parent-id连接
1.有子类查父类
mysql> SELECT s.type_id,s.type_name,p.type_name FROM tdb_goods_types AS s LEFT JOIN tdb_goods_types AS p ON s.parent_id = p.type_id;
2.由父表查子表
SELECT p.type_id,p.type_name,s.type_name FROM tdb_goods_types p LEFT JOIN
->tdb_goods_types s ON s.parent_id = p.type_id;
(1)只显示父表的一个子表:
SELECT p.type_id,p.type_name,s.type_name FROM tdb_goods_types p LEFT JOIN
->tdb_goods_types s ON s.parent_id = p.type_id (加上)GROUP BY p.type_name ORDER BY p.type_id;
(2)显示父表的子表个数
SELECT p.type_id,p.type_name,count(s.type_name) childcount FROM tdb_goods_types p LEFT JOIN
->tdb_goods_types s ON s.parent_id = p.type_id (加上)GROUP BY p.type_name ORDER BY p.type_id;
多表删除
(1)看看那个有重复
SELECT goods _id,goods_name FROM tdb_goods GROUP BY goods_name HAVING
->count(goods_name) >= 2;
(2)把上面的(1)当作一个表,参照它在tdb—goods里删除(1)的元素
->DELETE t1 FROM tdb_goods AS t1 LEFT JOIN (SELECT goods_id,goods_name FROM tdb_goods GROUP BY
-> goods_name HAVING count(goods_name) >= 2 AS t2 ON t1.goods_name = t2.goods_name WHERE t1.goods_id > t2.goods_id);
mysql操作数据表中的记录1的更多相关文章
- MYSQL操作数据表中的记录
36:操作数据表中的记录插入记录 INSERT INTO 表名 VALUES(); 或者INSERT 表名 VALUES(); UPDATE更新记录(单表更新) DELETE删除记录( ...
- 操作数据表中的记录——SELECT (where表达式、GROUP BY、HAVING、LIMIT)
原文链接:http://www.ifyao.com/2015/01/26/%E6%93%8D%E4%BD%9C%E6%95%B0%E6%8D%AE%E8%A1%A8%E4%B8%AD%E7%9A%84 ...
- MySQL数据库基础(三)(操作数据表中的记录)
1.插入记录INSERT 命令:,expr:表达式 注意:如果给主键(自动编号的字段)赋值的话,可以赋值'NULL'或'DEFAULT',主键的值仍会遵守默认的规则:如果省略列名的话,所有的字段必须一 ...
- MySQL基础(三)(操作数据表中的记录)
1.插入记录INSERT 命令:,expr:表达式 注意:如果给主键(自动编号的字段)赋值的话,可以赋值‘NULL’或‘DEFAULT’,主键的值仍会遵守默认的规则:如果省略列名的话,所有的字段必须一 ...
- mysql删除表中的记录
大家都知道,在MySQL中删除一个表中的记录有两种方法,一种是DELETE FROM TABLENAME WHERE... , 还有一种是TRUNCATE TABLE TABLENAME. DELET ...
- MySQL(四) —— 操作数据表中的记录
插入记录 INSERT [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... //法二: ...
- 【MySQL】(4)操作数据表中的记录
1. 插入记录INSERT 方法一: INSERT [INTO] tbl_name [(clo_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),( ...
- MySQL--4操作数据表中的记录小结
最常用,最复杂的语句: 每一项的: 表的参照 From 条件 WHERE 进行记录的分组 GROUP BY 分组的时候对分组的条件进行设定 HAVING 对结果进行排序 ORDER BY ...
- 删除Mysql数据表中多余的重复记录的sql语句
数据表 sniper_tb 中存在主键 id,字段url,现需要在url字段上添加 unique,但由于url存在重复记录,导致添加失败. 如何删除表中多余的url重复记录,仅保持一条? 思路一 将 ...
随机推荐
- zuul ci
. ├── a_module ├── b_module ├── lib ├── zuul │ ├── check │ ├── ci │ ├── gate │ ├── layout.ya ...
- c博客作业01--顺序、分支结构
1.本章学习总结 1.1思维导图 1.2本章的学习体会及代码量学习体会 1.2.1学习体会 本周学习的感受:原先基础是0的,所以本周学习起来并不是很轻松,有很多知识运用的 不是很熟,但是基本的知识是能 ...
- (7/24) 插件配置之html文件的打包发布
从前面几节到现在,其实我们的项目结构是有问题的,因为我们直接把index.html文件放到了dist文件夹目录下.这肯定是不正确的,应该放到我们src目录下,然后打包到dist目录下,前面为了学习,才 ...
- Java Native调用C方法
1.通过JNI生成C调用的头文件:Java源码: import java.io.File; public class Test { static { System.load("D:" ...
- python自动化,使用unittest对界面操作,读取excel表格数据输入到页面查询结果,在把结果保存到另外一张excel中
# -*- coding: utf-8 -*-from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom ...
- 干货!微信自动跳转默认浏览器下载app的方法!
现在微信渠道可以说是拉新最快的渠道,因为微信具备强裂变性.但是目前微信对第三方下载链接的拦截是越来越严格了,那么想要在微信内肆无忌惮地推广链接就需要用到微信跳转浏览器的接口,那如何获取该接口呢? ...
- docker php容器中简单添加seaslog拓展
最近有个项目用到了seaslog,因为之前调试php的容器已经搭好了,不想再通过dockerfile重新搭建了,搜了半天没有东西可以装,就仿照着安装redis拓展操作了一顿 1.wget http:/ ...
- 【Debug】逻辑分析仪数据错乱,看波形为信号耦合导致数据错乱,实际上为逻辑分析仪地线没接上!
如图都有数据的时间段,数据错乱,实际为逻辑分析仪地线未接,接上就不会了.
- Going to university is supposed to be a mind-broadening experience.
Going to university is supposed to be a mind-broadening experience. That assertion is presumably mad ...
- nvm管理node版本
一.介绍与作用 不同的项目中可能使用的node版本不同,对于维护多个版本的node就是一件麻烦事了,而nvm就可以很方便的管理不同的node版本, 可以在不同的node版本间切换使用.NVM资源(针对 ...