MySql学习——常用增删改查小结

SQL(Structure Query Language)分类

  • DDL(data definition language)数据定义语言:主要用于创建表,比如create,alter,drop等
  • DML(data manipulaton language)数据操纵语句:主要用于操作数据,比如 insert,delete,update,select
  • DCL(data control language)数据控制语句:主要用于控制不同数据访问权限和安全级别,比如grant,revoke等

本文主要讨论DML中增删改查四种常用的对数据的操作。

一、增  插入记录

基本语法:

  • INSERT INTO tablename (col1,col2,...) VALUES(value1,value2,...)
  • INSERT INTO tablename VALUES(value1,value2)
  • INSERT INTO tablename (col1,col2,...) VALUES(value1,value2,...), (value3,value34,...)
insert into student (name,gradeId) values('wpp','0');

insert into student values('33','wpppp','0','女','26','嘻嘻');

insert into student values('33','wpppp','0','女','26','嘻嘻'),('2','wpp','0','女','26','嘻嘻');
1	小明	2	男	13	嘿嘿
	wpp	0			
33	wpppp	0	女	26	嘻嘻
33	wpppp	0	女	26	嘻嘻
2	wpp	0	女	26	嘻嘻
  1. 第一条语句,在name和gradeId两列中插入一条记录,其它列显示null;
  2. 第二条语句,插入一条记录,这里values后面的顺序要与sql字段排列顺序一致;
  3. 第三条语句,插入多条记录,这样节省网络开销,减少数据库交互。

 二、删 删除记录

  • DELETE FROM tablename WHERE CONDITION
  • 也可以一次删除多个表的数据,这里操作delete语句一定一定要小心,如果不加where条件,会把整个表的数据都删掉的
delete from student where name='wpp'

三、改 修改记录

  • UPDATE tablename SET col1=value1,col2=value2,... WHERE CONDITION
  • 这里操作update语句也一定一定要小心,不加where条件,会更新整个表,我在第一次开发项目的时候没有加where导致整个表的数据都一样。。。
  • 更新也可以一次更新多个表,经常用于根据一个表的字段来动态更新另一个表的字段
update student as A,user as B set A.profile= 'heheheh' where A.name=B.username and B.username='小明'

四、查 查询记录

  • *是将所有的记录都选出来  SELECT * FROM tablename WHERE CONDITION     
select * from student
  • distinct来查询不重复的记录   SELECT DISTINCT 要查询的列 FROM tablename WHERE CONDITION   
select distinct * from student
  • asc为默认升序,dasc为降序 SELECT * FROM tablename WHERE CONDITION order by  col1 desc\asc, col2 desc\asc,...  
select * from student order by id
  •  1,3表示从第二条开始的三条记录SELECT * FROM tablename LIMIT 1,3   
select * from student LIMIT 0,1
  • 聚合 SELECT * FROM tablename group by 列 having condition    having和where的区别在于where是在聚合(group by)之前对记录过滤,having是在聚合后,在逻辑允许的情况下,尽量先用where语句过滤,这样减少聚合操作,最后再对聚合后的数据再次having过滤   group by实际上就是分类汇总
select * from student GROUP BY sex HAVING gradeId = '0'
  •  表连接查询  内连接和外连接,内连接仅选出两张表匹配的记录,外连接除匹配的记录还会选出左右表不匹配的记录,最常用的是内连接。如下第一条语句是内连接,第二条是外连接中的左连接,第三条是外连接中的右连接
select * from student as A, user as B where A.name=B.username

select * from student as A LEFT JOIN user as B on A.name=B.username

select * from student as A right JOIN user as B on A.name=B.username
  • 模糊查询  like进行模糊查询,like仅与cahr和varchar数据类型联合使用,between在某个范围内查询,in在列举值查询,需要注意的是like模糊查询%表示通配符,任何字符串出现的任意次数
select * from student where name like '%小明%'

select * from student where gradeId BETWEEN 0 and 2

select * from student where gradeId in('0','2')
  •  子查询  查询时condition是另外一个select语句的结果
select * from student where gradeId in(select gradeId from student)

注:数据库操作多元复杂化,但都遵循着一定的逻辑,写数据库语句的时候要先想好逻辑,在按照语句的规范填充 !

你可能感兴趣的:(Mysql)