MySQL笔记第一天(从小白到入门)

MySQL笔记第一天(从小白到入门)

码农世界 2024-05-19 前端 61 次浏览 0个评论

文章目录

  • MySQL笔记
    • SQL语言介绍
    • 数据库系统
      • 关系型数据库
      • 非关系型数据库
      • SQL和数据库系统的关系
      • 数据库系统架构
      • MySQL的介绍
        • 概念
        • MySQL的版本
        • MySQL的DDL操作-重点
          • 基本数据库操作
          • 基本表操作
          • MySQL的DML操作-重点
            • insert-插入数据
            • update-更新数据
            • delete-删除数据
            • MySQL的约束-了解
              • 概述
              • 约束的分类
              • 主键约束
              • 自增约束
              • 其他约束
              • 插入以下数据,发现主键从100开始,然后依次加1

                MySQL笔记

                SQL语言介绍

                • SQL语句概念

                  1.SQL全称: Structured Query Language,是结构化查询语言,用来访问结构化数据(类似Excel文本数据)
                  2.SQL用来操作数据库系统
                  3.SQL发展到现在,制定了很多的标准,有:SQL-92、SQL-99标准,不同的标准表达方式不同
                  
                • SQL语言的分类

                  数据定义语言-DDL (create/drop/show) 
                  数据操作语言-DML (insert/delete/update) 
                  数据查询语言-DQL (select/group by/order by) !!!!!!!
                  数据控制语言-DCL
                  
                • SQL语法特点

                  SQL 对关键字的大小写不敏感
                  SQL语句可以以单行或者多行书写,以分行结束
                  
                • SQL的注释

                  -- 单行注释
                  # 单行注释
                  /*
                    多行注释 
                    多行注释 
                    多行注释 
                    多行注释 
                  */
                  

                  数据库系统

                  关系型数据库

                  • 介绍

                    关系型数据库最大的特点是:数据库中存储的是一张张的表格,表格与表格之间存在的某种关系
                    
                  • 分类

                    1、Oracle数据库 (老大,最挣钱的数据库)
                    2、MySQL数据库 (最流行中型数据库))
                    3、SQL server数据库 (Windows上最好的数据库)
                    4、PostgreSQL(功能最强大的开源数据库)
                    5、SQLite(最流行的嵌入式数据库
                    #黑马的课程设计的数据库:MySQL数据库、Oracle数据库、PostgreSQL数据库
                    

                    非关系型数据库

                    • 介绍

                      菲关系型数据库中存储的是键值对,大部分都不是表
                      
                    • 分类

                      1、Redis(最好的缓存数据库)
                      2、MongoDB(最好的文档型数据库)
                      3、Elasticsearch(最好的搜索服务)
                      4、Cassandra(最好的列式数据库)
                      5、HBase(优秀的分布式、列式数据库)
                      #黑马的课程设计的数据库:Elasticsearch、HBase、MongoDB
                      

                      SQL和数据库系统的关系

                      1、SQL是一种用于操作数据库的语言,SQL适用于所有关系型数据库。
                      2、MySQL、Oracle、SQLServer是一个数据库软件,我们使用SQL可以操作这些软件,不过每一个数据库系统会在标准SQL的基础上扩展自己的SQL语法。
                      

                      数据库系统架构

                      数据库系统 --->数据库 --->表 --->数据
                      

                      MySQL的介绍

                      概念

                      1、MySQL现在归属于Oracle公司(甲骨文)、该公司旗下还有一个Oracle数据库,
                      2、MySQL底层是C语言
                      3、MySQL支持多种操作系统,多种编程语言访问()
                      

                      MySQL的版本

                      MySQL的经典数字版本: MySQL 8.x 和 MySQL 5.x  
                      可以安装 社区版MySQL 8.x 或者 商业版 MySQL 8.x
                      

                      MySQL的DDL操作-重点

                      基本数据库操作

                      -- 1、查看所有的数据库
                      show databases ;
                      -- 2、创建数据库
                      #不推荐使用以下命令,如果数据库存在,则报错
                      create database  mydb1;
                      #推荐使用以下命令,如果数据库存在,则什么也不做,如果数据库不存在,则创建
                      create database if not exists  mydb1;
                      -- 3、选择当前要使用哪个数据库
                      use mydb1;
                      -- 4、删除数据库
                      #以下命令不推荐,因为如果数据库不存在,则报错
                      drop database mydb1;
                      #以下命令推荐,因为如果数据库不存在,则什么也不做
                      drop database if exists mydb1;
                      -- 5、修改数据库编码
                      #我们目前的数据库默认就是utf-8编码
                      -- alter database mydb1 character set utf8;
                      

                      d=img-5BSVIfZf-1715992255382)

                      基本表操作

                      • 数据类型

                      • 创建表语法

                        create table [if not exists]表名(
                          字段名1 类型[(宽度)] [约束条件] [comment '字段说明'],
                          字段名2 类型[(宽度)] [约束条件] [comment '字段说明'],
                          字段名3 类型[(宽度)] [约束条件] [comment '字段说明']
                        )[表的一些设置];
                        
                      • 创建表操作

                        -- 1、创建学生表
                        use mydb1;
                        -- comment是给表字段(列)加注释,可以通过表结构查看注释
                        -- decimal(10,2) :10表示最多是10为有效数字(整数+小数) ,小数保留2位,整数最多是8位
                        -- 12345678.34 :整数8位 + 小数2位
                        -- varchar(20) 这里边最多存入20个字符,超过会截断
                        create table  if not exists student2(
                            sid int comment '学生学号',
                            name varchar(20) comment '学生名字',
                            gender varchar(2) comment '学生的性别',
                            age int comment '学生的年龄',
                            birth date comment '学生的生日',  -- 2000-12-23
                            address varchar(50) comment '学生的地址',
                            score decimal(10,2) comment '学生的成绩'
                        );
                        use mydb1;
                        -- 查看所有的表
                        show  tables ;
                        -- 查看表创建时的sql语句
                        show create table  student2;
                        -- 查看表结构,表字段名字和类型
                        desc student;
                        -- 删除表
                        drop  table student;
                        

                        MySQL的DML操作-重点

                        insert-插入数据

                        • 语法

                          insert into 表 (列名1,列名2,列名3...) values (值1,值2,值3...); #向表中插入某些
                          insert into 表 values (值1,值2,值3...);     #向表中插入所有列
                          
                        • 代码

                          #------------------DML操作-insert插入数据-----------------------
                          -- 添加一行数据
                          insert into student(sid,name,gender,age,birth,address,score)
                          values (1,'宝玉','男',19,'2000-12-23','北京',87);
                          -- 添加一行数据
                          #前边跟几个字段,后边就要跟几个值,类型要相同
                          insert into student(sid,name,gender) values (2,'黛玉','女');
                          -- 添加一行数据
                          # 如果表的后边没有加字段,则values后边需要给所有字段赋值
                          insert into student values (3,'宝钗','女',16,'2000-12-23','上海',98);
                          -- 添加多行数据
                          insert into student values
                                                  (4,'晴雯','女',17,'2002-12-23','深圳',56),
                                                  (5,'贾琏','男',34,'2023-10-23','广州',98),
                                                  (6,'贾雨村','男',156,'2008-02-21','杭州',45);
                          

                          update-更新数据

                          • 语法

                            update 表名 set 字段名=值,字段名=值...;
                            update 表名 set 字段名=值,字段名=值... where 条件;
                            
                          • 代码

                            #------------------DML操作-update更新数据-----------------------
                            -- 将所有学生的地址改为:吉山村
                            update student  set address = '吉山村';
                            -- 将所有学生的age改为18,score改为100
                            update student  set age = 18,score = 100;
                            -- 将所有学生的age在原来基础加上10岁
                            update student  set age = age + 10 ;
                            -- 将 晴雯 的address改为广州
                            update student  set address = '广州' where name = '晴雯';
                            update student  set address = '广州' where sid = 4;
                            

                            delete-删除数据

                            • 语法

                              delete from 表名 [where 条件];
                              truncate table  表名 或者 truncate 表名
                              
                            • 代码

                              #------------------DML操作-delete删除数据-----------------------
                              -- 删除操作,如果后边不加where条件,则会将该表的所有数据全部删除,比较危险
                              delete from student ;
                              -- 删除宝玉这个学生
                              delete from student where name  = '宝玉';
                              -- 清空表的所有内容
                              #注意:delete和truncate原理不同,delete只删除内容,而truncate类似于drop table ,可以理解为是将整个表删除,然后再创建该表;
                              truncate  table student;
                              truncate   student; -- 作用同上
                              

                              MySQL的约束-了解

                              概述

                              约束就是给某一列加限制,让该列的值复合某种要求,英文:constraint
                              

                              约束的分类

                              主键约束(primary key) PK
                              自增长约束(auto_increment)
                              非空约束(not null)
                              唯一性约束(unique)
                              默认约束(default)
                              外键约束(foreign key) FK
                              

                              主键约束

                              • 特点

                                1、MySQL主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行,方便在数据库中尽快的找到某一行。
                                2、主键约束相当于 非空 + 唯一 的组合,主键约束列不允许重复,也不允许出现空值(null值)。
                                3、每个表最多只允许一个主键
                                4、主键约束的关键字是:primary key
                                
                              • 语法

                                #----------------方式1-----------------------
                                -- 在 create table 语句中,通过 PRIMARY KEY 关键字来指定主键。
                                --在定义字段的同时指定主键,语法格式如下:
                                create table 表名(
                                   ...
                                   <字段名> <数据类型> primary key 
                                   ...
                                )
                                #----------------方式2-----------------------
                                --在定义字段之后再指定主键,语法格式如下:
                                create table 表名(
                                   ...
                                    primary key(字段名)
                                );
                                
                              • 代码

                                #----------------方式1-----------------------
                                drop table if exists student;
                                create table  if not exists student(
                                    sid int primary key comment '学生学号', #  !!!添加主键-sid这一列的值不能为空,而且必须唯一
                                    name varchar(20) comment '学生名字',
                                    gender varchar(2) comment '学生的性别',
                                    age int comment '学生的年龄',
                                    birth date comment '学生的生日',  -- 2000-12-23
                                    address varchar(50) comment '学生的地址',
                                    score decimal(10,2) comment '学生的成绩'
                                );
                                #----------------方式2-----------------------
                                drop table if exists student;
                                create table  if not exists student(
                                    sid int comment '学生学号',
                                    name varchar(20) comment '学生名字',
                                    gender varchar(2) comment '学生的性别',
                                    age int comment '学生的年龄',
                                    birth date comment '学生的生日',  -- 2000-12-23
                                    address varchar(50) comment '学生的地址',
                                    score decimal(10,2) comment '学生的成绩',
                                    primary key (sid)  # !!!添加主键 ,sid这一列的值不能为空,而且必须唯一
                                );
                                # 插入成功
                                insert into student values (1,'宝钗','女',16,'2000-12-23','上海',98);
                                # 插入失败,因为主键不能重复
                                insert into student values (1,'宝玉','男',16,'2000-12-23','上海',98);
                                # 插入失败,因为主键不能为空
                                insert into student values (null,'宝玉','男',16,'2000-12-23','上海',98);
                                # 插入失败,因为主键列没有指定值,默认是null值,则不符合主键的要求
                                insert into student(name,gender) values ('黛玉','女');
                                
                              • 删除主键

                                # 删除主键,但是还剩下一个非空约束
                                alter table student drop primary key;
                                #再删除非空约束,这样主键的所有影响全部消除
                                ALTER TABLE student MODIFY sid INT NULL;
                                

                                自增约束

                                • 概念

                                  1、在 MySQL 中,当主键定义为自增长后,这个主键的值就不再需要用户输入数据了,而由数据库系统根据定义自动赋值。每增加一条记录,主键就会自动加1
                                  2、自动增长必须要加在主键的后边,加了自动增长之后,该列的值可以自己在每次添加数据时加1
                                  3、自动增长的列默认是1开始增长,每次加1
                                  4、主键列必须是数字列
                                  5、自动增长的关键字:auto_increment
                                  
                                • 代码

                                  #------------------DML操作-自动增长-----------------------
                                  # 自动增长必须要加在主键的后边,加了自动增长之后,该列的值可以自己在每次添加数据时加1
                                  # 自动增长的列默认是1开始增长,每次加1
                                  # 主键列必须是数字列
                                  drop table if exists student;
                                  create table  if not exists student(
                                      sid int primary key auto_increment,  # 给主键添加自增长约束auto_increment
                                      name varchar(20) ,
                                      gender varchar(2) ,
                                      age int ,
                                      birth date ,
                                      address varchar(50) ,
                                      score decimal(10,2)
                                  );
                                  # 你可以执行以下命令多次,发现主键会自增
                                  insert into student values (null,'宝玉','男',16,'2000-12-23','上海',98);
                                  # 删除所有数据,主键的历史记录不会被清空,下一次添加依然在之前最大的主键值之上加1
                                  delete  from student;
                                  # 你可以执行以下命令多次,发现主键会在最大值之上加1
                                  insert into student values (null,'宝玉','男',16,'2000-12-23','上海',98);
                                  # 如果你想让主键重新回到1开始自增,则可以使用truncate命令(先删除表,再建表)
                                  truncate table student;
                                  # 你会发现,主键又从1开始增长
                                  insert into student values (null,'宝玉','男',16,'2000-12-23','上海',98);
                                  # 我们也可以设置主键从某个值开始增长
                                  drop table if exists student;
                                  create table  if not exists student(
                                      sid int primary key auto_increment, # 给主键添加自增长约束auto_increment
                                      name varchar(20) ,
                                      gender varchar(2) ,
                                      age int ,
                                      birth date ,
                                      address varchar(50) ,
                                      score decimal(10,2)
                                  )auto_increment = 100; # 我们也可以设置主键从100开始增长
                                  # 插入以下数据,发现主键从100开始,然后依次加1
                                  insert into student values (null,'宝玉','男',16,'2000-12-23','上海',98);
                                  

                                  其他约束

                                  create table  if not exists student(
                                      sid int primary key auto_increment,
                                      name varchar(20) not null,  # 非空约束,该列的值不能为空
                                      gender varchar(2) unique ,  # 唯一约束,该列的值必须唯一
                                      age int ,
                                      birth date ,
                                      address varchar(50) default '北京',  # 默认值约束,该列如果没有给值,则模式是北京
                                      score decimal(10,2)
                                  );
                                  

                                  ,

                                  score decimal(10,2)

                                  )auto_increment = 100; # 我们也可以设置主键从100开始增长

                                  插入以下数据,发现主键从100开始,然后依次加1

                                  insert into student values (null,‘宝玉’,‘男’,16,‘2000-12-23’,‘上海’,98);

                                  ### 其他约束
                                  ```sql
                                  create table  if not exists student(
                                    sid int primary key auto_increment,
                                    name varchar(20) not null,  # 非空约束,该列的值不能为空
                                    gender varchar(2) unique ,  # 唯一约束,该列的值必须唯一
                                    age int ,
                                    birth date ,
                                    address varchar(50) default '北京',  # 默认值约束,该列如果没有给值,则模式是北京
                                    score decimal(10,2)
                                  );
                                  

转载请注明来自码农世界,本文标题:《MySQL笔记第一天(从小白到入门)》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,61人围观)参与讨论

还没有评论,来说两句吧...

Top