MySQL详细介绍与使用

06-02 1422阅读

目录

一、mysql的安装 

二、数据库介绍

1.概念介绍

2.数据库数据类型

3.数据库单表约束

三、SQL语言

1.SQL分类

2.数据库操作

3.表结构操作

4.数据操作

5.多表关系与查询


一、mysql的安装 

mysql安装使用教程

二、数据库介绍

1.概念介绍

  • 数据库:数据仓库,访问必须只能用SQL语句来访问。数据库其实就是一个文件的系统。
  • 作用:存储数据,开发任何的应用,都有数据库。
  • mysql数据库概念:一个数据库的服务器中包含多个数据库,一个数据库中有多张表,一个表中包含多个字段,表中存放是数据,一行数据和一个JavaBean实体对象是对应的。

    2.数据库数据类型

    (1)字符串型

    • VARCHAR 长度是可变 根据实际数据长度占用空间
    • CHAR 长度不可变,存入的数据不够,将填充到指定长度(右侧填充空格)
    • BLOB :字节(电影 mp3)
    • TEXT :字符(文本的内容)

      (2)数值型

      • TINYINT :占用 1 字节,能存储非常小的整数值。         取值范围:                 有符号:-128 到 127                 无符号:0 到 255
        • SMALLINT:占用 2 字节,存储小范围的整数。         取值范围:                 有符号:-32,768 到 32,767                 无符号:0 到 65,535
          • INT:占用 4 字节,能够存储一般范围的整数。         取值范围:                 有符号:-2,147,483,648 到 2,147,483,647                 无符号:0 到 4,294,967,295
            • BIGINT:占用 8 字节,支持很大的整数范围。
            • FLOAT:通常占用 4 字节,用于存储单精度浮点数。
            • DOUBLE:通常占用 8 字节,用于存储双精度浮点数。

              (3)逻辑型

              BIT:在Java中是true或者false 在数据库bit类型(1或者0)

              (4)日期型

              • DATE :只包含日期(年月日)
              • TIME :只包含时间(时分秒)
              • DATETIME :包含日期和时间。如果插入数据的时候,字符值为空,字段的值就是空了。
              • TIMESTAMP :包含日期和时间。如果插入数据的时候,设置字段的值为空,默认获取当前的系统的时候,  把时间保存到字段中。

                3.数据库单表约束

                (1) 主键约束 (PRIMARY KEY)

                • 功能:唯一标识表中的每一行记录。主键的值不能重复,且不能为空。
                • 唯一且非空。

                  (2)唯一约束 (UNIQUE)

                  • 功能:确保列中所有值是唯一的,允许空值。

                    (3)非空约束 (NOT NULL)

                    • 功能:确保列中的每个值都不能为空。

                      (4) 默认约束 (DEFAULT)

                      • 功能:为列提供默认值,当插入记录时如果没有为此列提供值,将会使用此默认值。

                        (5) 外键约束 (FOREIGN KEY)

                        • 功能:虽然外键通常涉及两个表之间的关系,但也可以在单个表中使用,来确保某列的值引用同一表中的主键或唯一列。

                          三、SQL语言

                          1.SQL分类

                          (1) DDL 数据定义语言
                          • 创建数据库 创建表 创建视图 创建索引 修改数据库 删除数据库 修改表 删除表
                          • create ‐‐ 创建 alter ‐‐ 修改 drop ‐‐ 删除 (2)DML 数据操作语言
                            • 操作数据 插入数据(insert) 修改数据(update) 删除数据(delete) (3)DCL 数据控制语言
                              • if else while (4)DQL 数据查询语言
                                • 从表中查询数据(select)

                                  2.数据库操作

                                  (1)创建数据库
                                  create database 数据库名称 
                                  create database 数据库名称 character set 编码 collate 校对规则 
                                  create database mydb3 character set 'utf8' collate 'utf8_bin';
                                  (2)查看数据库
                                  show databases; ‐‐ 查看所有的数据库
                                  use 数据库名称;(*****) ‐‐ 使用数据库
                                  show create database 数据库名称; ‐‐ 查询数据库的创建的信息
                                  select database(); ‐‐ 查询当前正在使用的数据库
                                  (3)删除数据库
                                  drop database 数据库名称; --删除数据库
                                  (4)修改数据库
                                  alter database 数据库名称 character set 'gbk' collate '校对规则';

                                  3.表结构操作

                                  (1)创建表
                                  create table 表名称(
                                      字段1 类型(长度) 约束,
                                      字段2 类型(长度) 约束, 
                                      字段3 类型(长度) 约束
                                  );
                                  注意:
                                  • 创建表的时候,后面用小括号,后面分号。
                                  • 编写字段,字段与字段之间使用逗号,最后一个子段不能使用逗号。
                                  •  如果声明字符串数据的类型,长度是必须指定的。
                                  • 如果不指定数据的长度,有默认值的。int类型的默认长度是11 例如:
                                    select database();
                                    use 数据库名称;
                                    create table employee(
                                        id int,
                                        name varchar(30), 
                                        gender char(5), 
                                        birthday date, 
                                        entry_date date, 
                                        job varchar(50), 
                                        salary double, 
                                        resume text
                                    );
                                    (2)单表删除
                                    drop table 表名;
                                    (3)查看表
                                    desc 表名;    ‐‐ 查询表的信息
                                    show tables;    ‐‐ 查看当前数据库中所有的标签
                                    show create table 表名;    ‐‐ 查看表的创建的信息
                                    (4)修改表
                                    alter table 表名 add 新列名 类型(长度) 约束;     ‐‐ 添加列
                                    alter table 表名 drop 列名;     ‐‐ 删除列
                                    alter table 表名 modify 列名 类型(长度) 约束;     ‐‐ 修改列的类型或者约束
                                    alter table 表名 change 旧列名 新列名 类型(长度) 约束;     ‐‐ 修改列名
                                    rename table 表名 to 新表名;     ‐‐ 修改表的名称
                                    alter table 表 名 character set utf8;     ‐‐ 修改表的字符集

                                    4.数据操作

                                    (1)插入数据
                                    insert into 表名 (字段1,字段2,字段3) values (值1,值2,值3);
                                    insert into 表名 values (值1,值2,值3);
                                    • 插入的数据与字段类型必须是相同的。
                                    • 数据的大小范围在字段范围内
                                    • 值与字段一一对应
                                    • 字符串或者日期类型数据需要使用单引号
                                      (2)MySQL插入中文数据乱码问题
                                      • 先把MySQL服务停止。
                                      • 找到MySQL安装文件的my.ini的配置文件 [client] port=3306 [mysql] default‐character‐set=gbk
                                        • 重启MySQL服务
                                          (3)修改数据(update)
                                          update 表名 set 字段1=值,字段2=值 where 条件;
                                          -- 如果没有where条件语句,默认更新所有的数据。
                                          -- 如果有where条件,默认更新符合条件的记录。
                                          -- 将所有员工薪水修改为5000元。
                                          update user set salary = 5000;
                                          -- 将姓名为’聪聪’的员工薪水修改为3000元。
                                          update user set salary = 3000 where username = '聪聪';
                                          -- 将姓名为’小凤’的员工薪水修改为4000元,job改为ccc。
                                          update user set salary = 4000,job = 'ccc' where username = '小凤';
                                          -- 将如花的薪水在原有基础上增加1000元。
                                          update user set salary = salary+1000 where username = '如花';
                                          (4)删除数据(delete)
                                          delete from 表名 where 条件;    -- 如果没有where条件,默认删除所有的数据。
                                          truncate 表名;    -- 删除表中所有的数据。
                                          delete from 表名; -- 也可以删除所有数据。
                                          

                                          区别: 

                                          • truncate先把你整个表删除掉,默默创建一个空的表(和原来的表结构是一样的)。
                                          • delete from 表名 一行一行的删除。(使用它) 
                                            (5)查询数据(select)
                                            select * from 表名;
                                            select 字段1,字段2,字段3 from 表名;
                                            DISTINCT -- 去除重复的数据(面试常考)
                                            (6)查询语句中使用运算和别名
                                            -- 在所有学生分数上加10分特长分。
                                            select name,(math+10) m,(english+10) e,(chinese+10) c from stu;
                                            -- 统计每个学生的总分。
                                            select name,(math+english+chinese) 总 分 from stu;
                                            -- 使用别名表示学生分数
                                            select name, (math + english + chinese + 10) as 总分 from stu;  
                                            (7)使用where条件过滤
                                            --  查询姓名为聪聪的学生成绩
                                            select name,math,chinese from stu where name = '聪聪';
                                            -- 查询英语成绩大于90分的同学
                                            select name,english from stu where english > 20;
                                            -- 查询总分大于200分的所有同学
                                            select name,math+english+chinese from stu where (math+english+chinese) > 200;
                                            --in 表示范围
                                            select * from stu where math = 18;
                                            select * from stu where math in (78,18,99);
                                            --like 模糊查询 ‐‐ 符合模糊的条件
                                            select * from stu where name like '张_';
                                            select * from stu where name like '张%';
                                            select * from stu where name like '%张';
                                            select * from stu where name like '%张%'; 
                                            --isnull ifnull nullif判断某一个字段记录是否为空
                                            --and与 or或者 not非
                                            • isnull、ifnull和nullif的区别

                                              MySQL详细介绍与使用

                                              (8)order by 对查询的结果进行排序
                                              select * from 表名 where 条件 order by 列名 升序/降序;
                                              order by 列名 asc;    -- 升序,默认值
                                              order by 列名 desc;    -- 降序
                                              --order by 子句必须出现在select语句的末尾。
                                              (9)聚集函数
                                              -- 总计某一列数据总和。一列的个数。一列的平均数。
                                              -- 一列中最大值和最小值。
                                              count --计数
                                              sum --求和
                                              avg ‐‐ 平均值
                                              max ‐‐ 最大值
                                              min ‐‐ 最小值
                                              -- ifnull 判断是否为空,如果xxx为null,替换成0
                                              ifnul(xxx,0)
                                              (10)分组 group by
                                              -- 1.按照分数段分组
                                              SELECT   
                                                  CASE   
                                                      WHEN (math + english + chinese + 10) >= 90 THEN '优'  
                                                      WHEN (math + english + chinese + 10) >= 80 THEN '良'  
                                                      WHEN (math + english + chinese + 10) >= 70 THEN '中'  
                                                      ELSE '及格以下'  
                                                  END AS 成绩等级,  
                                                  COUNT(*) AS 学生人数  
                                              FROM stu  
                                              GROUP BY 成绩等级;  
                                              -- 2.对订单表中商品归类后,显示每一类商品的总价
                                              select product,sum(price),count(*) from orders group by product; 默认是一组
                                              -- 3.查询购买了几类商品,并且每类总价大于100的商品
                                              select product from orders group by product having sum(price) > 100;

                                              Having和where均可实现过滤,但在having可以使用聚集函数,where不能使用聚集函数,having通常跟在group by后,它作用于分组。 

                                              5.多表关系与查询

                                              数据库的多表查找_如何多表查询-CSDN博客
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码