说明
这个只是本人自己学习时做的笔记,比较基础,希望大佬不喜勿喷。
有需要的小伙伴可以参考一下,只是很基础的笔记。谢谢大家!
基础增删改查
语法代码:
-------------------------------------------------------------
--新增数据
--多数据插入
--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是通过运算符进行结果比较来判断数据。