【JavaWeb】MySQL基础操作

1 通用语法规则

  • SQL语句可以单行或者多行书写,以分号结尾
  • SQL语句不区分大小写,关键字建议使用大写
  • 单行注释 --注释内容(通用)       # 注释内容(MySQL独有)
  • 多行注释 /* 注释内容 */

2 语句

数据库

-- 查看所有数据库
show databases;

-- 创建数据库
create database 数据库名称;

-- 创建数据库(判断,不存在则创建)
create database if not exists 数据库名称;
-- 删除数据库
drop database 数据库名称;

-- 删除数据库(存在才删除)
drop database if exists 数据库名称;

-- 切换数据库/使用数据库
use 数据库名称;

表 

-- 创建表
create table 表名 (
        字段名 数据类型,
        字段名 数据类型,
        ...
);

【JavaWeb】MySQL基础操作_第1张图片

 常用数据类型

  • int:整数类型
  • double:小数类型
  • varchar(长度):字符串
  • data:日期 yyyy-MM-dd

分类

类型名称

类型说明

整数

tinyInt

微整型:很小的整数(8位二进制)  1个字节

smallint

小整型:小的整数(16位二进制)  2个字节

mediumint

中整型:中等长度的整数(24位二进制)  3个字节

int(integer)

整型:整数类型(32位二进制) 4个字节

bigint

大整型:占64位二进制 8个字节

小数

float

单精度浮点数,占4个字节

double

双精度浮点数,占8个字节

decimal(m,n)

数值类型,m表示数值的长度,n表示小数的位数既可以表示整数,也可以表示小数。如:decimal(10)  decimal(10,2)

日期

time

只表示时间类型 HH:mm:ss

date

只表示日期类型 yyyy-MM-dd

datetime

表示日期和时间类型时间范围为:'1000-01-01 00:00:00' '9999-12-31 23:59:59'

timestamp

表示日期和时间类型(时间戳)时间范围为:'1970-01-01 00:00:01' '2038-01-19 03:14:07'

字符串

char(m) 定长

固定长度的字符串,无论使用几个字符都占满全部,M0~255之间的整数

varchar(m) 变长

可变长度的字符串,使用几个字符就占用几个,M0~65535之间的整数

-- 查看数据库A中的所有表
show tables;

-- 查看表结构
desc 表名;

-- 删除表
drop table 表名;
-- 修改表名
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 表名 values (值1,值2,...),(值1,值2,...),(值1,值2,...);

指定列添加数据 

 批量添加

【JavaWeb】MySQL基础操作_第2张图片

  •  删除和修改表中数据必须加条件,否则表中数据会全部删除或修改
-- 修改表中数据
update 表名 set 字段名=新的值(,字段名=新的值) where 条件 (and 条件2);

-- 删除表中数据
delete from 表名 where 条件;

【JavaWeb】MySQL基础操作_第3张图片

查询数据

基础查询

-- 查询指定字段的数据
select 字段1,字段2 from 表名;

-- 查询所有字段的数据
select * from 表名;
-- 去除重复字段的查询(查询出来的重复数据只会显示一个)
select distinct 字段名1 from 表名;

-- 计算列的值(例如算销售额,将单价*销量)
select 字段名1 (+ - * /) 字段名2 from 表名;

-- 起别名查询(显示的列的名字会显示成别名)
select 字段1 as 别名1,字段2 as 别名2 from 表名;

条件查询

-- 条件查询
select 字段名 from 表名 where 条件;

【JavaWeb】MySQL基础操作_第4张图片

比较运算符 大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(=)、不等于(<>或!=)
逻辑运算符 并且(and 或 &&)、或者(or 或 ||)、非(not 或 !)
范围 在某个范围内(between...and....)(范围包括在内)、多选一(in (非连续的范围) )
nll的处理 是null(is null)、不是null(is not null)

模糊查询

-- 模糊查询
select * from 表名 where 字段名 like '通配符字符串';

通配符:任意多个字符(%)、一个字符(_)

【JavaWeb】MySQL基础操作_第5张图片

查询排序

-- 排序查询
select 字段名 from 表名 order by 列名 排序方式1,排序方式2;

排序方式:升序(asc)(默认)、降序(desc)

如果有多个排序条件,只有当前面的条件值一样时,才会判断第二个排序条件

【JavaWeb】MySQL基础操作_第6张图片

复杂查询-聚合函数

使用聚合函数是无法同时查询同行的其它数据

-- 聚合函数查询(null值是不会被统计到)
select 聚合函数(字段名) from 表名;

【JavaWeb】MySQL基础操作_第7张图片

【JavaWeb】MySQL基础操作_第8张图片

count 统计指定列有几行
sum 计算指定列的数值和
max 计算指定列的最大值
min 计算指定列的最小值
avg 计算指定列的平均值
-- round(数据,小数位) 让小数显示指定位数
select round(avg(grade),2) from student;

复杂查询-分组

-- 分组查询
select 字段名 from 表名 (where 条件) group by 字段名 (having 条件);

-- 分组查询,只会查询每个字段的第一个
select * from 表名 group by 字段名;

-- 统计字段有几个
select 字段A,count(*) group by 字段A ;

-- 例如统计选每个学科的有多少人
select xueke,count(*) group by xueke;

havingwhere的区别

where是在分组前对数据进行过滤,having是在分组后对数据进行过滤

where后面不可以使用聚合函数,having后面可以使用聚合函数

【JavaWeb】MySQL基础操作_第9张图片

复杂查询-分页

limit作用:获取部分查询的数据

-- 分页查询
select * from 表名 limit 跳过的记录数默认为0,显示总数;

-- 例子跳过前2条,获取3条
select * from 表名 limit 2,3;

-- 跳过0条,显示3条
select * from 表名 limit 3;

MySQL数据库:limit

Oracle数据库:rownumber

SQL Server:top

你可能感兴趣的:(mysql,数据库)