MySQL学习笔记——增删改查

时间:2023-03-08 21:57:23
MySQL学习笔记——增删改查

有关数据库的DML操作

  -insert into

  -delete、truncate

  -update

  -select

    -条件查询

    -查询排序

    -聚合函数

    -分组查询

DROP、TRUNCATE、DELETE

-DELETE删除数据,保留表结构,可以回滚,如果数据量大,很慢,回滚就是因为备份删除的数据

-TRUNCATE删除所有数据,保留表结构,不可以回滚,一次全部删除所有数据,速度相对很快

-DROP删除数据和表结构,删除数据最快(直接从内存抹去这一块数据)

#1.指明字段进行插入,注意字段和值的数量和类型都需要匹配
INSERT INTO tb_dept (NAME,loc,description) VALUES('开发部','广州','负责软件开发工作'); #2.如果插入的values是所有字段,可以不同显式写插入的字段名,不推荐
INSERT INTO tb_dept VALUES(3,'财务部','广州','负责财务工作'); #auto_increment会记住曾经生成的值 #3.一次插入多条记录 mysql特有
INSERT INTO tb_dept (NAME,loc,description)
VALUES('开发部','广州','负责软件开发工作'),
('财务部','广州','负责财务工作'),
('市场部','广州','负责采购工作'); #4.可以从一张表中插入数据
#创建一张表和tb_dept表的结构一样,通过这种方式建表只是复制表结构,不复制约束
CREATE TABLE tb_dept2
SELECT * FROM tb_dept
#where id = 99 #先建表再插入
INSERT INTO tb_dept2(id,NAME,loc,description)
SELECT id,NAME,loc,description FROM tb_dept INSERT INTO tb_emp(id,NAME,sex,age,address,email,dept_id)
VALUES(1,'Tony','男',26,'广州','Tony@163.com',1); #更新 UPDATE table SET column = value [,column = value] [WHERE condition]
#where建议使用主键或者唯一键,建议是主键
UPDATE tb_emp SET age=23 WHERE id = 1;
UPDATE tb_emp SET age=23,sex='女' WHERE id = 2; #删除 DELETE [FROM] table [WHERE condition];
DELETE FROM tb_emp; #删除表所有数据
DELETE FROM tb_emp WHERE id=2; #阶段,DDL语句 TRUNCATE语句 作用是完全清空一个表
TRUNCATE TABLE tb_emp;

最简单的SELECT语句

#查找 字段、字段。。。从 表 *表示所有的列
SELECT NAME,loc,description FROM tb_dept
SELECT * FROM tb_dept
SELECT NAME FROM tb_dept #SELECT语句中的算数表达式
SELECT NAME,age,age*2
FROM tb_emp; #NULL和0还有空字符不是一个概念
SELECT * FROM tb_emp;
SELECT * FROM tb_emp WHERE age = 0;
SELECT * FROM tb_emp WHERE age IS NULL; #改变列的标题头,别名
SELECT NAME '姓名',age AS '年龄',age*2 '年龄乘2'
FROM tb_emp; #重复记录
#缺省情况下查询显示所有行,包括重复行
SELECT dept_id
FROM tb_emp; #使用DISTINCT关键字可从查询结果中清楚重复行
SELECT DISTINCT dept_id
FROM tb_emp; #DISTINCT作用的范围是后面字段的组合
SELECT DISTINCT dept_id,age
FROM tb_emp WHERE dept_id=1; #使用WHERE子句限定返回的记录
SELECT *
FROM tb_emp
WHERE age=22; #字符串和日期要用单引号括起来
SELECT *
FROM tb_emp
WHERE NAME = 'Tom'; #比较运算符> < >= <= = <>
SELECT NAME,age
FROM tb_emp
WHERE age>=24; SELECT NAME,age
FROM tb_emp
WHERE age>=24 AND age<27; #BETWEEN AND 包含最小值和最大值
SELECT NAME,age
FROM tb_emp
WHERE age BETWEEN 24 AND 27; #使用IN运算符
SELECT NAME,age
FROM tb_emp
WHERE age IN (22,26); SELECT NAME,age
FROM tb_emp
WHERE age NOT IN (22,26); #使用LIKE运算符进行模糊查询 _代表一个字符 %代表一个或者多个字符
SELECT NAME
FROM tb_emp
WHERE NAME LIKE '_a%'; #IS NULL
SELECT NAME,age
FROM tb_emp
WHERE age IS NULL; #对结果进行排序 ORDER BY 从高到低
SELECT *
FROM tb_emp
ORDER BY age DESC; #默认从低到高或者ASC
SELECT *
FROM tb_emp
ORDER BY age;