数据库之mysql

一.数据库介绍

数据库管理系统是指帮助用户使用和管理数据库的软件系统
市面上比较流行的的数据库管理系统软件:
关系型数据库:
1.mysql
	免费,开源,比较小,容易上手,入门
2.Oracle 甲骨文
	商用数据库管理系统
3.DB2
	IMB公司的数据库管理系统
4.sqlserver 2008
	微软的数据库
5.达梦
	made in china
	中国自己研发的,独立知识产权的数据库
非关系型数据库:
sqllite .redis ,mongodb ,hbase,hive

二 .数据库的主要作用:

储存大量的数据,方便检索和访问
保持数据信息的一致,完整
共享和安全
通过组合分析,产生新的有用的信息

三.数据库设计原则

第一范式:
每一列属性都是不可再分的属性值,确保每一列的原子性
第二范式:
每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来。
第三范式:
数据不能存在传递关系,即没个属性都跟主键有直接关系而不是间接关系

四.数据库扩展知识

1.数据库的创建
2.数据库的删除
3,数据库的命名
4.数据表的创建(设计)
5.数据库表的修改
6.数据库表的删除
7.数据库表的查询
8.数据库表数据的增删改查
9.数据的导入
扩展
	视图:view
	函数:存储过程
	索引:快速的查询
	事务:acid四大特性

五.语法规则

1.数据库中,sql语句大小写不敏感(不区分大小写)
2.sql语句中可单行或多行书写
3.在sql语句中,关键字不能跨多行或缩写
4.为了提高可读性,一般关键字大写,其他小写
5.空格和缩进使程序易读
数据库的注释:
–单行注释
/* */多行注释
数据库管理系统:
包含多个数据库
一个数据库可以包含多张表
一个表可以包含多个字段
一个表可以保存多条记录
sql语句:
结构化查询语句,主要用于数据库表的操作

六.mysql数据库命令:

命令:
	确认有没有在环境变量中配置mysql的路径
mysql -u root -p
password:
1.数据库的创建
命令:create database qiku;
2.查询当前数据库关系系统的数据:
命令:show databases;
select database();查看当前选择的数据库
3.使用数据库
命令:use qiku;
4.查询当前数据库中的表:
命令:show tables;
5.删除数据库:
命令:drop datebase quku;
6.创建表
	create table 表名 (
	id int not primary key,
	name varchar(20) not null,
	sex varchar(2),
	age int
	);
7.显示表结构
命令:desc student;
8.删除表
命令:drop table student;
数据表的操作:
1.插入数据
命令:
	insert into 表名(字段1,字段2,字段3,字段4) values(值1,值2,值3,值4);
2.查询数据
命令
	select * from 表名;
	select 字段1,字段2,字段3 from 表名;
3.修改数据
命令:
	update 表名  set 字段 =修改内容 where 字段=值;
4.删除数据
命令:
	delete from 表名 where 字段 = 值;删除字段对应的值
	delete from student; 删除表
	truncate table 表名: 清空表
数据库备份:
导出:
	mysqldump -u root -p 数据库名> 存储路径//文件名.sql
导入:
	musql -u root -p 数据库名< 存储路径//文件名.sql
添加用户:
	create user admin@localhost identified by '123456'
添加权限(需要以管理员root用户身份登录之后授权)
	grant all on *.* to admin@localhost identified by '123456'
	grant select insert delete on *.* to admin@localhost1 identified by '123456'
删除用户
	
	用户是保存musql数据库的user表中
	use musql;
	update user set password = password("admin") where user = 'admin';
as 关键字 :用于定义别名
	select id,name as username from studen
distinct 关键字:用于消除重复记录
	select distinct name from student;
where 关键字: 用于条件过滤
	select * from student where id=100;
in 关键字: 表是否在指定范围
	select * from student where id in(100,101,105);
修改表结构:
	添加主键:
		alter table score add primary key(id);
	删除主键:
		alter table score drop primary key;
	添加外键:
		alter table score add constraint fk_stuid foreign key(stuid) references student(id);
	删除外键:
		alter table score drop foreign key fk_stuid;
	
	添加字段:
		alter table score add colum java double;
	删除字段:
		alter table score drop column java;
	
	mysql数据库客户端工具的使用:
		navicat for mysql客户端工具
		1.创建连接
			1>输入连接名:自己定义
			2>主机号或者ip地址:localhost/127.0.0.1
			3>端口号:3306
			4>用户名:root
			5>密码:root 自己设置的密码
		2.打开连接
			1>创建数据库
			2>创建数据表
	crud操作:
		c:create 添加
		r: read 查询  select ,query
		u:uodate 修改
		d:delete 删除
	sql的扩展:
		as 别名
		select id 编号,name 姓名 from employee as e where e.id = 1;
		distinct;去掉重复项
		
		where;条件语句:
		比较运算符:
			=
			>
			>=
			<
			<=
			!=
			<>
		逻辑运算符
			and
			or
			not
			in:指定范围
			not in 不在指定范围内
			between..and... 在xx和xx范围之间
	like:模糊查询
		%张%:包含某个指定值的模糊查询:
		张%;能查到最后一个字为张的值
		张: 只能查到*张,两个字的值
		张_:只能查到张*,两个字的值
		select * from employee name like '%张%';
		select * from employee name like '张_';
	空或非空查询:
		cloumn is null :查询所有指定指定为null的值
		cloumn is not null :查询所有指定字段的值不为null 的值
	指定范围的查询:
		in关键字:
			select * from employee where id in (1,3,5,7,9);
		not in 不在指定范围的数据:
	运算符优级:
		括号最优先:
			select * from employee where (id = 1 and salary >1000) || (name="张三"and salary>20000);
	mysql数据库的聚合函数:
			数据库中已经定好的可以直接使用的完成一定功能的函数
			count(*):统计总记录条数
			max(字段):获取最大值
			min(字段):获取最小值
			sum(字段): 求和
			avg(字段):求平均值
分组:
	group by cloumn 关键字:
	select score ,count(1) from table_name group by score;
排序:
order by : 排序关键字
正序:asc
倒序:desc	
select * from employee order by salary desc --倒序
分页:
	linmit关键字
	limit start ,lenth
	需求: 每页十条记录,获取第二页的所有数据
	select * from employee limit 0,10;
关联查询:
	关联方式;
			1>左连接
				left join .. on...
			2>右连接
				right join ..on..
			--连接查询
			select * from employee e,dept d  where e.deptid = d.deptid;
			-- 左连接 left JOIN
			select * from employee e left join dept d on e.deptid = d.deptid;
			-- 右连接 right join
			select * from employee e right join dept d on e.deptid = d.deptid;
			-- 内连接 inner JOIN
			select * from employee e inner join dept d on e.deptid = d.deptid;
			-- 自然连接
			select * from employee e,dept d where e.deptid = d.deptid;
		子查询:
				把第一次的查询结构作为第二次的查询条件使用
				select * from employee where id in(select id from employee where deptid =1);
	jdbc 操作数据库;
		jdbc :java database connection : java 连接数据库
		主要用于数据库的连接操作,通过java工具类,操作执行sql语句
	
	jdbc 连接数据库的步骤:
	1.myql 数据库的驱动jar包,构建到java项目中
	2.在java 连接类中加载程序
		Class.forName("com.mysql.jdbc.Dirver");
	3.创建数据库连接对象connection
		Connection con = DriverManager.getConnection(url,username,password);
		url:连接数据库的字符串:jdbc:mysql://localhost:3306/db_name
	     jdbc:协议
	     Mysql:数据库
	     localhost:数据库的地址
	     3306:端口号
	     db_name:数据库名
		username:数据库的用户名 root
		password:数据库的密码:root	
		4.创建sql语句的执行对象
	String sql = "select * from employee where id = ?";

	Statement st = con.createStatement(); //把sql语句发送到数据库

	PreparedStatement ps = con.prepareStatement(sql); //编译预处理对象
	ps.setInt(1,id);

5.执行sql语句,返回结果
	int executeUpdate(String sql) :增,删,改的方法
	ResultSet rs = executeQuery(String sql):查询方法

6.遍历结果集:
	ResultSet:
		next(); 判断是否有下一行记录
		getInt("column");获取该行该字段的整型值
		getString("Column");获取varchar类型的字段值
		getDouble("column");获取double类型的字段的值
		getFloat("column");获取浮点类型的字段的值
		getDate("column");获取日期类型的字段的值

		getObject("column");获取所有的类型的字段的值
7.关闭连接
	关闭原则:
		后打开的,先关闭。
		rs.close();
		st.close();
		con.close();			
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值