Java web开发——初识MySQL数据库SQL语句的操作

数据库的基本概念

1.数据库的英文单词:DataBase 简称:DB
2.什么数据库?
用于存储和管理数据的仓库
3.数据库的特点
持久化存储数据的。其实数据库就是一个文件系统
方便存储数据
使用了统一的方式操作数据库——SQL
4.MySQL登录
在cmd下输入:
1.mysql -uroot -p密码
2.mysql -hip -uroot -p连接目标的密码
3.mysql --host=ip --user=root --password=连接目标的密码
5.MySQL退出
1.exit
2.quit

SQL

什么是SQL?

Structured Query Language:结构化查询语言
其实就是定义了操作所有关系型数据库的规则。每种数据库操作的方式存在不一样的地方,称为“方言”。

SQL通用语法

1.SQL语句可以单行或多行书写,以分号结尾。
2.可使用空格和缩进来增强语句的可读性。
3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
4.3种注释
*单行注释:-- 注释内容 或 # 注释内容(MySQL独有)
*多行注释:

/*注释*/

SQL分类

	1) DDL(Data Definition Language)数据定义语言
		用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter2) DML(Data Manipulation Language)数据操作语言
		用来对数据库中表的数据进行增删改。关键字:insert, delete, update3) DQL(Data Query Language)数据查询语言
		用来查询数据库中表的记录(数据)。关键字:select, where4) DCL(Data Control Language)数据控制语言(了解)
		用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANTREVOKE

在这里插入图片描述

DDL:操作数据库、表

1.操作数据库(CRUD)

1、C(create):创建
	*创建数据库:
		*create database 数据库名称;
	*创建数据库,判断不存在,再创建
		*create database if not exists 数据库名称;
	*创建数据库,并指定字符集
		*create database 数据名称 character set 字符集名;

具体操作:
	--直接创建数据库db1
	create database db1;
	--创建数据库,判断不存在,再创建db2
	create database if not exists db2;
	--创建数据库并指定字符集为gbk
	create database db3 default character set gbk;
2、R(Retrive):查询
	*查询所有数据库名称:
		*show databases;
	*查询某个数据库的字符集:查询某个数据库的创建语句:
		*show create database 数据库名称;
3、U(Update):修改
	*修改数据库的字符集:
		*alter create database 数据库名称 character set 字符集名称;

具体操作:
	--将db3数据库的字符集改成utf8:
	alter create database db3 character set utf8;
4、D(Delete):删除
	*删除数据库:
		*drop database 数据库名称;
	*判断数据库是否存在,存在再删除
		*drop database if exists 数据库名称;
具体操作:
	--删除db2数据库
	drop database db2;
5、使用数据库
	*查询当前正在使用的数据库名称:
		*select database();
	*使用数据库:
		*use 数据名称;

2.操作表

1、D(Create)创建:
	1、语法:
		create table 表名(
			列名1 数据类型1,
			列名2 数据类型2,
			···
			列名n 数据类型n
		);
	*注意:最后一列,不需要加(,)逗号
	*数据类型:
		1int:整数类型
			*age int,
		2double:小数类型
			*score double(5,2);
		3date:日期,只包含年月日,yyyy-MM-dd
		4datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
		5timestamp:时间错类型,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
			*如果将来不给这个字段赋值或赋值为null,则默认使用当前系统的时间,来自动赋值。
		6varchar:字符串
			*name varchar(20):姓名最大20个字符
		*复制表:
			*create table 表名 like 被复制的表名;
2、R(Retrieve)查询
	*查询某个数据库中所有表的名称
		*show tables;
	*查询表结构
		*desc 表名;
	*查询创建表的SQL语句
		*show create table 表名;
3、U(Update)修改
	1、修改表名
		*alter table 表名 rename to 新的表名
	2、修改表的字符集
		*alter table 表名 character set 新字符集名称
	3、添加一列
		*alter table 表名 add 列名 数据类型
	4、修改列名称类型
		*alter table 表名 change 列名 新列别 新数据类型
		*alter table 表名 modify 列名 新数据类型
	5、删除列
		*alter table 表名 drop 列名
4、D(Delete)删除
	*drop table 表名;
	*drop table if exists 表名;

DML:增删改表中的数据

1、添加数据
	*语法
		*insert into 表名(列名1,列名2,···列名n) value (1,2···值n);
	*注意:
		1、列名和值要一一对应
		2、如果表名后,不定义列名,则默认给所有列添加值
			insert into 表名 value (1,2···值n);
		3、除了数字类型,其他值都需要使用引号(单引号双引号都可)引起来。
2、删除数据
	*语法:
		*delete from 表名 where 条件;
	*注意:
		1、如果不加条件,则删除表中所哟记录。
		2、如果要删除所有记录
			1delete from 表名;--不推荐使用。这个语句有多少记录就会执行多少次删除
			2TRUNCATE TABLE 表名;--推荐使用,效率高,先删除表再创建一张一样的表
3、修改数据
	*语法:
		*update 表名 set 列名1=1,列名2=2,··· where 条件;
	*注意:
		1、如果不加条件,则会将表中所有记录全部修改

DQL:查询表中的记录

	*select * from 表名;
		1、语法:
			select 字段列表
			from 表名列表
			where 条件列表
			group by 分组列表
			having 分组之后的条件
			limit 分页限定
		
		2、基础查询
			1、多个字段的查询
				select 字段1,字段2,··· from 表名;
				*注意:
					*如果查询所有字段,则可以使用*代替字段列表。
			2、去除重复
				*distinct
			3、计算列
				*一般可以使用四则运算计算一些列的值(一般只会进行数值型的计算)
				*if null(表达式1,表达式2)null参与的运算,计算结果为null
				*表达式1:哪个字段需要判断是否为null
				*表达式2:如果该字段为null后的替换值
			4、起别名
				*asas也可以省略
		具体操作:
			--查询所有的学生
			select * from student;
			--查询student表中的name和age列
			select name,age from student;
			--使用别名
			select name as 姓名,age as 年龄 from student;
			--查询学生来自那些地方
			select address from srudent;
			--去掉重复的记录
			select distinct address from student;

		3、条件查询
			1where 后跟条件
			2、运算符
				*>,<,<=,>=,=,<>
				*BETWEEN ···AND
				*IN(集合)
				*LIKE 模糊查询
					*占位符:
						*_:单个任意符;
						*%:多个任意符;
				*IS NULL
				*and&&
				*or||
				*not!
		4、排序查询:
			*语法:
				*order by 排序字段1,排序方式1,排序字段2,排序方式2···
			*排序方式:
				ASC:升序,默认
				DESC:降序
			*注意:
				*如果有多个排序条件,则当前条件值一样是才会判断第二个条件
		5、聚合函数:将一列数据作为一个整体,进行纵向的计算。
			1. count:计算个数
				1. 一般选择非空的列:主键
				2. count(*)
			2. max:计算最大值
			3. min:计算最小值
			4. sum:计算和
			5. avg:计算平均值
		* 注意:聚合函数的计算,排除null值。
			解决方案:
				1. 选择不包含非空的列进行计算
				2. IFNULL函数
		6、分组查询:
			1. 语法:group by 分组字段;
			2. 注意:
				1. 分组之后查询的字段:分组字段、聚合函数
				2. wherehaving 的区别?
					1. where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
					2. where 后不可以跟聚合函数,having可以进行聚合函数的判断。
		
				-- 按照性别分组。分别查询男、女同学的平均分
		
				SELECT sex , AVG(math) FROM student GROUP BY sex;
				
				-- 按照性别分组。分别查询男、女同学的平均分,人数
				
				SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;
				
				--  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组
				SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;
				
				--  按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
				SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
				
				SELECT sex , AVG(math),COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;
		7、分页查询
			1. 语法:limit 开始的索引,每页查询的条数;
			2. 公式:开始的索引 = (当前的页码 - 1* 每页显示的条数
				-- 每页显示3条记录 
		
				SELECT * FROM student LIMIT 0,3; -- 第1页
				
				SELECT * FROM student LIMIT 3,3; -- 第2页
				
				SELECT * FROM student LIMIT 6,3; -- 第3页
		
			3. limit 是一个MySQL"方言"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值