DML :增删改表中数据
语法:
添加数据:
insert into 表名(列1,列2,。。。,列n)values(数据1,数据2,。。。,数据n);
删除数据:
DELETE FROM student WHERE id=2;如果不加条件则删除整个表的数据
不推荐使用有多少条就会执行多少条操作
TRUNCATE TABLE student;--删除表再创建一个一样的空表
修改数据:
UPDATE 表名 SET id=4,NAME='雪' WHERE age=17;
DQL:查询表中的记录
select *from 表名;查询表
语法:
select
字段列表
SELECT address FROM student2; 查询结果集
SELECT DISTINCT address FROM student2; 去除重复结果集
求和
SELECT NAME,math,english,IFNULL(math,0)+IFNULL(english,0)FROM student2; 如果为null替换为0
SELECT NAME,math,english,IFNULL(math,0)+IFNULL(english,0)AS 总分 FROM student2; 起别名总分as可以省略
SELECT * FROM student2 WHERE age>20 AND age<50;
SELECT * FROM student2 WHERE age BETWEEN 20 AND 50;
查询范围
SELECT * FROM student2 WHERE age=20 OR age=50 OR age=45;
SELECT * FROM student2 WHERE age IN (20,50,45);
NULL 需要用is 或者 is not 来判断,不能使用其他符号
SELECT * FROM student2 WHERE NAME LIKE'马%'; 查询姓马的人
SELECT * FROM student2 WHERE NAME LIKE'_化%';查询第二个字有化的人
排列方式
SELECT *FROM student2 ORDER BY math ASC;升序排列
SELECT *FROM student2 ORDER BY math DESC; 降序排列
聚合函数:
SELECT AVG(math) AS '数学' FROM student2; 计算平均值
分组查询
SELECT sex,AVG(math) '数学' FROM student2 GROUP BY sex;
SELECT sex,AVG(math) '数学' FROM student2 WHERE math>80 GROUP BY sex;
where再分组之前限定,having 再分组之后进行限定
where后不可以跟聚合函数的判断,having可以跟聚合函数的判断。
分页查询:
SELECT * FROM student2 LIMIT 0,3;
SELECT * FROM student2 LIMIT 3,3;
SELECT * FROM student2 LIMIT 6,3;
约束:
CREATE TABLE stu(
id INT,
NAME VARCHAR(20) NOT NULL
);
ALTER TABLE stu MODIFY NAME VARCHAR(20);删除非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL; 创建表后添加非空约束
ALTER TABLE stu2 DROP INDEX phone_number;删除唯一约束,不能用modify。
主键约束,非空且唯一
ALTER TABLE stu2 DROP PRIMARY KEY;主键删除
自动增长(一般和主键一起):
alter table stu modify id int; 删自动增长
alter table stu modify id int auto_increment;添加自动增长
外键约束;
删除外键:
alter table emplyee drop foreign_key emp_dept_fk;
创建表后,添加外键
alter table employee add constraint emp_dept_fk foreign key (dep_id) references department(id);
级联操作:
无级联时外键操作:
添加外键时设置级联更新
级联删除,先删除外键再级联删除: