zoukankan      html  css  js  c++  java
  • MySQL

    一、MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一

    • 数据库: 数据库是一些关联表的集合相当于文件夹。
    • 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格相当于文件。
    • 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
    • 数据行:相当于文件中一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
    • 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
    • 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
    • 外键:外键用于关联两个表,做約束。
    • 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
    • 索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
    • 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。

    二、MySQL一些命令:

      查看當前MySQL都有哪些数据,根目录都有哪些文件夹(数据库):show databases:

      创建数据库:create database 数据库名:

      选中数据库:use 数据库名:

      查看当前数据库有那些表:show tables:

      创建表:create table 表名(nid int,name varchar(20),pwd varchar(64)):

      插入数据:insert into 表名(nid,name,pwd) values(1,'ccc','111');insert into 表 (列名,列名...) values (值,值,值...),(值,值,值...);insert into 表 (列名,列名...) select (列名,列名...) from

      创建用户 :create user '用户名'@'IP地址' identified by '密码';
       删除用户:drop user '用户名'@'IP地址';
       修改用户:rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';;
       修改密码:set password for '用户名'@'IP地址' = Password('新密码'),密碼必須加引号,其它推荐使用

       grant  权限 on 数据库.表 to  '用户'@'IP地址'      -- 授权

      删除数据库:drop database 数据库名

      清空表--不会回到原点:delete from 表名;delete from where id=1 and name'alex'

      清空表--速度快、自增回到原点:trancate table 表名  

      更新数据表: UPDATE runoob_tbl SET runoob_title='学习 C++' WHERE runoob_id=3;

      刪除某一行:DELETE FROM runoob_tbl WHERE runoob_id=3;

      查看表中的数据:select *from 表名:select * from 表;select * from where id > 1;select nid,name,gender as gg from where id > 1

      表详细数据:desc 表名

      设定主键:列名 数据类型 auto_increment(自增) primary key

      本地创建表:CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

      外键:foreign key

      添加列:alter table 表名 add 列名 类型

      删除列:alter table 表名 drop column 列名

      修改列: alter table 表名 modify column 列名 类型;  -- 类型

          alter table 表名 change 原列名 新列名 类型; -- 列名,类型

      添加主键:alter table 表名 add primary key(列名);

      删除主键:alter table 表名 drop primary key;

           alter table 表名  modify  列名 int, drop primary key;

      添加外键:alter table 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);

      删除外键:alter table 表名 drop foreign key 外键名称

      修改默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;

      删除默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

    a、条件
        select * from 表 where id > 1 and name != 'alex' and num = 12;
     
        select * from 表 where id between 5 and 16;
     
        select * from 表 where id in (11,22,33)
        select * from 表 where id not in (11,22,33)
        select * from 表 where id in (select nid from 表)
     
    b、通配符
        select * from 表 where name like 'ale%'  - ale开头的所有(多个字符串)
        select * from 表 where name like 'ale_'  - ale开头的所有(一个字符)
     
    c、限制
        select * from 表 limit 5;            - 前5行
        select * from 表 limit 4,5;          - 从第4行开始的5行
        select * from 表 limit 5 offset 4    - 从第4行开始的5行
     
    d、排序
        select * from 表 order by 列 asc              - 根据 “列” 从小到大排列
        select * from 表 order by 列 desc             - 根据 “列” 从大到小排列
        select * from 表 order by 列1 desc,列2 asc    - 根据 “列1” 从大到小排列,如果相同则按列2从小到大排序
     
    e、分组
        select num from 表 group by num
        select num,nid from 表 group by num,nid
        select num,nid from 表  where nid > 10 group by num,nid order nid desc
        select num,nid,count(*),sum(score),max(score),min(score) from 表 group by num,nid
     
        select num from 表 group by num having max(id) > 10
     
        特别的:group by 必须在where之后,order by之前
     
    f、连表
        无对应关系则不显示
        select A.num, A.name, B.name
        from A,B
        Where A.nid = B.nid
     
        无对应关系则不显示
        select A.num, A.name, B.name
        from A inner join B
        on A.nid = B.nid
     
        A表所有显示,如果B中无对应关系,则值为null
        select A.num, A.name, B.name
        from A left join B
        on A.nid = B.nid
     
        B表所有显示,如果B中无对应关系,则值为null
        select A.num, A.name, B.name
        from A right join B
        on A.nid = B.nid
     
    g、组合
        组合,自动处理重合
        select nickname
        from A
        union
        select name
        from B
     
        组合,不处理重合
        select nickname
        from A
        union all
        select name
        from B
    

     三、MySQL数据类型

    数值类型

    MySQL支持所有标准SQL数值数据类型。包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。

    MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

    类型大小范围(有符号)范围(无符号)用途
    TINYINT 1 byte (-128,127) (0,255) 小整数值
    SMALLINT 2 bytes (-32 768,32 767) (0,65 535) 大整数值
    MEDIUMINT 3 bytes (-8 388 608,8 388 607) (0,16 777 215) 大整数值
    INT或INTEGER 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
    BIGINT 8 bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
    FLOAT 4 bytes (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度
    浮点数值,不准确小数值,数值越大越不准确
    DOUBLE 8 bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度
    浮点数值
    DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值、精确的对于精确数值计算使用,因内部是按照字符串存储,银行

     日期和时间类型

    表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。

    类型 大小
    ( bytes)
    范围 格式 用途
    DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
    TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
    YEAR 1 1901/2155 YYYY 年份值
    DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
    TIMESTAMP 4

    1970-01-01 00:00:00/2038

    结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

    YYYYMMDD HHMMSS 混合日期和时间值,时间戳

    字符串类型

    字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。

    类型大小用途
    CHAR 0-255 bytes 定长字符串
    VARCHAR 0-65535 bytes 变长字符串
    TINYBLOB 0-255 bytes 不超过 255 个字符的二进制字符串
    TINYTEXT 0-255 bytes 短文本字符串
    BLOB 0-65 535 bytes 二进制形式的长文本数据
    TEXT 0-65 535 bytes 长文本数据
    MEDIUMBLOB 0-16 777 215 bytes 二进制形式的中等长度文本数据
    MEDIUMTEXT 0-16 777 215 bytes 中等长度文本数据
    LONGBLOB 0-4 294 967 295 bytes 二进制形式的极大文本数据
    LONGTEXT 0-4 294 967 295 bytes 极大文本数据

    枚举ENUM和SET集合数据类型

    类型 占用字节
    最大成员数量
    ENUM 1 or 2, 取决于枚举成员的数量 65535
    SET 1|2|3|4|8,取决于集合成员的数量 6
    <span class='wp_keywordlink_affiliate'><a href="https://www.168seo.cn/tag/mysql" title="View all posts in mysql" target="_blank">mysql</a></span>> create table consumer(
        -> id int,
        -> name varchar(50),
        -> sex enum('male','female','other'),
        -> level enum('vip1','vip2','vip3','vip4'),#在指定范围内,多选一
        -> fav set('play','music','read','study') #在指定范围内,多选多
        -> );
    Query OK, 0 rows affected (0.03 sec)
    
    
    <span class='wp_keywordlink_affiliate'><a href="https://www.168seo.cn/tag/mysql" title="View all posts in mysql" target="_blank">mysql</a></span>> insert into consumer values
        -> (1,'赵云','male','vip2','read,study'),
        -> (2,'赵云2','other','vip4','play');
    Query OK, 2 rows affected (0.00 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    <span class='wp_keywordlink_affiliate'><a href="https://www.168seo.cn/tag/mysql" title="View all posts in mysql" target="_blank">mysql</a></span>> select * from consumer;
    +------+---------+-------+-------+------------+
    | id   | name    | sex   | level | fav        |
    +------+---------+-------+-------+------------+
    |    1 | 赵云    | male  | vip2  | read,study |
    |    2 | 赵云2   | other | vip4  | play       |
    +------+---------+-------+-------+------------+
    rows in set (0.00 sec)
    

      

    无论你选择做什么,追求完美的程度决定你成就的高度。
  • 相关阅读:
    软件安装的list(0918)
    putty配色备份
    曹工谈Spring Boot:Spring boot中怎么进行外部化配置,一不留神摔一跤;一路debug,原来是我太年轻了
    使用Hystrix的插件机制,解决在使用线程隔离时,threadlocal的传递问题
    曹工谈并发:Synchronized升级为重量级锁后,靠什么 API 来阻塞自己
    曹工力荐:调试 jdk 中 rt.jar 包部分的源码(可自由增加注释,修改代码并debug)
    曹工杂谈--只用一个命令,centos系统里装了啥软件,啥时候装的,全都清清楚楚
    曹工说Redis源码(7)-- redis server 的周期执行任务,到底要做些啥
    曹工说Redis源码(6)-- redis server 主循环大体流程解析
    曹工说Redis源码(5)-- redis server 启动过程解析,以及EventLoop每次处理事件前的前置工作解析(下)
  • 原文地址:https://www.cnblogs.com/chiyhua/p/13161863.html
Copyright © 2011-2022 走看看