Java基础之MySQL(一)
一、MySQL简介及在DOS下操作MySQL
MySQL是一种中型的关系数据库管理系统(DBMS,Database Management System)。
注意:关系型数据库是按照表的方式存储数据的。
DOS环境下操作MySQL
通过DOS操作MySQL的常用命令
1、进入MySQL环境
mysql -h MySQL服务器地址 -u 用户名 -p
如下图进入我的本地数据库,MySQL服务器地址是:localhost,用户名是:root
2、显示所有数据库
show databases;
3、进入某个数据库
use 数据库名称;
如下图进入数据库mysql中
4、显示所有表
show tables;
如下图,查看了mysql数据库下的所有表
二、基本SQL语句
SQL:(Structured Query Language)结构化查询语言。操作关系型数据库的专用语言。
可分为:
DDL(Data Definition Language):数据库模式定义语言
是用于描述数据库中要存储的现实世界实体的语言。eg:创建数据库、创建表(删除、修改)等操作。
DML(Data Manipulation Language):数据库操纵语言
如插入(insert)数据、删除(delete)数据、修改(update)数据
DQL(Data Query Language):数据库查询语言
select查询数据
DCL(Data Control Language):数据库控制语言
用来设置或更改数据库用户或角色权限的语句
1、创建数据库
create database 数据库名称 [default character set 'utf8']
注:方括号中的内容是可选内容,MySQL数据默认的编码方式是utf8,可不写;
关系型数据库中的数据是存放于表中的而不是存放于数据库中
如创建数据库mydb
create database mydb default character set 'utf8';
2、创建表
create table 表名称(
字段名1 数据类型 约束[primary key],
字段名2 数据类型 约束...,
字段名3 数据类型 约束...,
);
如创建学生表(Student),有学号,姓名,性别和成绩这四个字段
create table Student(
stu_id int auto_increment primary key,
stu_name varchar(20) not null,
stu_sex varchar(10) not null,
socre double
);
解释一下上面的几个关键字:
auto_increment:这个关键字的意思是学生的学号自动增长,可以不用我们去添加
primary key:主键,设置这张表的主键是学号,能唯一的标识一条记录,就好像身份证号一样
数据库中有char和varchar,它们的区别是:如果你给定char的长度,那么无论你输入的字符是多少(前提是输入数要小于规定数),那么它最终就会占用那么长的空间,而varchar则是占用你所输入的字符的长度,不会占用你给定的长度
3、向表中从插入记录
语法一 :(指定字段名插入记录):
insert into 表名称(字段名A,字段名B...)values(值A,值B...);
用该语法插入记录(1,'张三','男',69.5)
insert into student(stu_id,stu_name,stu_sex,score)values(1,'张三','男',69.5);
语法二:(不指定字段插入记录,插入的值对应于表中的每个字段)
insert into 表名称 values(值1,值2,...);
用该语法插入记录(2,'李四','男',70.5)
insert into student values(2,'李四','男',70.5);
语法三:(插入多条记录)
insert into 表名称(字段A,字段B...)values(值A1,值B1,...),(值A2,值B2,...),...;
用该语法插入两条记录
insert into student(stu_id,stu_name,stu_sex,score)values(3,'王五','男',80),(5,'王娟','女',91.5);
最终插入的所有记录如下图
4、删除数据
delete from 表名称 [where 条件];
删除student表中的3号王五
delete from student where stu_id=3;
5、修改数据
update 表名称 set 字段名1=修改的值1[字段名2=修改的值2...][where 条件]
修改student表中的5号王娟的成绩
update student set score=88 where stu_id=5;
6、查询数据
select 字段1[as 别名],字段2[as 别名],... from 表名称 [where 条件];
如查询2号李四的性别和成绩
select stu_sex as 性别,score as 成绩 from student where stu_id=2;
三、排序查询、模糊查询、限制查询
数据库中的学生信息
1、排序查询
select 字段1,字段2,... from 表名称 [where 条件][order by 字段名 [desc]];
如将学生表中的数据按升序查询
select * from student order by score asc;
2、模糊查询(like)
通配符:
% 代表任意多个任意字符
_ 代表一个任意字符
如查询所有姓张的学生信息
select * from student where stu_name like '张%';
查询名字只有两个字、并且最后一个字是'三'的学生的信息
select * from student where stu_name like '_三';
3、限制(limit)查询
(1)限制行数的查询
select * from 表名称 [where 条件] [limit n];
注意:limit n代表最多查询n条
如查询学生表的前5条学生信息
select * from student limit 5;
(2)根据偏移量(从0开始,代表第一行)和查询数量,查询出指定位置的记录
select * from 表名称 [where 条件] [limit offset,n];
注意:offset代表偏移量,偏移量从0开始计算,代表第一行,n代表查询出的最多记录数
如从学生表的第3行开始查询3条记录
select * from student limit 2,3;
四、分页查询
例如:要求每一页显示pageSize条记录,求第page页应该查询哪些数据出来?
select * from 表名称 limit (page-1)*pageSize,pageSize
如要求第3页显示3条记录
select * from student limit 6,3;
五、聚合函数
1、max(字段名):计算某一字段中的最大值
如计算学生表中成绩的最大值
select max(score) as 最高成绩 from student;
2、min(字段名):计算某一字段中的最小值
如计算学生表中最低成绩
select min(score) as 最低成绩 from student;
3、avg(字段名):计算某一字段中的平均值
如计算学生表中成绩的平均值
select avg(score) as 平均成绩 from student;
4、sum(字段名):计算某一字段值的和
如计算学生表中成绩的总和
select sum(score) as 总成绩 from student;
5、count(字段名):计算某一字段值中不为null的记录总数
count(*):计算记录的总条数,无论字段值是否为null
由于之前数据库中没有字段值为null的所以现在向数据库中插入一条成绩为空的记录,以区别上述的两种情况,如下图为插入后的数据列表
计算score这一字段的记录总数
select count(score) as 总数 from student;
计算学生表中所有记录的总数
select count(*) as 总数 from student;