MySQL基础

JavaWeb

什么是JavaWeb?

  • Web:全球广域网,也称万维网(www),能够通过浏览器访问网站
  • JavaWeb:是用Java技术来解决相关web互联网领域的技术栈。

JavaWeb介绍

数据库相关概念

常见的关系型数据库

MySQL数据库

MySQL的安装配置

  1. 下载

https://downloads.mysql.com/archives/community/

  1. 安装
  2. 配置
    1. 配置MySQL_HOME
    2. path里配%MYSQL_HOME%/bin
  3. 新建配置文件my.ini存放在MySQL的根目录
[mysql]
default-character-set=utf8

[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
  1. 初始化MySQL

​ 以管理员身份运行cmd,输入mysqld --initialize-insecure 按回车后此时MySQL根目录会产生一个data目录

  1. 注册MySQL服务

    1. 在cmd中敲入,mysql -install
  2. 启动MySQL服务

    1. 在黑框中敲入 net start mysq

    2. net start mysql//启动mysql服务
      net stop mysql//停止mysql服务
      
  3. 修改默认账户密码

    1. 在黑框里敲入 mysqladmin -u root password 1234,这里1234就是指默认管理员root账户的密码,可以自行修改
  4. 登录MySQL

    1. 在黑框中输入:mysql -uroot -p1234,回车即可退出可以输入quit或exit
  5. 登录参数

    mysql -u用户名 -p密码 -h要连接的mysql服务器的ip地址(默认127.0.0.1) -P端口号(默认3306)
    

MySQL的卸载

  1. 在cmd中敲入 net stop mysql
  2. 再敲入 mysqld -remove mysql
  3. 最后删除MySQL目录及相关的配置文件即可

MySQL数据模型

图形化客户端工具——Navicat

Navicat

  • Navicat for MySQL 是管理和开发MySQL或MariaDB 的理想解决方案
  • 这套全面的前端工具为数据库管理、开发和维护提供了一款直观而强大的图形化界面
  • 官网:http://www.navicat.com.cn

SQL

SQL简介

  • 英文:Structured Query Language,简称SQL
  • 结构化查询语言,一门操作关系型数据库的编程语言
  • 定义操作所有关系型数据库的统一标准、
  • 对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,我们称之为“方言''

SQL通用语法

  1. SQL语句可以单行或多行书写,以分号结尾
  2. MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
  3. 注释
    1. 单行注释 --注释内容 或 #注释内容(MySQL 特有)
    2. 多行注释 /* 注释 */

SQL分类

DDL

操作数据库

操作表

  • 创建(Create)
  • 查询(Retrieve)
  • 修改(Update)
  • 删除(Delete)

查询表

  • 查询当前数据库下的所有表——show tables;
  • 查询表结构——desc 表名称;

创建表

数据类型

  • MySQL支持多种类型,可以分为三类:
    • 数值
    • 日期
    • 字符串

创建案例

create table student(
	id int,
    name varchar(20),
    gender char(1),
    birthday date,
    score double(5,2),
    email varchar(30),
    tel	 varchar(15),
    status	tinyint
);

删除表

  1. 删除表——drop table 表名;
  2. 删除表时判断表是否存在——drop table if exists 表名;

修改表

DML

  • 添加(insert)
  • 修改(update)
  • 删除(delete)

添加数据

  1. 给指定列添加数据

    INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...);
    
  2. 给全部列添加数据

    INSERT INTO 表名	VALUES(值1,值2,...);
    
  3. 批量添加数据

    INSERT INTO 表名(列1,列2,...)	VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
    INSERT INTO 表名	VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...)...;
    
-- 查询所有数据
SELECT * FROM stu;

-- 给指定的 列添加数据INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...);

INSERT into stu(id,name) values(1,'张三');

-- 给所有列添加数据
INSERT INTO STU(id,name,gender,birthday,score,email,tel,status) values(2,'李四','男','1997-12-12',99.9,'12580@qq.com','13888888888',1);

desc stu;

insert into stu VALUES(2,'李四','男','1997-12-12',99.9,'12580@qq.com','13888888888',1);

output:
1	张三						
2	李四	男	1997-12-12	99.90	12580@qq.com	13888888888	1
2	李四	男	1997-12-12	99.90	12580@qq.com	13888888888	1
2	李四	男	1997-12-12	99.90	12580@qq.com	13888888888	1

修改数据

  1. 修改表数据

    UPDATE 表名 SET 列名1=值1,列名2=值2,...[WHERE 条件]
    

注意:修改语句中如果不加条件,则将所有数据都修改!

-- 将stu表中 马化疼 改为 马花疼
update stu set name='马花疼' where id=2;

删除数据

  1. 删除数据

    DELETE FROM 表名	[WHERE 条件];
    

注意:删除语句中如果不加条件,则将所有数据都删除!

DQL

查询语法

基础查询

-- 查询所有列的数据,列名的列表可以使用* 代替
select * from stu;

-- 查询地址信息
select address from stu;

-- 去除重复记录
SELECT distinct address from stu;

-- 查询姓名,数学成绩,英语成绩
SELECT name,math,english from stu;

select name,math as 数学成绩,english as 英语成绩 from stu;

select name, math 数学成绩,english as 英语成绩 from stu;

条件查询(where)

-- 条件查询=======================

-- 1.查询年龄大于20岁的学员信息
select * from stu where age > 20;

-- 2.查询年龄大于等于20岁的学员信息
select * from stu where age >= 20;

-- 3. 查询年龄大于等于20岁  并且  年龄 小于小于30岁的学员信息

select id,name,age,sex,address,math,english,hire_date from stu where age >= 20 && age <=30;
select * from stu where age>=20 && age<=30;
select * from stu where age>=20 and age<=30;
-- 4. 查询入学日期在'1998-09-01' 到 '1999-09-09'之间的学员信息
SELECT * from stu WHERE hire_date between '1998-09-01' and '1999-09-09';

-- 5. 查询年龄等于18岁的学员信息
select * from stu where age = 18;

-- 6. 查询年龄不等于18岁的学员信息 
select * from stu where age != 18;
select * from stu where age<>18;

-- 7.查询年龄等于18岁 或者年龄等于 20 岁 或者年龄等于22岁的学员
select * from stu where age=18 or age =20 or age=22;
select * from stu where age=18 || age =20 || age = 22;
select * from stu where age in(18,20,22);

-- 8.查询英语成绩为 null 的学员信息
select * from stu where english != null; -- 不能这样写
select * from stu where english is null;
select * from stu where english is not null;
-- 模糊查询  like===============
/*
	通配符:
	(1) _:代表单个任意字符
	(2)%:代表任意个数字符
*/

-- 1. 查询性姓'马'的学员信息
select * from stu where name like '马%';

-- 2.查询第二个字是'花'的学员信息
select * from stu where name like '_花%';

-- 3. 查询名字中包含'德'的学员信息
select * from stu where name like '%德%';

排序查询(ORDER BY)

/*
	排序查询:
		语法:select 字段列表	from	表名	order by 排序字段名1	[排序方式1],排序字段名2	[排序方式2]...;
		排序方式:
			ASC:升序排列(默认)
			DESC:降序排列
*/

-- 1. 查询学生信息,按照年龄升序排列
select * from stu order by age asc;

-- 2.查询学生信息,按照数学成绩降序排列
select * from stu order by age desc;

-- 3.查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列
select * from stu order by math desc,english asc; 

聚合函数

/*
	聚合函数
	* count:统计数量
	* max:求最大值
	* min:求最小值
	* sum:求和
	* avg: 求平均值
*/

-- 1.统计班级一共有多少个学生
select count(id) from stu; -- 统计的列名不能为null  
select count(math) from stu;
select count(english) from stu;
-- 2. 查询数学成绩的最高分
select max(math) from stu;
-- 3.查询数学成绩的最低分
select min(math) from stu;
-- 4.查询数学成绩的总分
select sum(math) from stu;
-- 5.查询数学成绩的平均分
select avg(math) from stu;

分页查询(LIMIT)

/*
	分页查询
		SELECT 字段列表 from 表名	limit	起始索引	,		查询条目数
			* 起始索引:从0开始
*/

-- 1. 从0开始查询,查询3条数据
select * from stu limit 0,3;
-- 2. 每页显示3条数据,查询第一页数据
select name, age , sex  from stu limit 0,3;
-- 3. 每页显示3条数据,查询第二页数据
select * from stu limit 3,3;
-- 4. 每页显示3条数据, 查询第三页数据
select * from stu limit 6,3;
-- 起始索引 = (当前页码 - 1 ) * 每页显示的条数
posted @ 2022-02-10 15:57  tryAgainCs  阅读(31)  评论(0编辑  收藏  举报