创建数据库:create database 数据库名;
删除数据库:drop database 数据库名;
进入数据库:use 数据库名;
创建数据库:create table 表名
查看创建表的语法:show create table 表名;
查看表的结构:desc 表名;
查看当前数据库的表:show tables;
删除表:drop table 表名;
修改表名:
alter table 旧表名 rename 新的表名;
修改表中字段的类型:
alter table 表名 modify 字段名 新数据类型;
修改表,向表添加字段:
alter table 表名 add column 列名 数据类型 列的特征;
修改表,删除表中的字段:
alter table 表名 drop column 列名;
修改表,修改字段名:
alter table 表名 change 原字段名 新字段名 数据类型;
向表中插入数据:
insert into 表名(列名列表) values(值列表);
查询表的数据:
select 列名列表 from 表名
[where 条件] //根据条件边查边筛选
[group by 分组的列] //查询完了后再分组
[having 条件] //分完组后再筛选
[order by 排序列 asc/desc] //查询完了后再排序
查询的聚合函数:
sum()求总和,
count()统计总数,
avg()求平均数,
max()最大值,
min()求最小值。
普通列在一般情况下不能和聚合函数列一起用,除非这个变通列作为分组条件。
多表连接查询(表与表之间有一个列共用)
a.内连接:查询多张表,表之间的查询是并列
语法:select 列名列表 from 表1,表2,表3 where 表1的桥梁列=表2的桥梁列 and 表2的桥梁列=表3的桥梁列
语法:select 列名列表 from 表1
inner join 表2 on 表1的桥梁列=表2的桥梁列
inner join 表3 on 表2的桥梁列=表3的桥梁列
b.外连接:查询多张表,表之间的查询分主次。
左连接,左边的表为主要,全部显示,右边为次与左表匹配的数据显示,没有匹配的数据以null显示。语法:select 列名列表 from 表1 left join 表2 on 表1的桥梁列=表2的桥梁列.
右连接,右边的表为主要,全部显示,左边为次与右边匹配的数据显示,没有匹配的数据以null显示。语法:select 列名列表 from 表1 right join 表2 on 表1的桥梁列=表2的桥梁列.
eg://查询名称JavaEE的班级所有的学生信息
select stuNo,sname,age,sex from stu,class where stu.classid=class.id and class.cname='javaEE';
子查询:
一个查询中嵌套另一个查询。子查询效率比连表查询效率高。
eg://查询名称JavaEE的班级所有的学生信息
select stuNo,sname,age,sex from stu where classid=(select id from class where cname='javaEE');
注:能用子查询解决的问题,都可以用连表查询解决;能用连表查询解决的问题,不一定都可以用子查询解决。
模糊查询:
a.在某个范围内 between min1 and max1;
b.等于指定任一值: in(值1,值2);
c.模糊查询名字中以s开头的学生信息:select * from stu where sname like 's%';
通配符:%(通配任意长度的字符),_通配一个字符,[a-z]通配指定范围内任一个值。
修改表中的数据
update 表名 set 列名1=新值1,列名2=新值2 where 条件;(条件一定要记得)。
删除表中的数据:
a.delete from 表名 [where 条件]: //如果不写where条件,删除整个表中的数据
b.truncate table 表名(删除效率高):删除整个表中的数据。
网友评论