JavaWeb自我学习——MySQL部分

目录

一、MySQL数据模型:

二、SQL分类

1.DDL--操作数据库,表,列

2.DML--操作数据

3.DQL--查询数据库中表的记录(数据)

基础查询:

条件查询 :

 排序查询:

 聚合函数:

 分组查询:

 分页查询:

三、约束

约束的概念和分类

 非空约束

唯一约束

主键约束

默认约束

 外键约束

 四、多表查询

内连接

外连接

子查询

五、事务


一、MySQL数据模型:

图片借自黑马程序员

二、SQL分类


-DDL(Data Definition Language)数据定义语言,用来定义数据库对象:数据库,表,列等
-DML(Data Manipulation Language)数据操作语言,用来对数据库中表的数据进行增删改
-DQL(Data Query Language)数据查询语言,用来查询数据库中表的记录(数据)
-DCL(Data Control Language)数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户

1.DDL--操作数据库,表,列

库:

查询
    SHOW DATABASES;
创建
    1.创建数据库
    CREATE DATABASE 数据库名称;
    2.创建数据库(判断,如果不存在则创建)
    CREATE DATABASE IF NOT EXISTS 数据库名称;
删除
    1.删除数据库
    DROP DATABASE 数据库名称;
    2.删除数据库(判断,如果存在则删除)
    DROP DATABASE IF EXISTS 数据库名称;
使用数据库
    1.查看当前使用的数据库
    SELECT DATABASE();
    2.使用数据库
    USE 数据库名称;

表: 

查询表
    1.查询当前数据库下所有表名称
    SHOW TABLES;
    2.查询表结构
    DESC 表名称;
创建表
CREATE TABLE 表名(
    字段名1 数据类型1,
    字段名2 数据类型2,
    ……
    字段名n 数据类型n
);

注意:最后一行末尾,不能加逗号

附:

MySQL数据类型,(图来自黑马程序员)

 

删除表
    1.删除表
    DROP TABLE 表名;
    2.删除表时判断表是否存在
    DROP TABLE IF EXISTS 表名;
修改表
    1.修改表名
    ALTER TABLE 表名 RENAME TO 新的表名;
    2.添加一列
    ALTER TABLE 表名 ADD 列名 数据类型;
    3.修改数据类型
    ALTER TABLE 表名 MODIFY 列名 新数据类型;
    4.修改列名和数据类型
    ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
    5.删除列
    ALTER TABLE 表名 DROP 列名;

2.DML--操作数据

添加数据
    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...)...;
修改数据
    1.修改表数据
    UPDATE 表名 SET 列名1=值1,列名2=值2,...[WHERE 条件];
注意:修改语句中如果不加条件,则将所有数据都修改!
删除数据
    1.删除数据
    DELETE FROM 表名 [WHERE 条件];
注意:删除语句中如果不加条件,则将所有数据都删除!

3.DQL--查询数据库中表的记录(数据)

基础查询:

1.查询多个字段
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名;--查询所有数据

2.去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;

3.起别名
AS: AS 也可以省略

条件查询 :

1.条件查询语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;

附:

条件(图取自黑马程序员)

 排序查询:

1.排序查询语法
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2[排序方式2]...;
    
排序方式:
.ASC:升序排列(默认值)
.DESC:降序排列

注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序

 聚合函数:

1.概念:
将—列数据作为一个整体,进行纵向计算。

2.聚合函数分类:

函数名       功能

count(列名)  统计数量(一般选用不为null的列)
max(列名)    最大值
min(列名)    最小值
sum(列名)    求和
avg(列名)    平均值

3.聚合函数语法:
SELECT 聚合函数名(列名) FROM 表;

注意: null值不参与所有聚合函数运算

 分组查询:

1.分组查询语法
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条
件过滤];
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义

where和having区别:
·执行时机不一样: where是分组之前进行限定,不满足where条件,则不参与分组,
而having是分组之后对结果进行过滤
.可判断的条件不一样: where不能对聚合函数进行判断,having 可以。

执行顺序:where >聚合函数> having

 分页查询:

1.分页查询语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;
·起始索引:从0开始

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

tips:
· 分页查询limit是MySQL数据库的方言
. Oracle分页查询使用rownumber
. sQL Server分页查询使用top

三、约束

约束的概念和分类

1.约束的概念
约束是作用于表中列上的规则,用于限制加入表的数据·约束的存在保证了数据库中数据的正确性、
有效性和完整性。

约束名称  描述                                                     关键字
非空约束  保证列中所有数据不能有null值                               NOT NULL
唯一约束  保证列中所有数据各不相同                                   UNIQUE
主键约束  主键是一行数据的唯一标识,要求非空且唯一                     PRIMARY KEY
检查约束  保证列中的值满足某一条件                                   CHECK
默认约束  保存数据时,未指定值则采用默认值                            DEFAULT
外键约束  外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性  FOREIGN KEY

Tips: MySQL不支持检查约束

 非空约束

1.概念
    ·非空约束用于保证列中所有数据不能有NULL值
2.语法

(1)添加约束
--创建表时添加非空约束
CREATE TABLE 表名(
    列名 数据类型 NOT NULL,
    …
);
--建完表后添加非空约束
ALTER TABLE 表名 MODIFY 字段名 数据类型 NOT NULL;

(2)删除约束
ALTER TABLE 表名 MODIFY 字段名 数据类型;

唯一约束

1.概念
    ·唯一约束用于保证列中所有数据各不相同
2.语法
(1)添加约束

--倒建表时添加唯一约束

CREATE TABLE 表名(
    列名 数据类型, UNIQUE [AUTO_INCREMENT],
    -- AUTO_INCREMENT:当不指定值时自动增长
    ...
);

CREATE TABLE 表名(
    列名 数据类型,
    ...
    [CONSTRAINT][约束名称] UNIQUE(列名)
);

--建完表后添加唯—约束
ALTER TABLE 表名 MODIFY 字段名 数据类型 UNIQUE;

(2)删除约束
ALTER TABLE 表名 DROP INDEX 字段名;

主键约束

1.概念
    .主键是一行数据的唯一标识,要求非空且唯一
    ·一张表只能有一个主键
2.语法

(1)添加约束
--创建表时添加主键约束
CREATE TABLE 表名(
    列名 数据类型 PRIMARY KEY [AUTO_INCREMENT],
    ...
);
CREATE TABLE 表名(
    列名 数据类型,
    [CONSTRAINT] [约束名称] PRIMARY KEY(列名)
);

--建完表后添加主键约束
ALTER TABLE 表名 ADD PRIMARY KEY(字段名);

(2)删除约束
ALTER TABLE 表名 DROP PRIMARY KEY;

默认约束

1.概念
    ·保存数据时,未指定值则采用默认值
2.语法

(1)添加约束
--创理表时添加默认约束
CREATE TABLE表名(
    列名 数据类型 DEFAULT 默认值,
    ...
);
--建完表后添加默认约束
ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默认值;

(2)删除约束
ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;

 外键约束

1.概念
    ·外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性
2.语法

(1)添加约束
--创建表时添加外键约束
CREATE TABLE表名(
    列名 数据类型,
    ...
    [CONSTRAINT] [外键名称] FOREIGN KEY(外键列名)REFERENCES 主表(主表列名)
);
--建完表后添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY(外键字段名称)REFERENCES 主表
名称(主表列名称);

(2)删除约束
ALTERTABLE 表名 DROP FOREIGN KEY 外键名称;

 四、多表查询

内连接

1.内连接查询语法
--隐式内连接
SELECT 字段列表 FROM 表1,表2... WHERE 条件;
--显示内连接
SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件;

内连接相当于查询表1表2交集数据

外连接

1.外连接查询语法
-左外连接
SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;
--右外连接
SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;
左外连接:相当于查询表1所有数据和交集部分数据
右外连接:相当于查询表2所有数据和交集部分数据

子查询

1.子查询概念:
    查询中嵌套查询,称嵌套查询为子查询
2.子查询根据查询结果不同,作用不同:

--单行单列:作为条件值,使用=!= ><等进行条件判断
SELECT 字段列表 FROM 表 WHERE 字段名 = (子查询);

--多行单列:作为条件值,使用in等关键字进行条件判断
SELECT 字段列表 FROM 表 WHERE 字段名 in 子查询);

--多行多列:作为虚拟表
SELECT 字段列表 FROM(子查询) WHERE 条件;

五、事务


        数据库的事务(Transaction)是一种机制、一个操作序列,包含了一组数据库操作命令。

        事务把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败。

        事务是一个不可分割的工作逻辑单元。

--开启事务
START TRANSACTION;
--或者 
BEGIN;
--提交事务
COMMIT;
--回滚事务
ROLLBACK;

        MySQL事务默认自动提交

--查看事务的默认提交方式
SELECT @@autocommit;
-- 1自动提交 0手动提交

--修改事务提交方式
set @@autocommit = 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员Lyle

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

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

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

打赏作者

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

抵扣说明:

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

余额充值