一、插入记录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. mac与Windows系统支持软件汇总

    踩过的坑,记录下

  2. (Python基础)字符串操作

    以下是我在学习过程中用的一些常用字符串操作的相关列子和具体注释,感兴趣的可以自己动手试试看 #字符串操作 name = 'my name is keep' print(name.capitalize( ...

  3. django中ajax的使用以及避开CSRF 验证的方式

    ajax(Asynchronous Javascript And Xml) 异步javascript和XML ajax的优点 使用javascript技术向服务器发送异步请求 ajax无须刷新整个页面 ...

  4. JConsole监控Linux上的Tomcat

    JConsole监控Linux上的Tomcat 从Java 5开始引入了 JConsole,来监控 Java 应用程序性能和跟踪 Java 中的代码.jconsole是JDK自带监控工具,只需要找到 ...

  5. Monggodb基础

    MongoDB 查询文档使用 find() 方法. find() 方法以非结构化的方式来显示所有文档. 语法 MongoDB 查询数据的语法格式如下: db.collection.find(query ...

  6. Teradata简介

    Teradata是受欢迎的关系数据库管理系统之一. 它主要适用于构建大规模数据仓库应用程序.Teradata通过并行性的概念实现了这一点. 它是由Teradata公司开发的. 无限并行化-  Tera ...

  7. Slf4j与log4j及log4j2的关系及使用方法

    Slf4j与log4j及log4j2的关系及使用方法 slf4j slf4j仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已,所以单独 ...

  8. openssl升级

    红帽6.2升级openssl方法 yum安装nginx时,发现openssl依赖包错误,提示openssl要求版本为1.0.1 ,但当前版本为1.0.0.通过网上介绍的办法,将openssl源码重新编 ...

  9. 机器学习-Sklearn

    Scikit learn 也简称 sklearn, 是机器学习领域当中最知名的 python 模块之一. Sklearn 包含了很多种机器学习的方式: Classification 分类 Regres ...

  10. 【读书笔记】segment routing mpls数据平面-1