MySQL基础


JavaWeb - day1 - MySQL基础

数据库相关概念

数据库

  • 存储数据的仓库,数据是有组织的进行存储。
  • 英文:DataBase,简称DB。

数据库管理系统

  • 管理数据库的大型软件
  • 英文:DataBase Management System,简称DBMS。

SQL

  • 英文: Structured Query Language,简称SQL,结构化查询语言。
  • 操作关系型数据库的编程语言。
  • 定义操作所有关系型数据库的统一标准。

MySQL数据库

MySQL安装

MySQL卸载

net stop mysql
mysqld -remove mysql

MySQL配置

  • 右键此电脑属性,点击高级系统设置
  • 点击环境变量
  • 系统变量中新建MYSQL_HOME。
  • 系统变量中找到并双击Path
  • 点击新建

新建配置文件

  • 新建一个文本文件,内容如下:(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
    

初始化MySQL

mysqld --initialize-insecure

注册MySQL服务

mysqld -install

启动MySQL服务

net start mysql  // 启动mysql服务
    
net stop mysql  // 停止mysql服务

修改默认账户密码

mysqladmin -u root password 1234

MySQL登录、退出

mysql -uroot -p1234

登陆参数

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

退出

exit
quit

MySQL数据模型

关系型数据库

  • 关系型数据库是建立在关系模型基础上的数据库,简单说,关系型数据库是由多张能互相连接的二维表组成的数据库。

优点

  • 都是使用表结构,格式一致,易于维护。
  • 使用通用的SQL语言操作,使用方便,可用于复杂查询。
  • 数据存储在磁盘中,安全。

SQL

SQL简介

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

SQL通用语法

  • SQL语句可以单行或多行书写,以分号结尾。
  • MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。

注释

SQL分类

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

DDL

DDL--操作数据库

  • 操作表也就是对表进行增(Create)删(Retrieve)改(Update)查(Delete)。

DDL--操作表

创建(Create)

实例
create table tb_user (
    id int,
    username varchar(20),
    password varchar(32)
);
数据类型
  • MySQL支持多种类型,可以分为三类:
  • 数值
  • 日期
  • 字符串
案例
实例
create table student (
    id int,
    name varchar(10),
    gender char(1),
    birthday date,
    score double(5,2),
    email varchar(15),
    tel varchar(15),
    status tinyint
);

查询(Retrieve)

修改(Update)

实例

删除(Delete)

DML

添加(insert)

修改(update)

删除(delete)

实例

-- 查询所有数据
SELECT
    *
FROM
    stu;


-- 给指定列添加数据 INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);
INSERT INTO stu (id, NAME)
VALUES
    (1, '张三');

-- 给所有列添加数据,列名的列表可以省略的
INSERT INTO stu (
    id, -- 编号
    NAME,-- 姓名
    sex,
    birthday,
    score,
    email,
    tel,
    STATUS
)
VALUES
    (
        2,
        '李四',
        '男',
        '1999-11-11',
        88.88,
        'lisi@itcast.cn',
        '13888888888',
        1
    );

INSERT INTO stu
VALUES
    (
        2,
        '李四',
        '男',
        '1999-11-11',
        88.88,
        'lisi@itcast.cn',
        '13888888888',
        1
    );


INSERT INTO stu
VALUES
    (
        2,
        '李四',
        '男',
        '1999-11-11',
        88.88,
        'lisi@itcast.cn',
        '13888888888',
        1
    ),(
        2,
        '李四',
        '男',
        '1999-11-11',
        88.88,
        'lisi@itcast.cn',
        '13888888888',
        1
    ),(
        2,
        '李四',
        '男',
        '1999-11-11',
        88.88,
        'lisi@itcast.cn',
        '13888888888',
        1
    );

select * from stu;

-- 修改数据 UPDATE 表名 SET 列名1=值1,列名2=值2,… [WHERE 条件] ;

-- 将张三的性别改为女

update stu set sex = '女' where name = '张三';

-- 将张三的生日改为 1999-12-12 分数改为99.99

update stu set birthday = '1999-12-12', score = 99.99 where name = '张三';


-- 注意:如果update语句没有加where条件,则会将表中所有数据全部修改!

update stu set sex = '女';


-- 删除  DELETE FROM 表名 [WHERE 条件] ;


-- 删除张三记录

delete from stu where name = '张三';

delete from stu;

DQL(最为常用,重要)

基础查询

实例

条件查询(WHERE)

实例

SELECT * FROM stu;

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

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


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


-- 3.查询年龄大于等于20岁 并且 年龄 小于等于 30岁 的学员信息
select * from stu where age >= 20 &&  age <= 30;
select * from stu where age >= 20 and  age <= 30;

select * from stu where age BETWEEN 20 and 30;

-- 4.查询入学日期在'1998-09-01' 到 '1999-09-01'  之间的学员信息

select * from stu where hire_date BETWEEN '1998-09-01' and '1999-09-01';


-- 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 in (18,20 ,22);

-- 8. 查询英语成绩为 null的学员信息  
-- 注意: null值的比较不能使用 = != 。需要使用 is  is not
 
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 '%德%';

分组查询(GROUP BY)

聚合函数

聚合函数实例

分组查询

DQL分组查询实例

/*
    分组函数
            SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤]…;
*/
select * from stu ;
-- 1. 查询男同学和女同学各自的数学平均分

select sex, avg(math) from stu group by sex;

-- 注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
select name, sex, avg(math) from stu group by sex;

-- 2. 查询男同学和女同学各自的数学平均分,以及各自人数

select sex, avg(math),count(*) from stu group by sex;

-- 3. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组

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

-- 4. 查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的。

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

排序查询(ORDER BY)

实例

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

-- 1.查询学生信息,按照年龄升序排列 

select * from stu order by age ;

-- 2.查询学生信息,按照数学成绩降序排列

select * from stu order by math desc ;

-- 3.查询学生信息,按照数学成绩降序排列,如果数学成绩一样,再按照英语成绩升序排列

select * from stu order by math desc , english asc ;

分页查询(LIMIT)

实例

/*
    分页查询:

            SELECT 字段列表 FROM 表名 LIMIT  起始索引 , 查询条目数
                * 起始索引:从0开始

*/
select * from stu ;
-- 1. 从0开始查询,查询3条数据
select * from stu limit 0 , 3;


-- 2. 每页显示3条数据,查询第1页数据
select * from stu limit 0 , 3;
-- 3. 每页显示3条数据,查询第2页数据
select * from stu limit 3 , 3;
-- 4. 每页显示3条数据,查询第3页数据

select * from stu limit 6 , 3;

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

声明:三二一的一的二|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - MySQL基础


三二一的一的二