欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-10 08:07:55
...

数据库的基本概念

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

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

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"方言"