Mysql数据库与JDBC学习day02(Mysql)

MySql数据库

常见数据库

  1. mysql:开源免费的适用于中小型企业的,免费数据库,sun公司收购mysql,后来sun公司被oracle收购,后来开始收费

  2. mariadb:由mysql创始人做出,直接是mysql开源版本的一个分支,基本上所有的命令都是一样的

  3. oracle:收费商业软件,适用于大型电商网站

  4. db2:IBM公司,解决方案:软件和硬件,服务器架构,银行系统大多采用db2

  5. sqlserver:通常用在windows里面,政府网站asp.net,大学教学通常sqlserver,图形化工具做的不错

  6. NOSQL:非关系型数据: key:value

    • mongodb
    • redis

关系型数据库

主要是用来描述实体与实体之间的关系

实体:实实在在存在的事物:学生和班级,员工和部门

ER关系图(重要)

实体:方框

属性:椭圆

关系:菱形

Mysql数据库服务器

Mysql数据库:数据库管理软件

服务器:就是一台电脑,安装了相关的服务器软件,会监听不同的端口号,根据用户访问的端口号,提供不同的服务

Mysql的安装和卸载

  • 卸载:
  • 打开程序控制面板,删除软件
  • 删除mysql安装目录下的所有文件 C:\Program Files\MySQL
  • 删除mysql的数据存放文件 C:\ProgramData\MySQL(隐藏文件)
  • 安装
  • 运行安装程序:在启动配置教程之前一直下一步,没有下一步的话就直接finash
  • 第一次之后启动服务器配置教程
  • 第一个include mysql bin directory to windows path
  • 第二个:端口号不要去修改,字符集选择UTF-8,密码不要忘记

Mysql的SQL语句

SQL:Structure Query Language 结构化查询语言

DDL:数据定义语言:定义数据库,数据表它们的结构:create(创建) drop(删除) alter(修改)

DML:数据操纵语言:主要是用来操纵数据库 insert(插入) update(修改) delete(删除)

DCL:数据控制语言:定义访问权限,取消访问权限,安全设置 grant

DQL:数据查询语言:select(查询) from子句 where子句

数据库CRUD的操作

  • 首先要登录数据库服务器 mysql -uroot -proot (默认密码是root)

创建数据库

create datebase 数据库的名字
create datebase day06;

--创建数据库的时候,指定字符集
create datebase 数据库的名字 character set 字符集;
create datebase day06_1 character set utf8;

create datebase 数据库的名字 character set 字符集 collate 校对规则;
create datebase day06_2 character set utf8 collate utf8_bin;

查看数据库

--查看数据库定义的语句
show create databases 数据库的名字
show create databases day06;

--查看所有数据库
show databases;

information_schema
performance_schema
mysql
这三个数据库不要动它

修改数据库的操作

--修改数据库的字符集
alter databases 数据库的名字 character set 字符集
alter databases day06_1 character set gbk;	

删除数据库

drop databases 数据库名字;
drop databases day06_2;

其他数据库操作命令

--切换数据库(选中数据库)
use 数据库名字
use day06;

--查看一下当前正在使用的数据库
select databases();

表的CRUD操作

创建表

create databases 数据库的名字

create table 表名(
	列名  列的类型 约束,
	列名2 列的类型 约束
);

列的类型:
java      		sql
int		  		int
char/String     char/varchar   
				char:固定长度
				varchar:可变长度
				char(3):  一     一空格空格
				varchar(3): 一    一
				长度代表的是字符的个数
double			double
float			float
boolean			boolean
date			date : YYYY-MM-DD
				time : hh:mm:ss
				datetime: YYYY-MM-DD hh:mm:ss 默认值是null
				timestamp: YYYY-MM-DD hh:mm:ss 默认使用当前时间
				text: 主要用来存放文本
				blob: 存放的是二进制
列的约束:
	主键约束: primary key
	唯一约束: unique
	非空约束: not null

创建表:
	1.分析实体:学生
	2.学生ID
	3.姓名
	4.性别
	5.年龄
create table student(
	sid int primary key,
	sname varchar(30),
	sex int, 
	age int,
);

查看表

--查看所有的表
	show tables;

--查看表的定义
	show create table student;

--查看表的结构
	desc student;

修改表

--添加列(add)
	alter table 表名 add 列名 列的类型 列的约束
	alter table student add chengji int not null;

--修改列(modify)
	alter table student modify sex varchar(2);

--修改列名(change)
	alter table change sex gender varchar(2);

--删除列(drop)
	alter table student drop chengji;

--修改表名(rename)
	rename table student to user;

--修改表的字符集
	alter table user character set gbk;

删除表

drop table user;

Sql完成对表中数据的CRUD的操作

插入数据

insert into 表名(列名1,列名2,列名3) values(值1,值2,值3);

如果插入全列数据,列名可以省略,如果插入部分列则不能省略,批量插入逗号隔开

查看表中数据

select * from student;

命令行下插入中文问题:insert into student values(11,‘李四’,1,24);

  • 临时解决方案:set names gbk;相当于是告诉mysql服务器软件,我们当前在命令行下输入的内容是GBK编码,当命令窗口关闭之后,它再输入中文就会存在问题
  • 永久解决办法:修改my.ini配置文件C:\Program Files\MySQL\MySQL Server 5.5\my.ini
  • 暂停mysql服务
  • 在mysql安装路径中找到myu.ini
  • 将57行的编码改成gbk
  • 保存文件退出
  • 启动mysql服务

删除记录

delete from 表名 [where条件]

delete from student where sid=10;

delete from student; 如果没有指定条件会将表中数据一条一条全部删除

面试问题:请说一下delete删除数据和truncate删除数据的区别

delete:DML 一条一条删除表中数据

truncate:DDL 先删除表再重建表

那条执行效率高具体要看表中数据量,如果数据比较少delete比较高效,如果数据比较多truncat比较高效

更新表记录

update 表名 set 列名=列的值,列名2=列的值2 [where 条件]

--将sid为5的名字改成李四

如果参数是字符串、日期,要加单引号

update student set sname='李四' where sid=5;

查看记录

select [distinct] [ * ] [列名,列名2] from 表名 [where 条件]

distinct:去除重复数据

--like: 模糊查询

	- : 代表的是一个字符
	
	% : 代表的是多个字符

--查询名字中带有饼的所有商品 %饼%

	select * from product where pname like %饼%

--in 在某个范围内获得值

	查询出商品分类ID在1,4,5里面的所有商品

	select * from product where cno in (1,4,5); 

--排序查询:order by 关键字

	asc : ascend 升序 (默认的排序方式)

	desc : descend 降序 

	select * from product order by price asc; 

	select * from product order by price desc; 

--聚合函数

	sum : 求和

	avg : 平均值

	count : 统计数量

	max : 最大值 

	min : 最小值

	商品价格总和:select sum(price) from product;

	商品价格平均值:select avg(price) from product;

	商品总数:select count(price) from product;

	商品价格最大值:select max(price) from product;

	商品价格最小值:select min(price) from product;

	注意:where条件后面不能用聚合函数

--子查询

	查询大于平均价格的所有商品

	select * from product where price > (select avg(price) from product;

--分组:group by

	1.根据cno字段分组,分组后统计商品的个数

	select cno,count(*) from product group by cno;

	count : 统计数量

	max : 最大值 

	2.根据cno字段分组,分组后统计每组商品的平均价格,并且商品平均价格>60

	select cno,avg(price) from product group by cno

	having avg(price) > 60;

	having 关键字,可以接聚合函数,出现在分组之后

	where 关键字,不可以接聚合函数,出现在分组之前

--sql编写顺序

	select  from  where  group by  having  order by

--sql执行顺序

	from  where  group by  having  select  order by

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值