• mysql 增删查改


    非关系型数据库
    关系型数据库
    Oracle mysql sqlserver db2 Postgresql Sqlite access

    sqlserver 微软
    db2 ibm
    ========================================
    数据库: 一些关联表的集合
    主键: 主键是唯一的 标识
    外键: 用于关联两个表

    复合键:
    索引: 把一个字段做优化

    参照完整性: 引用的实体必须要存在


    二叉树:

    ==============================================
    mysql 增删查改

    offset 偏移量
    limit

    limit必须要和offset联合使用不能单独使用

    mysql中%表示匹配所有
    查找
    select * from student where sname like "宋%";

    修改:
    update student set sname="赵丽颖",gender="女" where sid="4";

    删除:
    delete from student where sid>12;

    ==============================================

    排序: order by
    asc 升序 desc降序
    mysql中默认是升序

    select * from student order by class_id desc; #降序
    select * from student order by class_id; #默认升序

    分组排序: group by
    将查询的数据可以按照某个字段来分组(字段中不同的值即为一个组)

    如:将student表中按照class_id(班级)分组,同时统计每个班级的人数.
    mysql> select * from student;
    +-----+-----------+--------+----------+
    | sid | sname | gender | class_id |
    +-----+-----------+--------+----------+
    | 1 | 张三 | 男 | 4 |
    | 2 | 李四 | 男 | 4 |
    | 3 | 王五 | 男 | 3 |
    | 4 | 赵丽颖 | 女 | 3 |
    | 5 | 宋2 | 男 | 3 |
    | 6 | 宋3 | 女 | 3 |
    | 7 | 宋4 | 女 | 3 |
    | 8 | 宋5 | 女 | 3 |
    | 9 | 成龙1 | 男 | 4 |
    | 10 | 成龙2 | 男 | 4 |
    | 11 | 成龙3 | 女 | 4 |
    | 12 | 成龙4 | 女 | 4 |
    | 15 | 李白 | 男 | 3 |
    | 16 | 林允儿 | 女 | 1 |
    +-----+-----------+--------+----------+
    14 rows in set (0.00 sec)

    mysql> select class_id,count(*) from student group by class_id;
    +----------+----------+
    | class_id | count(*) |
    +----------+----------+
    | 4 | 6 |
    | 3 | 7 |
    | 1 | 1 |
    +----------+----------+
    3 rows in set (0.00 sec)

    使用 WITH ROLLUP
    WITH ROLLUP 可以统计该字段数据的总和

    mysql> select class_id,count(*) from student group by class_id with rollup;
    +----------+----------+
    | class_id | count(*) |
    +----------+----------+
    | 1 | 1 |
    | 3 | 7 |
    | 4 | 6 |
    | NULL | 14 |
    +----------+----------+
    4 rows in set (0.00 sec)

    这里的NULL表示三个班级的总人数
    我们可以使用 coalesce 来设置一个可以取代 NUll 的名称,coalesce 使用如下:

    mysql> select coalesce(class_id,"总人数"),count(class_id) as number from student group by class_id with rollup;
    +--------------------------------+--------+
    | coalesce(class_id,"总人数") | number |
    +--------------------------------+--------+
    | 1 | 1 |
    | 3 | 7 |
    | 4 | 6 |
    | 总人数 | 14 |
    +--------------------------------+--------+
    4 rows in set (0.00 sec)

    添加字段:

    mysql enum是指字段的类型 表示枚举类型

    mysql> alter table student add adders enum("sichuang","shanghai");
    Query OK, 0 rows affected (0.02 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    这里表示在student表中添加一个adders的字段,这个字段里面的值只能是sichuang 或者shanghai 如果添加的一行新的数据不为这两个值则会报错,(如果允许了可以为空,那么让其为空也是可以)
    否则插入一个其他的值则会报错,如下:

    mysql> insert into student (sname,gender,class_id,adders) values("李自成1","男","1","aaaa");
    ERROR 1265 (01000): Data truncated for column 'adders' at row 1

    删除字段:
    删除adders字段:

    mysql> alter table student drop adders;
    Query OK, 0 rows affected (0.19 sec)
    Records: 0 Duplicates: 0 Warnings: 0

    修改字段数据类型(modify和change都可以修改):

    mysql> alter table student modify sname char(16);
    Query OK, 15 rows affected (0.16 sec)
    Records: 15 Duplicates: 0 Warnings: 0

    使用change修改字段类型的时候需要,即使不修改字段名称但是也要把原名称写上,否则会报错
    mysql> alter table student change name name varchar(32) not null;
    Query OK, 15 rows affected (0.03 sec)
    Records: 15 Duplicates: 0 Warnings: 0


    修改字段名称: (只能是用change)
    注意修改字段名称只能是用change,modify不能修改字段名称。

    mysql> alter table student change gender sex char(32) not null;
    Query OK, 15 rows affected (0.11 sec)
    Records: 15 Duplicates: 0 Warnings: 0


    ALTER TABLE 对 Null 值和默认值的影响
    当你修改字段时,你可以指定是否包含只或者是否设置默认值。

    以下实例,指定字段 j 为 NOT NULL 且默认值为100 。
    mysql> ALTER TABLE testalter_tbl
    -> MODIFY j BIGINT NOT NULL DEFAULT 100;


    修改表名:

    mysql> alter table student rename student_new;
    Query OK, 0 rows affected (0.07 sec)

    查看表的创建命令记录:

    mysql> show create table student_new;
    +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | Table | Create Table |
    +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    | student_new | CREATE TABLE `student_new` (
    `sid` int(32) NOT NULL,
    `name` varchar(32) NOT NULL,
    `sex` char(32) NOT NULL,
    `class_id` int(11) NOT NULL,
    `phonenumber` enum('181') DEFAULT NULL,
    PRIMARY KEY (`sid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +-------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)


    ===============================================

  • 相关阅读:
    log4j使用教程
    (POI)Excel格式转Html格式
    log4j2使用教程
    Spring AOP 面向切面编程入门
    C# 标准事件模式
    1Angular的MVC和作用域
    3Angular的模块化
    2Angular的双向数据绑定(MVVM)
    5手动初始化Angular的模块与控制器
    python读取 UCS2 little endian(utf16le) 格式的文件
  • 原文地址:https://www.cnblogs.com/heaven-xi/p/10007319.html
Copyright © 2020-2023  润新知