一、常用操作数据库的命令
1.show databases; 查看所有的数据库
2.create database test; 创建一个叫test的数据库
3.drop database test;删除一个叫test的数据库
4.use test;选中库 ,在建表之前必须要选择数据库
5.show tables; 在选中的数据库之中查看所有的表
6.create table 表名 (字段1 类型, 字段2 类型);
7.drop table 表名; 删除表
8.desc 表名;查看所在的表的字段
二、对数据库数据进行操作
1.增加数据(insert)3中方式
1.1 insert into 表名 values(值1,值2,......);
1.2 insert into 表名(字段1,字段2,......) values(值1,值2,......);(推荐)
1.3 insert into 表名(字段1,字段2,......) values(值1,值2,......),(值1,值2,......),(值1,值2,......);
2.删除数据(delete)
2.1 delete from 表名;(删除全部数据,不建议使用)
2.2 delete from 表名 where 条件;(删除符合条件的数据)
3.更新数据(update)
update 表名 set 字段1=值1,字段2=值2 where 条件;
4.查询数据(select)
4.1 select * from 表名;(考虑到SQL优化的问题,查询时不要使用*)
4.2 select 字段 from 表名;(推荐)
根据条件查询数据select 字段 from 表名 where 条件;
where 条件 后面跟的条件
关系:>,<,>=,<=,!=
逻辑:or,and
区间:between...and... (闭区间,包含边界)
5.排序(order by)(desc(降序)|asc(升序(默认)))
5.1 select * from 表名 order by 字段 desc|asc;
5.2 select * from 表名 order by 字段 desc|asc,字段 desc|asc;(多字段排序)
6.常用的统计函数 sum,avg,count,max,min
只分组:select * from 表名 group by 字段;
分组统计:select count(num) as cn,num from a group by num having cn>1;
7.分页 select * from 表名 limit 偏移量,数量
说明:
7.1 不写偏移量的话就是默认的为0
7.2 实现分页的时候必须写偏移量
偏移量计算:limit (n-1)*数量 ,数量
三、修改表的命令
1.修改字段类型 alter table 表名 modify 字段 字段类型;
2.添加新的字段 alter table 表名 add 字段 字段类型;
3.添加字段并指定位置 alter table 表名 add 字段 字段类型 after 字段;
4.删除表字段 alter table 表名 drop 字段;
5.修改指定的字段 alter table 表名 change 原字段名 新字段名 字段类型;
四、多表联合查询
1.内连接(inner join)
方式一:
select studentName,className from t_student s,t_class c where s.classId=c.classId;
方式二:
select studentName,className from t_student s inner join t_class c on s.classId=c.classId;
2.外连接
2.1 左连接(left join)
select studentName,className from t_student left join s,t_class c on s.classId=c.classId;
2.2 右连接(right join)
select studentName,className from t_student right join s,t_class c on s.classId=c.classId;
3.子嵌套查询
一般在子查询中,程序先运行在嵌套在最内层的语句,再运行外层。因此在写子查询语句时,可以先测试下内层的子查询语句是否输出了想要的内容,再一层层往外测试,增加子查询正确率。否则多层的嵌套使语句可读性很低。
子查询一般与in操作符结合使用,也可用=>、<等。
select studentName from t_student where classId in (select classId from whereclassName=’一班’);
四、复制表结构和表中数据
insert into select from 和 select into from 都是用来复制表结构和表中数据
1.区别
1.1 insert into select from 要求目标表已存在数据库中
1.2 select into from 要求目标表不存在,在插入时会自动创建
2.insert into select from 语句
insert into Table2(field1,field2,...) select value1,value2,... from Table1;
注意:
(1)要求目标表Table2必须存在,并且要复制的字段field,field2...也必须存在
(2)注意Table2的主键约束,如果Table2有主键且不为空,则 field1, field2...中必须包括主键
(3)注意语法,不要写成
insert into Table2(field1,field2,...) values(select value1,value2,... from Table1);
3.select into from 语句
select value1,value2,... into Table2 from Table1;
注意:
(1)目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中