(快速入门)MySQL学习笔记一:(H增|I改|J删|K查)

说明

这个只是本人自己学习时做的笔记,比较基础,希望大佬不喜勿喷。
有需要的小伙伴可以参考一下,只是很基础的笔记。谢谢大家!

基础增删改查

语法代码:

-------------------------------------------------------------
--新增数据
    --多数据插入
        --insert into 表名 [字段列表] values(值列表),(值列表)...
    create table my_gbk(
    name varchar(10)
    )charset gbk;
    insert into my_gbk values('张三'),('李四'),('王五');
    --主键冲突
        create table my_student(
        stu_id varchar(10) primary key,
        name varchar(10)
        )charset utf8;
        insert into my_student values
        ('stu001','张三'),
        ('stu002','张四'),
        ('stu003','张五'),
        ('stu004','张六');
        insert into my_student values('stu004','小婷');
        --解决一:
            主键冲突更新:
            插入过程中主键冲突,那么采用更新方法。
            insert into my_student values() on duplicate key update 字段=新值;
            insert into my_student values('stu004','小婷') on duplicate key update name='小婷';
        --解决二:
            主键冲突替换:
            主键冲突后,替换原来的值。
            replace into my_student values('stu001','夏洛');
    --蠕虫复制
        --成倍增加,从已有的数据中获取数据,并且插入到新的数据表中。
        insert into 表名 values (select * from 表名);
        create table my_simple(
        name char(1) not null
        )charset utf8;
        insert into my_simple values('a'),('b'),('c'),('d');
        --蠕虫复制
        insert into my_simple(name) select name from my_simple;
        insert into my_simple select * from my_simple;
        注意:
        1.重复数据,没有业务意义,可以在短期内快速增加表的数据量,
        从而可以测试表的压力,还可以通过大量数据来测试表的效率。
        2.要注意主键冲突。
        3.可以迁移表,先复制表结构,然后蠕虫复制一下。
-----------------------------------------------------------------------
--  更新数据
    --1.在更新数据的时候,特别要注意:通常一定是跟随条件更新
    update 表名 set 字段名 = 新值 where 判断条件;

    --2.如果没有条件,是全表更新。但是可以使用limit来限制数量
    update 表名 set 字段名 = 新值 where 判断条件 limit 数量;

    --改变4个a变成e
    update my_simple set name='e' where name='a' limit 4;
-------------------------------------------------
--  删除数据
    --1.删除数据的时候尽量使用where条件限制。
    --2.删除数据的可以使用limit来限制数量。
    --delete删除数据的时候无法重置auto_increment.
    重置表选项的自增长的语法:
    truncate 表名;类似于先删除然后在创建
-------------------------------------------
--  查询数据
    --完整的查询指令
    select select选项 字段列表 from 数据源       (主句)        
    where条件 group by分组 having条件 order by 排序 limit限制 

--  select选项:
    --系统该如何对待查询得到的结果
    --ALL:默认的,表示保存所有的记录
    --distinct:去重,去除重复的记录,只保留一条(所有的字段都相同)
    select all * from my_simple;        //选择所有
    select distinct * from my_simple;   //去重后的

--  字段列表:
    --有时候需要从多张表获取数据,如果有同名字段学生-name|老师-name
    需要将同名字段命名成不同名的:别名alias
    基本语法:字段名【as】可以写也可以不写
    select name as name1,name name2 from my_simple;

--  from是为前面的查询提供数据:数据源只要是一个符合二维表数据即可。
    --单表数据
        from 表名;
    --多表数据
        从多张表获取数据
        from 表名,表名...
        select * from my_simple,my_student; //产生笛卡尔积。
    --动态数据
        from后面跟的数据不是一个实体表,而是一个从表中查询的数据表(子查询)
        基本语法:from (select 字段列表 from 表)as 别名;

--  where子句
    --用来从数据表获取数据的时候,然后进行条件筛选。符合就要,不符合就不要。
    --where是通过运算符进行结果比较来判断数据。

猜你喜欢

转载自blog.csdn.net/qq_37720914/article/details/81485651