栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mysql基础

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mysql基础

mysql基础
  • 一、Mysql和navicat安装包
      • 数据库
  • 二、SQL
      • SQL简介
      • SQL通用语法
      • SQL分类
        • 数据类型
        • 对表和数据库的DDL
        • 查询
          • 基础查询
          • 条件查询
          • 模糊查询
          • 排序查询
        • 聚合函数
          • 聚合函数分类
          • 聚合函数的语法
        • 分组查询
        • 分页查询

一、Mysql和navicat安装包

安装包及安装教程链接:https://download.csdn.net/download/javaren001/85233659

数据库
  • 存储和管理数据的仓库,数据是有组织的进行存储。

  • 数据库英文名是 DataBase,简称DB。

MySQL: 开源免费的中小型数据库

二、SQL SQL简介
  • 英文:Structured Query Language,简称 SQL,结构化查询语言
  • 操作关系型数据库的编程语言
  • 定义操作所有关系型数据库的统一标准,可以使用SQL操作所有的关系型数据库管理系统,以后工作中如果使用到了其他的数据库管理系统,也同样的使用SQL来操作。
SQL通用语法
  • SQL 语句可以单行或多行书写,以分号结尾。以分号结尾才是一个完整的sql语句
  • MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。
  • 注释
    单行注释: – 注释内容 或 #注释内容(MySQL 特有)
    多行注释:
SQL分类

DDL(Data Definition Language) : 操作(创建、查询、删除)数据库、表

DML(Data Manipulation Language):对表中的数据进行增删改

DQL(Data Query Language):对表中的数据进行查询

DCL:对数据库进行权限控制

数据类型

整型

tinyint : 小整数型,占一个字节,例:状态
int: 大整数类型,占四个字节     用作与id   年龄 ,班级 ,金额(分)
double : 浮点类型       分数 , 包含小数的数据 (慎用 精度丢失)
使用格式: 字段名 double(总长度,小数点后保留的位数)

日期

date : 日期值。只包含年月日     交往纪念日     生日    
datetime : 混合日期和时间值。包含年月日时分秒   
格式:'2021-12-10 15:10'	

字符串

char : 定长字符串。(你知道要存储的数据占多少个字节就可以使用这个)       性别
	优点:存储性能高
	缺点:浪费空间
	eg : name char(10)  如果存储的数据字符个数不足10个,也会占10个的空间
varchar : 变长字符串。     名字,地址....
	优点:节约空间
	缺点:存储性能低
	eg : name varchar(10) 如果存储的数据字符个数不足10个,那就数据字符个数是几就占几个的空间

关于SQL语法的命名规则:

  • 下划线命名法
  • 布尔类型使用 1 0 来表示
  • 表名统一小写
  • 表名不用复数
  • 建议小数类型使用 decimal 或将小数根据需要的精度乘 10、100 后以整数存储(扩展)
  • 字符串若长度固定,使用 char
  • 表必备字段 id,gmt_create,gmt_modified(扩展)
对表和数据库的DDL

查询全部的数据库

SHOW DATABASES;

创建数据库,字符集为utf-8

CREATE DATABASE 数据库名称 CHARACTER SET = utf8;;

判断数据库是否存在,不存在则创建

CREATE DATABASE IF NOT EXISTS 数据库名称;

删除数据库

DROp DATABASE IF EXISTS 数据库名称;

使用数据库

USE 数据库名称;

查看当前使用的数据库

SELECT DATABASE();

查询当前数据库下所有表名称

SHOW TABLES;

查询表结构

DESC 表名称;

创建表:

CREATE TABLE 表名 (
	字段名1  数据类型1,
	字段名2  数据类型2,
	字段名n  数据类型n
);

修改表名:

alter table 表名 rename to 新表名;

表中添加一列

alter table 表名 add 列名 数据类型;

修改表中列的数据类型

alter table 表名 modify 列名 新的数据类型;

修改列名和数据类型

alter table 表名 change 列名 新类名  新数据类型;

删除列

alter table 表名 drop 列名;
查询 基础查询

给制定的列添加元素

insert into 表名(列名1,列名2...) values(值1,值2...);

给全部的列添加元素

insert into 表名 values(值1,值2...);

批量添加元素

insert into 表名 (列名1,列名2...) values(值1,值2...),(值1,值2...);

insert into 表名 values (值1,值2...),(值1,值2...);

修改表中的元素

update 表名 set 列名1=值1 where 条件;

注意:update 修改值时,不加条件会把全部的值修改掉

删除数据

delete from 表名 [where 条件];

查询元素完整语法

SELECt 
    字段列表
FROM 
    表名列表 
WHERe 
    条件列表
GROUP BY
    分组字段
HAVINg
    分组后条件
ORDER BY
    排序字段
LIMIT
    分页限定

查询某些元素

select 列名1,列名2 from 表名;

查询不重复元素

select distinct 字段列表 from 表名;

注意:当你distinct 后面加的字段列表,是全部不一样的才算是重复的
例:原表为:

当你的查询语句为:

select id,username from student;

查询的结果为:

起别名 AS (也可以省略)

select * from student s where s.id=1001;

select * from student AS s where s.id=1001;

注意:在使用select 时,最好直接使用字段列表,这样可以加注释
例:

select id,-- 序列号
			username,-- 用户名 
			password-- 密码
from student;
条件查询

语法

SELECt 字段列表 FROM 表名 WHERe 条件列表;

条件列表可使用的运算符

模糊查询

模糊查询使用like关键字,可以使用通配符进行占位:

  • _ : 代表单个任意字符

  • % : 代表任意个数字符

例:

select * from stu s where name like '马%'; 

select * from stu s where name like '_运'; 
排序查询

关键字:order by

desc:降序
asc:升序

select 字段列表 from 表名 order by 字段 desc;-- 降序

select 字段列表 from 表名 order by 字段 asc;-- 升序

当要排序的字段出现重复时,加上,后面在加上重复元素要遵守的排序规则
按照java成绩降序排序,当java成绩一样时,按照c++的成绩升序排序

select * from stu order by java desc, c++ asc  ;
聚合函数

将一列数据作为一个整体,进行纵向计算
例如:当你要计算学生成绩表中的java成绩的总和,就可以使用函数,这就是对java成绩的纵向计算。

聚合函数分类
函数名功能
count(列名)统计数量(一般选用不为null的列)
max(列名)最大值
min(列名)最小值
sum(列名)求和
avg(列名)平均值
聚合函数的语法
SELECt 聚合函数名(列名) FROM 表;

求和:

select sum(列名) from stu;

求平均值:

select avg(列名) from stu;

求个数:

select count(列名) from stu;

假如所求个数的列中有null,则不会计算该行

求最大值

select max(列名) from stu;

求最小值

select min(列名) from stu;
分组查询
SELECt 字段列表 FROM 表名 [WHERe 分组前条件限定] GROUP BY 分组字段名 [HAVINg 分组后条件过滤];

注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
例:

select sex,avg(age) from stu group by sex;-- 以性别分组,并且计算每组的平均年龄

查询满足数学成绩大于70的性别、计算他们的平均数学成绩、组内个数并以性别分组且组里所含个数大于2

select sex, avg(math),count(*) from stu where math > 70 group by sex having count(*)  > 2;

where 和 having 区别:

  • 执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤。

  • 可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。

分页查询

分页查询的语法

SELECt 字段列表 FROM 表名 LIMIT  起始索引 , 查询条目数;

注意: 上述语句中的起始索引是从0开始

起始索引计算公式:

起始索引 = (当前页码 - 1) * 每页显示的条数

例:
每页显示3条数据,查询第3页的数据

select * from 表名 limit 6,3;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/841955.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号