有关数据库的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;