一、插入记录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的更多相关文章

  1. MYSQL操作数据表中的记录

    36:操作数据表中的记录插入记录   INSERT INTO 表名  VALUES();   或者INSERT 表名  VALUES();  UPDATE更新记录(单表更新)  DELETE删除记录( ...

  2. 操作数据表中的记录——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 ...

  3. MySQL数据库基础(三)(操作数据表中的记录)

    1.插入记录INSERT 命令:,expr:表达式 注意:如果给主键(自动编号的字段)赋值的话,可以赋值'NULL'或'DEFAULT',主键的值仍会遵守默认的规则:如果省略列名的话,所有的字段必须一 ...

  4. MySQL基础(三)(操作数据表中的记录)

    1.插入记录INSERT 命令:,expr:表达式 注意:如果给主键(自动编号的字段)赋值的话,可以赋值‘NULL’或‘DEFAULT’,主键的值仍会遵守默认的规则:如果省略列名的话,所有的字段必须一 ...

  5. mysql删除表中的记录

    大家都知道,在MySQL中删除一个表中的记录有两种方法,一种是DELETE FROM TABLENAME WHERE... , 还有一种是TRUNCATE TABLE TABLENAME. DELET ...

  6. MySQL(四) —— 操作数据表中的记录

    插入记录 INSERT [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),... //法二: ...

  7. 【MySQL】(4)操作数据表中的记录

    1. 插入记录INSERT 方法一: INSERT [INTO] tbl_name [(clo_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),( ...

  8. MySQL--4操作数据表中的记录小结

    最常用,最复杂的语句: 每一项的: 表的参照  From 条件    WHERE 进行记录的分组 GROUP BY 分组的时候对分组的条件进行设定  HAVING 对结果进行排序  ORDER BY ...

  9. 删除Mysql数据表中多余的重复记录的sql语句

    数据表 sniper_tb 中存在主键 id,字段url,现需要在url字段上添加 unique,但由于url存在重复记录,导致添加失败. 如何删除表中多余的url重复记录,仅保持一条? 思路一 将 ...

随机推荐

  1. 提取和匹配线特征的一个demo

    一.代码来源: https://github.com/drozdvadym/opencv_line_descriptor 二.依赖包:OpenCV 2.4.9 三.Matching的运行结果截图: 四 ...

  2. 【Python】Elasticsearch和elasticsearch_dsl

    官网:https://elasticsearch-py.readthedocs.io/en/master/api.html 官网:https://github.com/elastic/elastics ...

  3. wdk1703+vs2015编译的诡异问题

    最近将wdk升级到1703(10.0.15063.0)版本,编译一个新建的minifiter项目居然出现了失败 提示错误为 WindowsDriver.common.targets(460,5): e ...

  4. python-day4装饰器、生成器、迭代器、内置方法、序列化、软件目录

    @生成器generator a=(i*2 for i in range(10)) a.__next__()#等同于next(a),基本都不用,多用for循环a.send(m)#将m传为yield的值 ...

  5. zabbix3.x添加华为(93069306)网络设备详解

    转载自:https://www.cnblogs.com/yinzhengjie/p/6768006.html 前言: 欢迎加入:高级运维工程师之路 598432640 相信大家在看我的文章之前,也看过 ...

  6. Tesseract--主要API功能介绍

    tesseract本身代码是由c/c++混编而成的,其中有用的简单的接口函数几乎都是在baseapi.h中.     从其处理过程中,不难得出:它还需要有一个image处理的类,及相关的方法:这样子, ...

  7. Win10远程桌面 出现 身份验证错误,要求的函数不受支持,这可能是由于CredSSP加密Oracle修正 解决方法

    升级至win10 最新版本18362,远程桌面连接Window Server时报错信息如下: 出现身份验证错误,要求的函数不正确,这可能是由于CredSSP加密Oracle修正. 解决方法: 运行 g ...

  8. logstash 切分tomcat日志

    以下配置是logstash切分tomcat catalina.out日志. http://grok.qiexun.net/  分割时先用这个网站测试下语句对不对,能不能按需切割日志. input { ...

  9. Spring Cloud基础教程

    Spring Cloud基础教程  2017-04-04 被围观 90375 次 该教程内容不定时更新,如您对这些内容感兴趣,可以关注我的博客或微信公众号! 本教程示例代码: GitHub:https ...

  10. [原创] 扩展jquery-treegrid插件, 实现勾选功能和全删按钮.

    新上手一个项目, 因而正好想学习下bootstrap, 所以就采用asp.net mvc + bootstrap来做.  因为需要TreeGrid的控件, 本来想用easyUI.LingerUi.DW ...