一 :数据库管理:
- show databases; 展示当前所有的数据库
- use 数据库名称; 选择指定的数据库
- show tables; 展示当前数据库下的所有的表
- desc 表名; 查看当前的表结构
- show create table/view 表名/视图名 查看表的建表/视图过程
- rename table oldname to newname 改表名
二:增
- insert into 表名(列名,列名......) values(列值,列值......) 列名和列值一一对应,插入所有列的数据
- insert into 表名(指定列名,指定列名......) values(列值,列值......) 插入指定列的数据
- insert into 表名 values(列值,列值......),(列值,列值......),(列值,列值......)...... 插入多条数据
三:删
- delete from 表名 where 指定要删除的数据 删除某条或某些数据
- drop table/view 表名 删除表/视图
- truncate 表名 清空表 (truncate和delete的区别是truncate是删除表后再次创建表,delete只是单纯的删除数据,自增长的信息仍然被记录)
- TRUNCATE 和DELETE只删除数据, DROP则删除整个表(结构和数据)
- DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作
- TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。
四:改
- update 表名 set 列名=列值 where 指定修改的数据
五:查
- 模糊查询('_'通配单一字符,'%'通配任意字符)
- select * from 表名 where 列名 like '张_' 查询匹配以张开头的俩个字符的数据
- select * from 表名 where 列名 like '张%' 查询匹配以张开头多个字符的数据
六:null (判断是否为null)
- is null
- not is null
七:比较运算符(<,=,>, in, !=, >= , <= , between)
- select * from 表名 where 列名 in(列数据,列数据) 查询符合在集合内的数据
- select * from 表名 where 列名 between 1 and 10 查询符合1至10内的数据(包含1和10)
八:逻辑运算符(not ! 非 ,or || 或 , and && 与)
九:group分组和统计函数
- 统计函数(avg()求平均函数,count()求行数,max()求最大,min()求最小,sum()求和)
- select avg(列名) from 表名 计算当前列下数据的平均值
- select count(*) from 表名 计算当前表共有多少行
- 创建一个Student表,包含ID,Name,Age,Class,Score
- 查询每个班级总分最高的一个学生# select ID,Name,Class,Age,max(Score) as MaxScore from Student group by Class
十:having筛选
- having和where的区别,where是针对磁盘的数据操作,having是针对内存里的数据操作
- 创建一个shop表,包含ID,shop_name,shop_price,market_price,查询市场价高于200的商品
- select ID,shop_name,market_price-shop_price as low from goods having low>200
十一:排序(order by....asc/desc)
- select shop_price from shop order by shop_price #默认升序,desc倒序排列
十二:限制取出条目(limit)
-
select shop_price from shop order by shop_price DESC limit 1,3#1是偏移量,3是取出的条目数,偏移量默认0,当前为倒序从第二条开始,取出3条数据
十三:子句的查询顺序(where>group by>having>order by,limit)
十四:exists子查询
- 创建Boy表,包含Bid,Bname,Girl表,包含Gid,Gname
- select * from Boy where exists (select * from Girl where Boy.Bid=Girl.Gid) 取出符合条件的数据
十五:内连接,左右连接查询(查询并集也就是外连接mysql是不支持的)
- 创建Boy表,Girl表,包含Bid,Gid,Bname,Gname
- select Gname,Bname,Boy.id,Girl.id from Boy inner join Girl on Boy.id = Girl.id 内连接,取出符合条件的数据
-
select Bname,Gname,Boy.id,Girl.id from Boy left join Girl on Boy.id =Girl.id 取出左表的所有数据和符合条件的右表的数据
十六:union查询(union查询就是把2条或者多条sql语句的查询结果,合并成一个结果集。)
- 必须满足:各语句取出的列数相同,列名称可以不一致,列名称会以第一条sql语句的列名为准,完全相同的俩条数据会被合并,合并是比较耗时的,一般不让union进行合并使用union all
- select Bname,Bid from Boy union select Gname,Gid from Girl 将俩条sql语句的查询结果合并为了一个结果集