数据库管理
-
查询所有数据库
show databases;
-
创建数据库
create database dbName // 指定默认字符集创建数据库 default character set utf8; // 设置默认字符集
-
查看数据库默认字符集
show create database dbName;
-
删除数据库
drop database dbName;
-
修改数据库
alter database dbName default character set gbk;
-
进入数据库
use dbName;
表管理
-
查看所有表
show tables;
-
创建表
create table tableName( sid int, sname varchar(20), sage int, );
-
查看表结构
desc dbName;
-
删除表
drop table dbName;
修改表
-
添加字段
alter table tableName add column colName varchar(2); // 添加多个字段 alter table tableName add colName1 type , add colName2 type;
-
删除字段
alter table tableName drop column colName ;
-
修改字段类型
alter table tableName modify column colName varchar(100);
-
修改字段名称
alter table tableName change column oldColName newColName varchar(2);
-
修改表名称
alter table oldTableName rename to newTableName;
数据管理
增删改
-
增加数据
// 括号内的值必须依次按顺序插入所有字段 insert into tableName values(1,'张三','男',20); // 插入全部字段 // 插入部分字段 insert into tableName(id,name) values(2,'李四');
-
修改数据
// 修改表中字段的所有值 update tableName set colName = 'value'; // 按照条件修改字段值 update tableName set colName = 'value' where id = 1;
-
删除数据
-
delete 删除语句
// 可以带条件删除 // 只能删除表的数据,不能删除表的约束 // 删除的数据可以回滚(回滚) delete from tableName;
-
truncate 删除语句
// 不可带条件删除 // 既可以删除表的数据,也可以删除表的约束 // 不可回滚 truncate table tableName;
查询数据
数据:
测试数据库.png
1. 查询所有列
// * : 正则表达式,表示所有列
// tableName : 表示表名
select * from tableName;
2. 查询指定列
// colName : 代表要查询的列名,列名之间用逗号分隔
select colName1,colName2 from tableName;
// 可以为要查询的列指定"别名". 表的别名不能用字符串
// 注意 : 在多表查询时会经常用到表的别名
select colName1 as '别名',colName as '别名' from tableName as s;
3. 查询时添加常量列
// 在列名后直接添加常量列,这一列的值相同,也可为常量列设置"别名"
select colName1,colName2,'常量列内容' as '别名'(可用字符串) from tableName;
常量列.png
4. 查询时和并列
// 合并列 : 只能合并数值类型的字段
select colName1,colName2,(colName3 + colName4) as '别名' from tableName;
// 例句
SELECT id,NAME,(chinese + english + math + jsp + servlet) AS '总成绩' FROM student;
元数据.png
和并列后数据.png
5. 查询时去除重复记录
// distinct : 明显的 ; 独特的 ; 有区别的;
select distinct colName from tableName; // 语法1
select distinct(colName) from tableName; // 语法2
6. 条件查询
6.1条件查询 : 关键词是 "where"
select * from tableName where colName = xxx;
6.2 逻辑条件 : "and(与)" , "or(或)"
// 查询ID为2,或姓名为"绫波丽"的学生
select * from student where id = 2 or name = '绫波丽';
6.3 比较条件 : ">" , "<" , ">=" , "<=" , "=(等于)" , "<>(不等于)" , "between and"
// 查询servlet成绩大于70的学生的成绩和姓名
select name, servlet from student where servlet > 70;
// 查询jsp的成绩大于等于75,且小于等于90分的学生
select * from tableName where colName >= 75 and jsp <= 90; // 语法1
// between and 等价于 >= 且 <= (包前,包后)
select * from tableName where colName between 75 and 90; // 语法2
6.4 判空条件 : "null" , "空字符串"
判断空字符串.png 判断 null : is null / is not null , null表示没有值
判断空字符串 : ==' ' / <>' ' , 空字符串是有值的,但值为' '
// 需求 : 查询性别为空的学生(包括 NULL 和 空字符串)
select * from student where gender = '' or gender is null;
// 查询有地址的学生
select * from student where gender is not null and gender <> '';
6.5 模糊条件 : "like"
// 模糊查询中可以使用替换标记代替任意字符
// % : 表示任意数量个字符
// _ : 表示一个任意字符
------------------------------------------------------------
// 需求 : 查询姓 "李" 的学生
select * from student where name like '李%';
// 需求 : 查询姓"李",且名字只有2个字的学生
select * from student where name like '李_';
7. 聚合查询
使用"聚合函数"进行数据查询的方式就叫做"聚合查询"
常用的聚合函数: sum() , avg() , max() , min() , count()
需求 : 查询学生的servlet的总成绩.
// sum() : 求和函数
select sum(servlet) as 'servlet的总成绩' from student;
需求 :查询学生jsp的平均分
// avg() : 求平均值
select avg(jsp) as 'jsp的平均分' from student
需求 : 查询jsp的最高分和最低分
// max() : 求最大值
select max(jsp) as '最高分' from student;
// min() : 求最小值
select min(jsp) as '最低分' from student;
需求 :统计有多少学生
// count() : 求数据量
select count(*) as '数据量' from student;
8. 分页查询
limit关键字 : limit 起始行,查询行数
起始行 : 从0行开始
// 需求 :** 查询第1,2条记录
select * from student limit 0 ,2;
9. 查询后排序
关键字 : order by
语法 : order by colName asc / desc
不写排序规则默认是asc(正序)
asc : 正序、顺序
- 数值 : 递增 ;
- 字母 : 字母自然顺序(a-z)
desc : 倒序 、反序
-
数值 : 递减
-
字母 : 字母自然反序(z-a)
// 需求 : 按id顺序排序 select * from student order by id asc; // 需求,按servlet正序, 按jsp倒序 select * from student order by servlet asc, jsp desc;
10. 分组查询
关键字 : group by
// 需求 : 查询男女各多少人
select gender,count(* / id) from student group by gender;
11. 分组查询后筛选
分组查询后,在"group by"关键字后不能使用"where"关键字进行筛选,需要使用"having"关键字.group by 之前可以用where进行筛选
// 筛选总人数大于3的的性别
select gender, count(*) from student group by gender having count(*) > 3;
网友评论