美文网首页
MySQL总结(一)

MySQL总结(一)

作者: Cinque_Peng | 来源:发表于2017-12-11 13:13 被阅读0次

    此文最后修改于:12/11/2017 3:05:33 PM

    涨姿势

    ①DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等。功能:创建、删除、修改库和表结构。

    ②DML(Data Manipulation Language):数据操作语言,用来定义数据库记录:增、删、改表记录。

    ③DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。

    ④DQL(Data Query Language):数据查询语言,用来查询记录。

    数据类型

    TINYINT:1字节,小整数值。

    SMALLINT:2字节,大整数值。

    MEDIUMINT:3字节,大整数值。

    INT或INTEGER:4字节,整型,大整数值。

    FLOAT:单精度浮点数值。

    DOUBLE(5,2):双精度浮点型数值,参数表示该浮点型数值最多有5位,其中必须有2位小数。

    DECIMAL(M,D):小数值,参数表示该数值最多有M位,其中必须有D位小数。

    CHAR:字符型,固定长度字符串类型:char(255)。你存入一个a字符,虽然a只占一个字符,但是它会自动给你加254个空格凑成255个长度。即数据的长度不足指定长度,它会补足到指定长度。

    VARCHAR:可变长度字符串类型:- varchar(65535),你存入的数据多长它就是多长。它会抽出几个字节来记录数据的长度。

    TEXT(CLOB):mysql独有的数据类型,字符串类型。

    BLOB:字节类型。

    YEAR:年份值,格式为:YYYY

    DATA:日期类型,格式为:yyyy-MM-dd。

    TIME:时间类型,格式为:hh:mm:ss。

    TIMESTAMP:时间戳类型,格式为上面二者的综合。

    DATETIME:混合日期和时间值,格式为:YYYYMMDD HHMMSS.

    基本语法规则

    1.DDL语法(操作数据库及表的结构)

    ----++----对数据库的操作----++----

    1.1 查看所有数据库:

    SHOW DATABASES;
    

    1.2 使用数据库:

    USE tbl;
    

    1.3 创建数据库并指定编码:

    CREATE DATABASE IF NOT EXISTS RUNOOB DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 
    

    1.4 删除数据库:

    DROP DATABASE tbl;
    

    1.5 修改数据库的编码:
    ALTER DATABASE tbl CHARACTER SET UTF-8;

    ----++----对表结构的操作----++----

    1.6 创建表:

    CREATE TABLE IF NOT EXISTS `runoob_tbl`(
       `runoob_id` INT UNSIGNED AUTO_INCREMENT,
       `runoob_title` VARCHAR(100) NOT NULL,
       `runoob_author` VARCHAR(40) NOT NULL,
       `submission_date` DATE,
       PRIMARY KEY ( `runoob_id` )
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    #①特别注意,创建表时候    表名与字段名都使用反引号。也试试英文状态下的“ ~ ”符号
    #②反引号是为了区分 MySql 关键字与普通字符而引入的符号。
    

    PS:如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
    AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
    PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
    ENGINE 设置存储引擎,CHARSET 设置编码。

    1.7 查看当前数据库中所有表:

    SHOW TABLES;
    

    1.8 查看表结构:

    DESC runoob_tbl;
    

    1,9 删除表:

    DROP runoob_tbl;
    

    修改表:修改表有5个操作,但前缀都是一样的:

    ALTER TABLE 表名

    1.10 修改表之添加列:
    #添加一个名为com的一列在description列之后
    ALTER TABLE runoob_tbl
    ADD COLUMN com DECIMAL(2,1) NULL
    AFTER description;

    1.11 修改表之修改列类型(modify):

    #修改com列的类型为int(11)
    ALTER TABLE runoob_tbl MODIFY com int(11);
    

    1.12 修改表之 列名称 列类型 一起修改(change):

    ALTER TABLE runoob_tbl CHANGE com com1 char(1);
    

    1.13 修改表之删除列:

    ALTER TABLE runoob_tbl DROP com1;
    

    1.14 修改表之修改表名:

    ALTER TABLE runoob_tbl RENAME TO PSJhhh;
    

    部分截图:


    初始表结构
    向表中添加列
    改列类型
    其他修改

    2.DDL语法(数据操作)

    2.1 插入数据(记录)

    INSERT INTO runoob_tbl 
    -> (id, name)
    -> VALUES
    -> ('psj','peng');
    
    插入数据并读取表数据

    2.2 修改数据

    update runoob_tbl set name=2 where id=55;
    
    where表示条件

    2.3 删除整行

    delete from runoob_tbl where id = 55;
    delete from runoob_tbl #清空表
    
    删除数值

    3.DCL语法(数据控制)

    3.1创建用户

    create user 用户名@IP地址 identified by ‘密码’;
    #只能指定ip地址上登录
    create user 用户名@‘%’ identified by ‘密码’;
    #可以在任意ip地址上登录
    

    3.2 用户授权

    语法:grant 权限1,…,权限n on 数据库.* to 用户名@IP地址;
    其中权限1、2、n可以直接用all关键字代替。
    权限例如:create,alter,drop,insert,update,delete,select。
    

    3.3 撤销授权

    语法:revoke 权限1,…,权限n on 数据库.* from 用户名@ ip地址;撤销指定用户在指定数据库上的指定权限。撤销例如:revoke create,delete on mydb1.* form user@localhost;表示的意思是撤消user用户在数据库mydb1伤的create、alter权限。
    

    3.4 查看权限

    查看指定用户的权限:show grants for 用户名@ip地址;
    

    4.DQL语法(数据查询)

    4.1 读取表字段(列)的数据(记录)

    select * from runoob_tbl
    select id from runoob_tbl
    select distinct id from runoob_tbl #相同字段只显示一次
    
    查询
    #数字型字段可运算
    select id from runoob_tbl
    
    数字型字段可运算

    4.2条件控制

    1.条件查询。在后面添加where指定条件:select * from 表名 where 列名=指定值;

    2.模糊查询:当你想查询所有姓张的记录。用到关键字like。eg:select * from 表名 where 列名 like ‘张_’;(代表匹配任意一个字符,%代表匹配0~n个任意字符)。

    4.3排序(所谓升序和降序都是从上往下排列)

    1.升序:select * form 表名 order by 列名 (ASC );
    ()里面的内容为缺省值;
    2.降序:select * from 表名 order by 列名 DESC;

    3.使用多列作为排序条件: 当第一列排序条件相同时,根据第二列排序条件排序(当第二列依旧相同时可视情况根据第三例条件排序)。eg:select * from 表名 order by 列名1 ASC, 列名2 DESC;
    意思是当列名1的值相同时按照列名2的值降序排。

    4.4聚合函数

    1.count:select count(列名) from 表名;
    ,纪录有效行数。

    2.max:select count(列名) from 表名;
    ,列中最大值。

    3.min:select sum(列名) from 表名;
    ,列中最小值。

    4.sum:select sum(列名) from 表名;
    ,求列的总值,null 和字符串默认为0。

    5.avg:select avg(列名) from 表名;
    ,一列的平均值。

    4.5 分组查询

    分组查询的信息都是组的信息,不能查到个人的信息,其中查询组的信息是通过聚合函数得到的。

    语法:select 分组列名,聚合函数1,聚合函数2 from 表名 group by 该分组列名;

    其中分组列名需要的条件是该列名中有重复的信息。
    查询的结果只能为:作为分组条件的列和聚合函数;查处的信息都是组的信息。

    分组查询前,还可以通过关键字where先把满足条件的人分出来,再分组。语法为:select 分组列,聚合函数 from 表名 where 条件 group by 分组列;

    分组查询后,也可以通过关键字having把组信息中满足条件的组再细分出来。语法为:select 分组列,聚合函数 from 表名 where 条件 group by 分组列 having 聚合函数或列名(条件);

    4.6 LIMIT子句(mysql中独有的语法)

    LIMIT用来限定查询结果的起始行,以及总行数。

    例如:select * from 表名 limit 4,3;

    表示起始行为第5行,一共查询3行记录。

    4.7 优先级顺序

    select>from>where>group by>having>order by

    相关文章

      网友评论

          本文标题:MySQL总结(一)

          本文链接:https://www.haomeiwen.com/subject/eajiixtx.html