java学习日志2-3

数据库的分类有关系型数据库和非关系新数据库,关系型数据库有mysql、Oracle等,非关系型的数据库有redis等。
mysql
sql语句的分类:
DDL(Data Definition Language) 数据库定义语言,主要对数据库、数据库表进行操作
DML(Data Manipulation Language)数据库操作语言,主要 对表进行增、删、改操作
DQL 数据查询语言
DCL 数据库权限管理

  • DDL

库相关

创建数据库
create database mybs;
#如果一个数据库已经存在再次创建时就会出错,所以在创建数据库时可以常看数据库是否已经存在
create database if not exists mybs;
#创建时设置编码格式
create database mybs character set utf8;
#修改数据的编码格式
alter database mybs character set gbk;
#查看创建的数据库
show create database mybs;
#查看所有的数据库
show databases;

表相关

#创建表之前,先要移动到相应的数据库下
use mybs;
#创建表,创建表时需要指定好类型(mysql中没有boolena类型的数据)
create table stu(sid int(10), sname varchar(4));
#查看表结构(desc 还可用在排序中进行降序排列)
desc stu;
#修改表名
alter table stu rename to student;
#在表的末尾增加一个字段
alter table stu add sex char(2);
#在表的最前面增加一个字段
alter table stu add sno int(11) first;
#在某个字段的后面进行添加
alter table stu add age int(2) after sname;
#删除列
alter table stu drop age;
#修改字段的数据类型
alter table stu modify sid varchar(10);
#修好字段的名称和数据类型
alter table stu change sid sid2 int(20);
#删除表 
drop table stu;
  • DML
# 向表中插入值(stu 表中有sid,sname,sex字段)
insert into stu (sid,sname) values(111,'z3');
#如果不写表的每个字段,插入时的value值要全部写全
insert into stu values(222,'l4','男');
#可同时插入多个
insert into stu values(333,'w5','男'),(444,'z6','男');
#修改表中的值
update stu set sname='z7' where sname='z6';
#删除表中的值(delete 只会删除表的数据)
delete from stu where sname='z7';
#删除表中的值(truncate 会删除表结构,删除效率比delete高,但不能使用where语句
truncate table stu;
  • DQL
    DQL主要用来进行数据的查询,查询结果会形成一张伪表,不会改变表中的数据
#查询表内的全部内容
select * from stu;
#查询某一字段并去除重复
select distinct sname from stu;
#设置别名
select sname as 'name' from stu;
#条件查村 不等于
select sanme from stu where sid = 1;
select sname from stu where sid not in (1);
#条件查询 区间范围
select * from stu where sid > 2 and sid<5;
select * from stu where sid between 2 and 5;
#条件查询 或者
select * from stu where sid = 2 or sid = 3;
select * from stu where sid in (2,3);
#模糊查询 %表示匹配一个或多个字符,_匹配一个字符
#查询sname里包含a的项
selet * from stu where sname like '%a%';
#查询内容是空的项
select * from stu where sname is null;
#查询结果降序desc/升序asc排列
select * from stu  order by sid desc;
select * from stu order by sid asc;
#mysql聚合函数
#1.count(*) count(1) 查询出总记录数
#2.sum(列名) 查询出总和
#3.avg(列名) 查询出平均值
#4.max(列名) 查询出最大的值
#5.min(列名) 查询出最小的值
select count(1) from stu where sid>5;
#分页查询 (没页显示2条数据,展示第3页)
select * from stu limite 3,2
#分组
select count(*) from stu group by sex;
#过滤(having 用于分组后进行筛选,而where用于分组前的筛选)
select count(*) from stu group by sex having sid is not null;
#用于查询的关键字是有先后顺序的,不能颠倒顺序
select * from stu where sex = '男' groub by sid having sname is not null order by sid limit 0,2;