MySQL数据库

MySQL数据库

目录内容

【1】MySQL数据库介绍【2】SQL介绍【3】数据库(大存储单元)基本操作【4】数据表操作

【5】数据表记录操作【6】查询操作【7】排序、聚集函数、分组【8】limit(分页查询)

【MySQL数据库介绍】

MySQL是一种做数据存储软件,是一种文件系统,之所以是文件系统,是因为我们保存后的数据最终都会存储成文件保存到磁盘中, 在我们MySQL的安装目录中,有一个data文件夹(D:\mysql\data),里面存储都是数据库和表相关的数据。就是以文件的形式存储的,MySQL为我们 展现的时候,以数据列表形式给我们展现。其实就是获取的文件中的数据进行展现的。

MySQL存储结构

MySQL数据库软件
   |--数据库(database,作为一个存储大单元)
      |--数据表(table,作为具体某一类数据的存数单元)
         |--表记录(是组成表的一条数据,一行就是一条记录)

【SQL介绍】

SQL是所有数据库所依赖的一种操作手段。这里的标准SQL,就和咱们学习的javascript当中的组成部分ECMAScript类似, ECMAScript是js的一个标准,在所有的浏览器中都应该可以被运行的,被所有浏览器所支持的,叫做标准。如果说谷歌浏 览器开发设计了一个新的js技术,IE和火狐能用么?不能有,那是人家自己扩展的功能,ECMAScript标准中没有,所以不 能用。这里的SQL也是一样的,标准SQL就是应该可以使用在所有常用数据库软件中。像MySQL数据库软件也有自己的一些SQL, 其他数据库软件也就不能使用了,因为它不属于标准SQL的范畴。

怎么理解这个SQL呢?
其实这个SQL就是操作数据库的一种命令,如同windows系统的DOS命令行,输入命令,给予反应。SQL也是这样,输入SQL 语句,展现数据或者得到一个操作结果。

SQL分类

DDL:DD(Definition)L 数据库定义语句,定义就是从新得到,创建一个新的,这里涉及到的SQL关键字:createDML:DM(Manipulation)L 数据定义语句,这里学习三种操作:增加、删除、修改,涉及到的SQL关键字:insert、delete、updateDQL:DQ(Query)L 数据查询语句,就是查询数据库中的数据,这也一个重点学习的内容,使用非常频繁,涉及到的关键字:select
我们使用这些东东用来操作数据库、数据表 以及 表记录
		

【数据库基本操作】

数据库是一个大的存储单元,所有的数据存储都是建立在数据库存在了,才能去存储具体的数据。
1、连接MySQL数据库服务
作为存储数据的服务,我们需要先连接才能使用。并且需要用户名和密码,并不是所有的人都能随便链接, 不然会有很大的安全隐患。就如同进入存储仓库需要用钥匙打开仓库门一样。

	连接MySQL数据库:打开DOM命令行,输入>mysql -uroot -p123 回车
	
	解读:mysql是连接命令,-uroot,其中-u代表用户名(username)参数,root是用户名,
	    -p代表密码(password)参数,123是密码,回车执行命令,然后连接

               

2、创建数据库
要使用MySQL,我们首先要有一个数据库,所以需要先创建

	创建数据库:create database dbName;
	

 

3、使用(切换)数据库 这里的使用是指,如果要操作某个数据库中的数据了,需要先指明使用哪一个,也叫做切换到某个数据库中。 如同,你到仓库1找东西,是不是先要进入到仓库1呀,一个道理。

	切换数据库:use dbName;
	
	接下来就进入到了testdb1这个数据库中,可以操作里面的数据了
	

 

4、删除数据库

	如果一个数据库没有利用价值了,留着占地方,这时候就需要删除掉。
	这里的删除并不是使用的delete,而是drop关键字,drop是用来删除一个整体结构的。
	删除数据库:drop database dbName;
	

 

5、查看所有数据库

	查看当前有哪些数据库可用:show databases;
	

 

6、查看当前使用的是哪个数据库

	如果想知道当前使用是哪个数据库:select database();
	

 

【数据表操作】

数据表 是进行数据存储的基本结构,往往某个表是对应某个业务或者事物的,比如用户信息,就存储一个用户表。创建表之前,需要指明在哪个数据库中创建表。

其中表中的字段是对应java实体类中字段的,也需要有对应的数据类型,常用的类型:
varchar字符串、int整数、float浮点数、decimal数值类型(代表十进制整数和小数)、boolean布尔、 datetime日期时间、timestamp日期时间

1、创建数据表

	use dbName;
	create table tableName(
		id varchar(50),//主键id为varchar字符串时,设置长度大一点
		username varchar(40),
		password varchar(40),
		age int,//像int数值类型不用指明长度
		birthday datetime	//最后一行不用写 逗号(,)
	);//最后加上分号(;)

 

2、查看有哪些数据表

	查看当前使用的数据库中有哪些有数据表(前提是切换好了数据库):show tables;
	

 

3、查看表结构(字段类型信息)

	查看创建表时的一些字段、类型等信息:desc tableName;
	

4、常用约束

	非空约束:not null表示不准为空,如果为空则报错
	
	唯一性约束:unique字段不准有重复数据
	
	主键约束(非空+唯一性):primary key 设置了主键约束必须非空,并且唯一;主键是用来标识一条记录的,要保证只有一个唯一且非空的主键和记录对应。
	

5、扩展:修改表信息(表名称、字段名,字段类型、添加字段、删除字段)

	这部分内容没有任何技术含量,记住这个语句怎么写的就OK
	(a)修改表名称:rename table oldName to newName;
	(b)修改字段名
	遇到创建表的时候字段写错了,需要修改字段名称:alter table tableName change oldColName newColName colType;
	下面例子,我们以修改表主键tid为例:
		(c)修改字段类型
	如果主键本来是int,现在要改成varchar类型:
	方法一:alter table tableName change colName colName colType[(size)];
		这个其实就是修改字段名的方式,字段名称一样即可
		
	方法二:alter table tableName modify colName colType[(size)];
		(d)添加新字段
如果实体对象有新属性了,需要添加表字段:alter table tableName add newColName colType[(size)]; (e)删除字段 如果字段属性不需要了,应该删除掉:alter table tableName drop colName; 

【数据库基本操作】

插入数据 向数据表中添加新数据,使用关键字:insert

	方式一:insert into 表名 values("id001","zhangsan","123456");
		查看表结构:
		插入语句:insert into testtab2 values('1111','zhangsan','123',23,'2000-11-11 01:01:01');
		在()里面要把五个字段全写上
		插入结果:
	方式二:insert into 表名(username,password) values("lisi","666a666");
		查看表结构:
		插入语句: insert into testtab2(id,username,password) values('2222','lisi','666a666');
		表名(字段名列表) values(对应字段位置的值):需要插入哪几个字段就写哪几个字段
		插入结果:
		没有插入数据的字段数据为NULL
		

修改数据 对已经存在于数据表中的数据进行修改操作,使用关键字:update

	书写格式:update 表名 set colName1=newValue1,colName2=newValue2... where 条件
	
	原数据:
	
	执行语句: update testtab2 set id='3333',age=32 where id='1111';
		
	修改后数据:

删除数据 对于数据表中废弃没有用的数据需要清理删除,使用关键字:delete

	书写格式:delete from 表名 where 条件;
	原数据:
	执行SQL: delete from testtab2 where id='3333';
		
	执行结果:
	
	如果delete语句没有写任何条件(不写where子句),代表删除表中的全部记录,
	如果有这种删除全部数据的需求,可以使用另一个关键字truncate
	truncate会清空表数据保留表结构:
	原数据:
		
	使用truncate: truncate table 表名;
	执行sql:truncate table testtab2;
		
	再次查看数据:
		

【查询操作】

查询是使用会最频繁的操作,使用关键字:select

	基本SQL结构:select * from 表名 where 条件;  select 字段列表 from 表名 where 条件;
	
	实例1:
		
	
	实例2:
		条件查询:
	原数据:查询全部数据
		
	
	(1)< > <= >= <>(不等于)
	  查询年龄不等于24的用户名和年龄:select username,age from testtab2 where age<>44;
	
	(2)在一组数据中 in
	  查询年龄在22,33,55的所有数据:select * from testtab2 where age in (22,33,55);
	 
	(3)条件并列 and
	   查询年龄大于33 并且 id在2222,3333,4444中的所有数据:select * from testtab2 where age>33 and id in ('2222','3333','4444');
	 	
	(4)在两者之间 between ... and ... 
	   查找birthday在 2015-11-03 00:01:01 和 2015-11-03 23:59:59之间的所有信息: 
	  select * from testtab2 where birthday between '2015-11-03 00:01:01' and '2015-11-03 23:59:59';
			
	
	(5)模糊查询:like 配合 %使用,%代表位置的字符串部分
	   查询username包含 i的数据:select * from testtab2 where username like '%i%';
	  查询username 以 zh开头的数据:select * from testtab2 where username like 'zh%';查询补充:如果想查询birthday为null的 或者 birthday不为null的怎么判断?
		
	全部数据:
		
		
		
	查询birthday为null的数据:
		使用= 判断:不成功
		
		
		使用 is 关键字:可以
		
	
		使用isnull(colName)函数:可以
		
	
	查询birthday 不为 null的数据:
		使用  <> null:不可以
		
		
		使用  <> 'null':null是字符串,可以
		
		
		使用 is not null:可以
		

【排序、聚集函数、分组】

排序 对查询的结果根据某一列进行排序,顺序、倒序,使用关键字 order by desc/asc

	基本结构:select * from 表名 order by 字段  asc/desc;
	
	简单示例(根据年龄倒序排列):select * from testtab2 from testtab2 order by age desc;    
		
	
	order by 加上where子句:select * from testtab2 from testtab2 where age>22 order by age desc;  
		
	
	order by 应该放查询语句最后
	

聚集函数 这些函数是sql给我们提供好的函数,用于各种运算

	(1)count():统计记录数,count(*)表的总记录数,count(字段)对应字段不为NULL的记录数
	
	全部记录:select * from testtab2;
		
	共7条记录
	
	示例1:select count(*) from testtab2;
		
	
	示例2:select count(birthday) from testtab2;
		
		
		
		
		
	(2)sum():求和函数统计列数值的总和
	示例:select sum(age) from testtab2;
		
	
	(1+2)使用count()和sum()计算平均年龄:select sum(age)/count(*) from testtab2;
		
		
	(3)avg():计算平均数
	示例:计算平均年龄 select avg(age) from testtab2;
		
	
	(4)max()最大值、 min()最小值
	示例1:最大年龄 select max(age) from testtab2;
			
	示例2:最小年龄 select min(age) from testtab2;
		错误示例:在where条件子句中使用聚集函数
		select sum(age) from testtab2 where sum(age)>20;
		聚集函数不能使用在where子句中
		
		如果非要使用这种方式可以使用 [having 条件] 这种格式(having在后面讲到):
		

分组操作 将同一类型的数据分成一组查看,使用关键字 group by

	表数据:将按照age年龄分组
		
	
	示例(查看每个年龄有多少人): select age, count(*) from testtab2 group by age;
		
	
	如果在分组时需要聚集函数 作为查询条件,就不能使用where 子句了,前面有演示,需要使用 having关键字来代替
	
【limit(分页查询)】

如果想查询某几条连续的数据,从第几条开始,查询多少条,使用关键字:limit

	
	全部数据:
		
	
	使用1(查询最前面的多少条记录):select * from 表名 limit 记录数
	示例1:查询前3条记录 select * from testtab2 limit 3;
		
	
	使用2:select * from 表名 limit 开始位置,记录数
		
		查询 limit 0,3 : 说明记录是从0开始计算的,和 limit 3效果是一样的
		
		
		
		查询 limit 2,3 : 第一个参数 表示记录开始,第二个参数 表示记录数
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值