java学习-mysql基本使用笔记

DDL 操作 数据库

创建数据库

/*指定数据库名称 默认数据库字符集为:latin1*/
CREATE DATABASE db1;
/*指定数据库名称 指定数据库的字符集 一般都指定为 utf8*/
CREATE DATABASE db1_1 CHARACTER SET utf8;

查看与选择

-- 切换数据库 从db1 切换到 db1_1
USE db1_1;
-- 查看当前正在使用的数据库
SELECT DATABASE();
-- 查看Mysql中有哪些数据库
SHOW DATABASES;
-- 查看一个数据库的定义信息
SHOW CREATE DATABASE db1_1;

修改数据库

-- 将数据库db1 的字符集 修改为 utf8
ALTER DATABASE db1 CHARACTER SET utf8;
-- 查看当前数据库的基本信息,发现编码已更改
SHOW CREATE DATABASE db1;

删除数据库

-- 删除数据库 db1_!
DROP DATABASE db1_1;

DDL 操作 数据表

创建表

CREATE TABLE 表名(
    字段名称1 字段类型(长度),
    字段名称2 字段类型 注意 最后一列不要加逗号
);

快速创建一个结构相同的表

CREATE TABLE 新表明 LIKE 旧表名

查看表/表结构

-- 查看当前数据库中有哪些表
SHOW TABLES;
-- 查看表结构
DESC 表名;
-- 查看创建表的SQL语句
SHOW CREATE TABLE 表名;

删除表

-- 直接删除 test1 表
DROP TABLE test1;
-- 先判断 再删除test2表
DROP TABLE IF EXISTS test2;

修改表

修改表名
RENAME TABLE 旧表名 TO 新表名;
修改表字符集
ALTER TABLE 表名 CHARACTER SET 字符集
追加列
ALTER TABLE 表名 ADD 字段 字段类型;
修改列型或类型长度
ALTER TABLE 表名 MODIFY 字段名称 字段类型
修改列名称
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型(长度);
删除列
ALTER TABLE 表名 DROP 列名;

DML 操作表中数据

SQL 中的 DML 用于对表中的数据进行增删改操作

插入数据

INSERT INTO 表名(字段1,字段2,...) VALUES(1,2,...)
注意
  • 值与字段必须要对应,个数相同&数据类型相同
  • 值的数据大小,必须在字段指定的长度范围内
  • varchar char date 类型的值必须使用单引号,或者双引号 包裹。
  • 如果要插入空值,可以忽略不写,或者插入 null
  • 如果插入指定字段的值,必须要上写列名

更改数据

UPDATE 表名 SET 列名 =;
UPDATE 表名 SET 列名 =WHERE 条件;
UPDATE 表名 SET 字段1=1,字段2=2,... WHERE 条件;

删除数据

-- 删除表中所有数据
DELETE FROM 表名;
-- 删除表中指定条件的数据
DELETE FROM 表名 WHERE 条件;
-- 删除表推荐(先删除整张表, 然后再重新创建一张一模一样的表. 效率高)
truncate table 表名

DQL 查询 数据表

基础查询

SELECT 列名 FROM 表名
-- 使用 * 表示所有列
SELECT * FROM 表名
-- 查询部分字段
SELECT 列名1, 列名2, ... FROM 表名
-- 查询部分字段并起别名
SELECT 列名1 AS 别名1, 列名2 AS 别名2, ... FROM 表名
-- 查询某个字段并去重
SELECT DISTINCT 列名 FROM 表名
-- 查询某个字段

条件查询

SELECT 列名 FROM 表名 WHERE 条件;
比较运算符
运算符描述
=等于
>大于
<小于
>=大于等于
<=小于等于
<>不等于
LIKE包含 例如:LIKE '\测%' LIKE '%测%'
BETWEEN区间 例如:BETWEEN 2000 and 10000
IN包含
IS等于
IS NOT不等于
逻辑运算符
运算符描述
AND
OR
NOT

查询排序

-- 默认排序 ASC
SELECT 列名 FROM 表名 ORDER BY 列名;
-- 排序 DESC
SELECT 列名 FROM 表名 ORDER BY 列名 DESC;

组合排序

SELECT 列名 FROM 表名 ORDER BY 列名1 ASC, 列名2 DESC;

聚合函数

SELECT 函数名(列名) FROM 表名;
聚合函数描述
COUNT计数
SUM
AVG平均
MIN最小
MAX最大
-- 使用某一个字段
SELECT COUNT(列名) FROM 表名;

-- 使用 *
SELECT COUNT(*) FROM 表名;

-- 使用 1,与 * 效果一样
SELECT COUNT(1) FROM 表名;

-- 下面这条SQL 得到的总条数不准确,因为count函数忽略了空值 -- 所以使用时注意不要使用带有null的列进行统计
SELECT COUNT(列名) FROM 表名;

分组

分组查询指的是使用 GROUP BY 语句,对查询的信息进行分组,相同数据作为一组语法格式

SELECT 分组字段/聚合函数 FROM 表名 GROUP BY 分组字段 [HAVING 条件];

limit 关键字

  • limit 是限制的意思,用于 限制返回的查询结果的行数 (可以通过 limit 指定查询多少行数据)
  • limit 语法是 MySql 的方言,用来完成分页
SELECT 列名 FROM 表名 LIMIT 开始行数, 查询行数;

SQL 约束

对表中的数据进行进一步的限制,从而保证数据的正确性、有效性、完整性.违反约束的不正确数据,将无法插入到表中

常见约束
约束名称描述
PRIMARY KEY主键约束
UNIQUE唯一约束
FOREIGN KEY外键约束
CHECK检查约束
NOT NULL非空约束
DEFAULT默认值约束
AUTO_INCREMENT自增约束
主键约束
  • 特点
    • 不可重复 唯一 非空
  • 作用
    • 用来表示数据库中的每一条记录
添加主键约束
-- 方法一 创建表设置主键唯一
CREATE TABLE 表名(
    -- 创建表设置主键唯一
    字段名 字段类型 PRIMARY KEY
);
-- 方法二 创建表设置主键唯一
CREATE TABLE 表名(
    字段名 字段类型
    -- 指定主键
    PRIMARY KEY( 字段名)
);

-- 修改列设置主键唯一
ALTER TABLE 表名 ADD PRIMARY KEY (列名);
外键约束
-- 创建表设置外键约束
CREATE TABLE 表名(
    字段名 字段类型,
    -- 创建外键约束
    FOREIGN KEY( 字段名) REFERENCES 关联表名( 关联字段名)
);
-- 已有表增加外键约束
ALTER TABLE 表名 ADD FOREIGN KEY( 字段名) REFERENCES 关联表名( 关联字段名);

-- 可以自定义外键约束名称
CONSTRAINT 外键约束名称 FOREIGN KEY( 字段名) REFERENCES 关联表名( 关联字段名)
删除外键约束
-- 删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY( 字段名);

多表联合查询

内关联查询

通过指定的条件去匹配两张表中的数据, 匹配上就显示,匹配不上就不显示

SELECT1.字段1,2.字段2 FROM1,2 WHERE1.字段1 =2.字段2;
显式内关联

INNER 可以隐藏

SELECT1.字段1,2.字段2 FROM1 [INNER] JOIN2 ON1.字段1 =2.字段2;
左关联查询
  • 以左表为基准, 匹配右边表中的数据,如果匹配的上,就展示匹配到的数据
  • 如果匹配不到, 左表中的数据正常展示, 右边的展示为 null.
SELECT1.字段1,2.字段2 FROM1 LEFT JOIN2 ON1.字段1 =2.字段2;
右关联查询
  • 以右表为基准,匹配左边表中的数据,如果能匹配到,展示匹配到的数据
  • 如果匹配不到,右表中的数据正常展示, 左边展示为 null
SELECT1.字段1,2.字段2 FROM1 RIGHT JOIN2 ON1.字段1 =2.字段2;
子查询

概念:一条 select 查询语句的结果, 作为另一条 select 语句的一部分

  • 特点
    • 子查询必须放在小括号中
    • 子查询一般作为父查询的查询条件使用
  • 常见分类
    • where 型 子查询: 将子查询的结果, 作为父查询的比较条件
    • from 型 子查询 : 将子查询的结果, 作为 一张表,提供给父层查询使用
    • exists 型 子查询: 子查询的结果是单列多行, 类似一个数组, 父层查询使用 IN 函数 ,包含子查 询的结果
-- 作为父查询的比较条件
SELECT 字段1 FROM1 WHERE 字段1 > (
  SELECT MAX(字段2) FROM2
);
-- 作为一张表
SELECT1.字段1,2.字段2  FROM1 LEFT JOIN (
	SELECT 字段1,字段2 FROM2
) AS2别名 ON1.字段1 =2别名.字段2
-- 单列多行, 类似一个数组
SELECT 字段1 FROM1 WHERE1.字段1 IN (
    SELECT2.字段2 FROM2
);
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵忠洋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值