zoukankan      html  css  js  c++  java
  • 【MySQL】(4)操作数据表中的记录

    1. 插入记录INSERT

    方法一:

    INSERT [INTO] tbl_name [(clo_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...;

    比如:

    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
    );
    # 插入记录,不指定列的数目时。必须全部的字段都要赋值
    INSERT users VALUES(NULL, 'Tom', '123', 25, 1);
    INSERT users VALUES(NULL, 'Tom2', '123', 28, 1);
    INSERT users VALUES(DEFAULT, 'Tom3', '111', 28, 1);
    # 使用数学表达式也能够加入值
    INSERT users VALUES(DEFAULT, 'Tom4', '111', 3*7+2/3, 1);
    # 给年龄DEFAULT。会採用默认值10
    INSERT users VALUES(DEFAULT, 'Tom5', '111', DEFAULT, 1);
    # 一次加入多条记录
    INSERT users VALUES(DEFAULT, 'Tom6', '111', DEFAULT, 1), (NULL, 'Rose', md5('213'), DEFAULT, 0);

    方法二:

    INSERT [INTO] tbl_name SET col_name={exp | DEFAULT},...;

    这种方法与第一种方式的差别在于,此方法能够使用子查询(SubQuery),此方法一次性仅仅能插入一条记录。

    比如:

    INSERT users SET username='Ben', password='456';
    方法三:

    INSERT [INTO] tbl_name [(col_name, ...)] SELECT ...;

    使用此方法能够将查询结果插入到指定数据表。


    2. 单表更新记录UPDATE

    UPDATE [LOW_PRIORITY] [IGNORE] table_reference SET col_name1={expr1 | DEFAULT} [, col_name2={expr2 | DEFAULT}] ... [WHERE where_condition];

    比如:

    # 全部记录的年龄都加5
    UPDATE users SET age=age+5;
    # 更新多列
    UPDATE users SET age=age-id, sex=0;
    # 更新id为偶数的记录
    UPDATE users SET age=age+10 WHERE id%2=0;


    3. 单表删除记录DELETE

    DELETE FROM tbl_name [WHERE where_condition];

    比如:

    DELETE FROM users WHERE id=6;

    即使在删除后,id号不连续,那么新增的数据还是会在最大的id号加一。


    4. 查询表达时解析

    SELECT select_expr [, select_expr ...] [FROM table_references [WHERE whrere_condition] [GROUP BY {col_name | position} [ASC | DESC],...][HAVING where_condition][ORDER BY {col_name | expr | position} [ASC | DESC], ...][LIMIT {[offset,] row_count | row_count OFFSET offset}]];

    每个表达式表示想要的一列,必须至少有一个。多个烈之间以英文逗号分隔。

    星号(*)表示全部列。

    tbl_name.*能够表示命名表的全部列。查询表达式能够使用[AS] alias_name为其赋予别名。别名可用于GROUP BY,ORDER BY或HAVING字句。

    比如:

    # 查看MySQL版本号
    SELECT VERSION();
    # 查看当前时间
    SELECT NOW();
    # 仅仅查看前两列
    SELECT id, username FROM users;
    SELECT username, id FROM users;
    SELECT users.id, users.username FROM users;
    SELECT id AS userid, username AS uname FROM users;
    # ASkeyword能够省略,可是尽量写上,避免不必要的错误
    SELECT id username FROM users;
    字段的顺序和结果集都将影响查询出的结果集。

    (1). WHERE

    条件表达式

    对记录进行过滤,假设没有指定WHERE字句,则显示全部记录。在WHERE表达式中,能够使用MySQL支持的函数或运算符。

    (2). GROUP BY

    查询结果分组

    比如:

    SELECT sex FROM users GROUP BY sex;
    # 1表示依照SELECT语句中第一个出现的字段排序
    SELECT sex FROM users GROUP BY 1;
    (3). HAVING

    分组条件

    比如:

    # 当HAVING语句有age的条件时,前面的SELECT中必须出现这个age字段
    SELECT sex, age FROM users GROUP BY 1 HAVING age>35;
    # 或者是一个聚合函数
    SELECT sex, age FROM users GROUP BY 1 HAVING count(id)>=2;
    (4). ORDER BY

    对查询结果进行排序

    比如:

    # 依照id降序排列
    SELECT * FROM users ORDER BY id DESC;
    # 同一时候以两个字段排序age默认升序,id降序
    SELECT * FROM users ORDER BY age, id DESC;
    (5). LIMIT

    限制查询结果返回的数量

    比如:

    # 从第1条開始返回2条记录
    SELECT * FROM users LIMIT 2;
    # 从第1条開始,偏移2条后,查询2条记录
    SELECT * FROM users LIMIT 2 OFFSET 2;
    # 从第4条開始(从0開始计数),返回2条记录
    SELECT * FROM users LIMIT 3, 2;
    SELECT * FROM users ORDER BY id DESC LIMIT 2, 2;
    CREATE TABLE test(id TINYINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20));
    # 将users年龄大于30的数据插入test表
    INSERT test(username) SELECT username FROM users WHERE age>=30;



  • 相关阅读:
    错误日志记录
    解决连接Oracle 11g报ORA-01034和ORA-27101的错误
    windows和linux 下将tomcat注册为服务
    ORA-12170: TNS:Connect timeout occurred
    ubuntu修改时区和时间的方法
    SecureCRT中文显示乱码的解决方法
    修復 “Failed to bring up eth0″ in Ubuntu virtualbox
    HDU 1358 Period
    rcp(插件开发)点击按钮出现 The chosen operation is not enabled 解决办法
    CRM上线之路 走上了CRM实施顾问-第12天上班 -第三周
  • 原文地址:https://www.cnblogs.com/zsychanpin/p/6805497.html
Copyright © 2011-2022 走看看