• MYSQL------从概述到DQL


    数据库(数据管理,数据存储的仓库)
    数据库管理系统(操纵和管理数据库的大型软件)
    SQL是操作关系型的编程语言,是一套标准
    MySQL下载安装完成以后,可以进行启动和停止操作,对于启动和停止,有两个方法1.在控制台直接输入services.msc在里面找到MySQL进行停止和启动。2.直接在控制台中输入net start mysql80启动数据库,输入net stop mysql80停止。
    Sql语句也会有分类,DDL语句:主要用来定义数据库对象的,像数据库,表,字段。
    DML语句:数据操作语言,用来完成数据库表中的增删改的操作
    DQL语句:数据查询语言,用来查数据库中表的记录
    DCL语句:数据控制语言,用来创建数据库用户"用户!!!!!",控制数据库的访问权限。
    关系型数据库:建立在关系型模型基础上,有多张相互连接的二维表组成的数据库(RDBMS)。
    接下来,我们学习MySQL的停用语法与分类
    1.DDL语句,数据定义语言,用来定义数据库对象(数据库,表,字段)
    2.DML语句数据操作语言,用来对数据库中的数据进行增删改。
    3.DQL语句,数据查询语句,用来查询数据库中的表的记录。
    4.DCL语句,数据控制语言,用来创建数据库用户,控制数据库的访问权限
    DDL语句是用来定义字段,表的语句。
    1.查询所有数据库:SHOW DATABASES;
    2.查询当前数据库:SELECT DATABASE();
    3.创建 CREATE DATABASE[IF NOT EXISTS]数据库名[DEFAULT CHARSET字符集][COLLATE排序规
    注意:[IF NOT EXISTS]的作用是,如果这个数据库不存在,就创建这么一个数据库,如果存在,则不进行任何操作。
    4.删除:DROP DATABASE[IF EXISTS]数据库名;
    5.使用:USE 数据库名;
    那么,如何通过DDL语句来完成对数据库中表结构的操作呢?
    有如下语法:
    SHOW TABLES;查询当前数据库的所有表。
    DESC表名;查询表结构。
    SHOW CREATE TABLE 表名;查询指定表的建表语句。
    当然,以上的语法必须先进入到一个具体的数据库才可以。也就是必须先使用一个数据库才可以。
    当然了,也可以创建一个表结构使用CREATE TABLE语法可以创建一个表结构。我编写了一个表,语法如下: create table user(
    -> id int comment ‘编号’
    -> )comment ‘用户表’;
    MySQL中的数据类型有很多,主要分为三类:数值类型,字符串类型,日期时间类型。
    首先来看看数值类型
    1.TINYINT 大小:1byte
    2.SMALLINT 大小:2bytes(类型有点像java语言中的short)
    3.MENDIUMINT 大小:3bytes
    4.int 大小:4bytes
    5.BIGINT 大小:8bytes
    以上五种都是整型数值。
    1.FLOAT 大小:4byte
    2.DOUBLE 大小:8byte
    3.DECTMAL
    以上是浮点型的数值。
    数值的存储范围会因为有符号和无符号而发生改变,有符号就是带负数的,例如TINYINT是从-128到127这是有符号的,如果是无符号的,就是从0到255我们在写代码的时候,要根据实际情况来决定是使用有符号的还是使用无符号的
    如果使用无符号的,需要在数据类型后加上UNSIGNED例如:age TINYAGE UNSIGEND

    那么接下来来说一下字符串类型的数值
    1.CHAR 定长字符串 一般要在后面大括号标记字符长度CHAR(10) 相比于VARCHAR性能高一些
    2.VARCHAR 变长字符串 也需要标记字符长度
    3.TINYBLOB 不超过255个字符的二进制数据
    4.TINYTEXT 短本字符串
    5.BLOB 二进制形式的长文本数据
    6.TEXT 长文本数据
    7.MENDIUMBLOB 二进制形式的中等长度文本数据
    8.MENDIUMTXET 中等长度文本数据
    9.LONGBLOB 二进制形式的极大长度的文本数据
    10.LONGTXET 极大文本数据
    二进制的数据包括安装包,音频之类的数据。
    因为CHAR的性能要高一些,所以当字符串长度固定时,使用CHAR,当字符串长度会变化时就要使用VARCHAR。
    接下来,介绍一下日期类型数据
    1.DATE:日期值,几年几月几日
    2.TIME:时间值,几时几分几秒
    3.YEAR:年分值,几几年
    4.DATETIME:混合日期和时间值,几年几月几日几时几分几秒
    5.TIMESTAMP:混合日期和时间值,时间戳
    一般DATE,TIME,DATETIME会使用的多一些。
    记忆起来也比较轻松,date就是日期,year就是年份,time就是某一个时间,datetime就是年月日加时间。
    接下来,我们用所学的数据类型来设计一张表,要包含以下数据:1.编号2.员工工号3.员工姓名4.性别5.年龄6.身份证号7.入职时间(取值年月日就可以了)代码如下:

    create table user(
        -> id int comment '编号',
        -> name varchar(50) cooment '姓名',
        -> gender varchar(1) comment '性别',
        -> age int comment '年龄'
        -> )comment '用户表';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    使用desc emp;代码,得到结果如下:
    ±-----------±-----------------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±-----------±-----------------±-----±----±--------±------+
    | id | int | YES | | NULL | |
    | worknumber | varchar(10) | YES | | NULL | |
    | name | varchar(10) | YES | | NULL | |
    | gender | char(1) | YES | | NULL | |
    | age | tinyint unsigned | YES | | NULL | |
    | idcard | char(18) | YES | | NULL | |
    | entrydate | date | YES | | NULL | |
    ±-----------±-----------------±-----±----±--------±------+
    出现了以上的结果,表结构就已经算是创造完成了。||
    接下来,我们学习一下DDL语句的修改操作
    ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMENT 注释][约束];(添加字段)
    案列,在刚刚写的emp表中增加一个新的字段,名字叫做nickname,VARCAHR(20);
    代码如下:
    alter table emp add nickname varchar(10);
    然后可以再次使用desc语句,查看表格有没有添加成功。

    ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);(修改数据类型)
    代码如下:
    alter table emp modify nickname varchar(30);
    一样的,可以使用desc emp来查看有没有修改成功。

    ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度);(修改字段名和字段类型)
    代码如下:
    alter table emp change nickname nickname2 varchar(40);

    案例:将emp表中的nickname字段修改为username,类型为varchar(30)
    ±-----------±-----------------±-----±----±--------±------+
    | Field | Type | Null | Key | Default | Extra |
    ±-----------±-----------------±-----±----±--------±------+
    | id | int | YES | | NULL | |
    | worknumber | varchar(10) | YES | | NULL | |
    | name | varchar(10) | YES | | NULL | |
    | gender | char(1) | YES | | NULL | |
    | age | tinyint unsigned | YES | | NULL | |
    | idcard | char(18) | YES | | NULL | |
    | entrydate | date | YES | | NULL | |
    | username | varchar(30) | YES | | NULL | |
    ±-----------±-----------------±-----±----±--------±------+
    删除字段怎么删除呢?ALTER TABLE 表名 DROP 字段就可以。
    代码如下:
    alter table emp drop nickname2;
    这样,就可以轻松删除表格中的某一个字段了。

    最后一个修改的操作,修改表名。
    ALTER TABLE 表名 RENAME TO 新表名;
    我将emp表修改表名为emo,请看结果
    alter table emp rename emo;

    ±--------------+
    | Tables_in_zzz |
    ±--------------+
    | emo |
    | user |
    ±--------------+
    删除表应该怎么操作呢?
    drop table [if exit]表名;
    如果想删除表中的数据,可以使用TRUNCATE TABE 表名;
    这两种删除的方法,最后导致的结果都是两个表的数据全都会被删除掉。
    DML语句也叫做数据操作语言,用来对数据库中的表的数据记录进行增删改操作。
    1.添加数据(INSERT)
    2.修改数据(UPDATE)
    3.删除数据(DELET)
    1.添加数据:
    给指定字段添加数据 INSERT INTO 表名(字段名1,字段名2…)VALUES(值1,值2…);
    给全部字段添加数据 INSERT INTO 表名 VALUES(值1,值2,…);
    批量添加数据
    INSERT INTO 表名(字段名1,字段名2,…)VALUES(值1,值2,…),(值1,值2,…),(值1,值2…);
    INERT INTO 表名VALUES(值1,值2…),(值1,值2…),(值1,值2);
    注意:插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
    字符串和日期数据应该包含在引号中。
    插入的数据大小,应该在字段的规定范围内。
    那么,应该如何修改数据呢?
    设计到一个新的关键字UPDATE
    UPDATE 表名 SET 字段名=值1,字段名=值2,…[WHERE条件];
    修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
    实例:
    ID name age
    1,DDD,10
    2,zzz,20
    1.将ID为1的数据的name修改为QQQ。
    套用上述语法update user set name = ‘QQQ’ where id=1;可以将ZZZ更改为QQQ;
    2.修改ID为1的数据,将name修改为小刀,age修改为15。
    继续套用上述语法可得
    update user set name=‘小刀’,age=15 where id =1;
    3.将所有人的年龄改为50;
    update user set age=50;
    这就已经可以了。
    在完成上述操作时,我总是会查看表中的数据,这里有一个查看表中数据的一个语句。
    SELECT*FROM 表名;
    可以直接看到数据。
    删除数据应该怎么做呢?
    有个语句
    DELETE FROM 表名[WHERE 条件]
    DQL语句是用来查询表中的记录的,需要用到关键字select,在正常的业务系统中,查询的频率是最高的
    首先是DQL的关键字:
    1.select后面跟着的是字段列表。
    2.from后面跟着的是表名列表。
    3.where后面跟着的是条件。
    4.grop by是分组字段列表。
    5.having是分组后条件列表。
    6.order by是排序字段列表。
    7.limit是分页参数。
    首先介绍的是DQL语句的基本查询
    1.查询多个字段:select 字段一,字段二,字段三…FROM 表名;
    这里我做一下示范。
    代码如下: select name,gender from user;这样可以查询到表格中某一个字段所记录的数据。
    2.select FROM 表名.
    这个我经常用到,会展示这个表格中每一个字段以及记录的数据,就是展现出表格中的所有的内容。
    同样的我也会做一个示范:
    select * from user;这样就可以将表格中的内容都展现出来。
    在具体的开发工作室中,尽量不要去写
    尽量的写出需要查询的所有字段,这样会方便后续人员查看代码。
    查询也有去重的操作:语法是:select distinct 字段列表 from 表名。可以去除重复的记录。
    使用as关键字可以对所查询的字段取别名,在表头处可以展示所取的别名。
    代码展示:
    select workaddress as’工作地址’ from ts;
    使用as关键字以后先前设置的字段名会被抹去,留下的会是as关键字之后的字符串,也就是别名。
    接下来,介绍条件查询。
    关键字为where
    语法:select 字段列表 from 表名 where 条件列表。

    条件列表后面可以跟上比较运算符,也就是大于小于之类的运算符<>和!=是不等于。
    比较运算符中还有一类为BETWEEN…AND 指在某个范围之内。
    BETWEEN后跟最小值,AND后跟最大值。
    in指在in之后列表的值,多选一。
    LIke,占位符(模糊查询 _匹配单个字符,%匹配任意个字符)
    逻辑运算符(AND或 &&)并且
    (||或OR)或者
    (NOT 或!)非运算
    案例一:查询年龄为18的员工.
    select * from ts where age=19;
    案例二:查询年龄小于20的员工:
    select * from ts where age<20;
    案例三:查询没有身份证号的员工
    select * from ts where idcard is NULL;
    案例四:查询有身份证号的员工:
    select * from ts where idcard is not NULL;
    案例五:
    查询年龄在15到18之间的员工:
    select * from ts where age between 15 and 18;
    案例六:查询年龄在25岁以下,并且性别为女的信息:
    select * from ts where age<25&&gender=‘女’;
    案例七:查询年龄为18或者19的信息:
    select * from ts where age in(18,19);
    in的作用是多选一,只要在括号范围内满足其一的就可以。
    案例八:查询姓名为两个字的员工信息(使用占位符LIKE):
    select * from ts where name like ‘__’;(这里是两个下划线,表示两个字符)
    案例九:查询身份证最后一位=7的员工信息:
    select * from ts where idcard like ‘%7’;
    %的意思就是身份证前面多少位无所谓,只要保证最后一位是7就可以。
    当然l,因为_匹配一个字符,也可以让前面的所有位数都用下划线替代,在最后一位用7,也可以达到相同的效果。

  • 相关阅读:
    git使用ssh拉取代码
    Nginx学习与使用
    这些并发编程知识,一定要学会
    HTML前端
    一个用Python将视频变为表情包的工具
    通过代码解释什么是API,什么是SDK?
    【go-zero】go-zero 脚手架 simple-admin 第二章:通过goctls生成api整个项目
    ML:机器学习工程化之团队十大角色背景、职责、产出物划分之详细攻略
    SpringBoot 如何使用 Micrometer 进行度量和监控
    【Linux】linux中,你不得不爱的命令集(下)
  • 原文地址:https://blog.csdn.net/ZZZ_zzz555/article/details/136662120