目录
一、增(Create)
drop table if exists student;
create table student(
id int,
sn int comment '学号',
sname varchar(20) comment '姓名',
e_mail varchar(20) comment '邮箱'
);
插入数据:
1、全列插入
INSERT INTO table_name VALUES(字段1要插入的值,字段2要插入的值);
顺序为建表时的默认顺序
insert into student values(10,1,'张三',NULL);
insert into student values(11,2,'李四','1234567@.com');
2、指定列插入
INSERT INTO table_name(属性名1,属性名2...) VALUES(字段1要插入的值,字段2要插入的值...);
insert into student(sn,sname) values(3,'王五');
3、插入多行数据
INSERT INTO table_name(属性名1,属性名2...) VALUES(字段1要插入的值,字段2要插入的值...)(字段1要插入的值,字段2要插入的值...);
insert into student(sn,sname) values(3,'王五')(4,'赵六');
二、查询(retrieve)
1、全列查询(一般不建议使用)
效率较低,涉及到了索引优化问题
select * from student;
2、指定列+表达式查询
select id+10,concat(sname,'学生'),100 from student;
结果id属性列会加10,sname后面统一加学生二字(使用concat函数连接字符串),后面还会多一列名称和值皆为100的属性
3、别名
select id '卡号' from student;
空格隔开写别名
4、DISTINCT去重
select distinct id from student;
这里id相同的元组会被去掉。如果这里写两个属性,则只有这两个属性全部相同才会被去掉。
5、ORDER BY排序
select id,amount from student order by id,amount;-- 升序
select id,amount from student order by id,amount DESC;-- 降序
默认为ASC(升序),DESC为降序。
查找结果优先按照id(主关键字)进行排序,如果id相等再按照amount进行排序(次关键字),按书写顺序来。
注:如果有NULL数据视为比任何值都小;如果使用别名也可以进行排序
6、WHERE条件查询
like使用样例:
select Sname from student where Sname like '李%';-- 匹配到所有姓李的学生
select Sname from student where Sname like '李_';-- 匹配到所有姓李的两个字的学生
注:WHERE条件可以使用表达式,但不能使用别名
7、分页查询(MySQL特有)
select * from student limit 2,3;
表示从下标2行开始(第三行),向下显示三行数据。
注:分页操作是基于上面的过滤结果进行分页的,而且如果顺序不一样(升序降序),分页结果也是不一样的。
三、修改(Update)
UPDATE table_name SET 要修改的属性 = 修改量 [WHERE ...] [ORDER BY ...] [LIMIT ...]
update student set Sname = '冰墩墩' where Sno = '1';
大部分情况,update都会结合where操作,当然还有limit和order by。
建议:修改前先写一下select语句,以确保修改无误
四、删除(Delete)
DELETE FROM table_name where 条件 order by
delete form student where Sno = '1';-- 删除学号为一的学生数据
delete from table_name-- 删除整表数据