zoukankan      html  css  js  c++  java
  • MySQL数据库

    一、数据库概述

      1.数据:描述事物的符号记录称为数据,可以是文字、图片、图像、声音、语言等多种表现形式。

      2表:即文件。用来存放多行内容/多条记录

      3.数据库:即文件夹,用来组织文件/表

      4.数据管理系用(软件):MySQL 、Oracle 、SQlite、Access 、MS MySQL Server等;管理数据库

      5.数据库管理器:即一台计算机;运行数据管理软件。

    SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。SQL语言分为3种类型:
    
    1、DDL语句    数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
    
    2、DML语句    数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
    
    3、DCL语句    数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE

    sql语句

    #1. 操作文件夹(库)
            增:create database db1 charset utf8; # 数据库名
            查:show databases;
            改:alter database db1 charset latin1;  # 只能改字符编码
            删除: drop database db1;
    
    
    #2. 操作文件(表)
        先切换到文件夹下:use db1;
       查看当前所在文件夹:select databese(); 增:create table t1(id int,name char); 查:show tables
           desc t1 改:alter table t1 modify name char(
    3); alter table t1 change name name1 char(2); 删:drop table t1; #3. 操作文件中的内容/记录(记录) 增:insert into t1 values(1,'egon1'),(2,'egon2'),(3,'egon3'); 查:select * from t1;
           select id, name from t1 改:update t1 set name
    ='sb' where id=2; 删:delete from t1 where id=1;

    库操作

      information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等
      performance_schema: MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象
      mysql: 授权库,主要存储系统用户的权限信息
      test: MySQL数据库系统自动创建的测试数据库

    库的相关操作
    
       创建库----------------CREATE DATABASE 数据库名 charset utf8;
    可以由字母、数字、下划线、@、#、$
    区分大小写
    唯一性
    不能使用关键字如 create select
    不能单独使用数字
    最长128位
    
    查看数据库-------------show databases;
             ------------- show create database db1;
             ------------- select database();
    选择数据库---------------------------USE 数据库名
    
    删除数据库---------------------------DROP DATABASE 数据库名;
    
    修改数据库----------------------------alter database db1 charset utf8;                            

    表操作

      表类型就是存储引擎,不同的存储引擎有不同的存储机制。

    查看支持的存储引擎------------show engines;
    指定存储引擎-------------create table t1(id int)engines=innodb;

    表的增删改查

      表相当于文件,每一条数据(记录)都有对应的标题(字段)

    创建表

    create table 表名(
    字段名1 类型[(宽度) 约束条件],
    字段名2 类型[(宽度) 约束条件],
    字段名3 类型[(宽度) 约束条件]
    );
    
    #注意:
    1. 在同一张表中,字段名是不能相同
    2. 宽度和约束条件可选
    3. 字段名和类型是必须的

    查看表结构

    describe t1; #查看表结构,可简写为desc 表名
    show create table t1G; #查看表详细结构,可加G

    删除表

    DROP TABLE 表名;

    修改表结构

    语法:
    1. 修改表名
          ALTER TABLE 表名 
                              RENAME 新表名;
    
    2. 增加字段
          ALTER TABLE 表名
                              ADD 字段名  数据类型 [完整性约束条件…],
                              ADD 字段名  数据类型 [完整性约束条件…];
          ALTER TABLE 表名
                              ADD 字段名  数据类型 [完整性约束条件…]  FIRST;
          ALTER TABLE 表名
                              ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;
    
    3. 删除字段
          ALTER TABLE 表名 
                              DROP 字段名;
    
    4. 修改字段
          ALTER TABLE 表名 
                              MODIFY  字段名 数据类型 [完整性约束条件…];
          ALTER TABLE 表名 
                              CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
          ALTER TABLE 表名 
                              CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];

    复制表

    1.复制表结构+记录 (key不会复制: 主键、外键和索引)
    mysql> create table new_service select * from service;
    
    2.只复制表结构
    mysql>create table select * from service where 1=2; (条件为假的时候)
    
    3.复制某个表的表结构
    mysql> create table t4 like employees;

    数据类型

      存储引擎决定了表得类型,表内的数据有着不同的数据类型,而数据类型是有宽度的不同的数据类型宽度是不一样的,是可以指定的。

    #1. 数字:
        整型:tinyinit  int  bigint
        小数:
            float :在位数比较短的情况下不精准
            double :在位数比较长的情况下不精准
                0.000001230123123123
                存成:0.000001230000
    
            decimal:(如果用小数,则用推荐使用decimal)
                精准
                内部原理是以字符串形式去存
    
    #2. 字符串:
        char(10):简单,浪费空间,存取速度快
            root存成root000000
        varchar:精准,节省空间,存取速度慢
    
        sql优化:创建表时,定长的类型往前放,变长的往后放
                        比如性别           比如地址或描述信息
    
        >255个字符,超了就把文件路径存放到数据库中。
                比如图片,视频等找一个文件服务器,数据库中只存路径或url。
    
    
    #3. 时间类型:
        最常用:datetime
    
    
    #4. 枚举类型与集合类型

      整数类型(tinyint    int     bigint )

      一般用 int 就可以

    int[(m)][unsigned][zerofill]      整数,数据类型用于保存一些范围的整数数值范围

      整形类型的存储宽度是可以不用指定的!!!!   可以指定的显示宽度

      浮点类型(folat/     double /      decimal)

      一般用folat 就行了

    #FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]
    
    # m是数字总个数,d是小数点后个数。m最大值为255,d最大值为30

    日期类型

            YEAR
                YYYY(1901/2155)
    
            DATE
                YYYY-MM-DD(1000-01-01/9999-12-31)
    
            TIME
                HH:MM:SS('-838:59:59'/'838:59:59')
    
            DATETIME
    
                YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59    Y)
    
            TIMESTAMP
    
                YYYYMMDD HHMMSS(1970-01-01 00:00:00/2037 年某时)

    字符类型  char(推荐使用) 和 varchar

    注意:同一个表中尽量只是用一种字符类型

    #注意:char和varchar括号内的参数指的都是字符的长度
    
    #char类型:定长,简单粗暴,浪费空间,存取速度快
        字符长度范围:0-255(一个中文是一个字符,是utf8编码的3个字节)
        存储:
            存储char类型的值时,会往右填充空格来满足长度
            例如:指定长度为10,存>10个字符则报错,存<10个字符则用空格填充直到凑够10个字符存储
    
        检索:
            在检索或者说查询时,查出的结果会自动删除尾部的空格,
         除非我们打开pad_char_to_full_length SQL模式(SET sql_mode
    = 'PAD_CHAR_TO_FULL_LENGTH';) #varchar类型:变长,精准,节省空间,存取速度慢 字符长度范围:0-65535(如果大于21845会提示用其他类型 。mysql行最大限制为65535字节,字符编码为utf-8:https://dev.mysql.com/doc/refman/5.7/en/column-count-limit.html) 存储: varchar类型存储数据的真实内容,不会用空格填充,如果'ab ',尾部的空格也会被存起来 强调:varchar类型会在真实数据前加1-2Bytes的前缀,该前缀用来表示真实数据的bytes字节数(1-2Bytes最大表示65535个数字,正好符合mysql对row的最大字节限制,即已经足够使用) 如果真实的数据<255bytes则需要1Bytes的前缀(1Bytes=8bit 2**8最大表示的数字为255) 如果真实的数据>255bytes则需要2Bytes的前缀(2Bytes=16bit 2**16最大表示的数字为65535) 检索: 尾部有空格会保存下来,在检索或者说查询时,也会正常显示包含空格在内的内容

    length:查看字节数
    char_length:查看字符数

    枚举类型和集合类型

        enum 单选 只能在给定的范围内选一个值,如性别 sex 男male/女female

        set 多选 在给定的范围内可以选择一个或一个以上的值(爱好1,爱好2,爱好3...)

    约束条件

     https://blog.csdn.net/weixin_31889665/article/details/113552281?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162031298816780265473912%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162031298816780265473912&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-113552281.first_rank_v2_pc_rank_v29&utm_term=mysql%E7%BA%A6%E6%9D%9F%E6%9D%A1%E4%BB%B6

  • 相关阅读:
    DataSingleton单例
    iOS平台XML解析类库对比和安装说明
    ASIHTTPRequest类库简介和使用说明
    IOS开发之格式化日期时间
    iOS多线程编程之NSThread的使用
    Django的Xadmin后台集成富文本Ueditor
    Django DEBUG=False后静态文件加载失败
    Python多进程
    linux平台虚拟环境依赖安装
    SQLite基础使用
  • 原文地址:https://www.cnblogs.com/Holmes-98/p/14702573.html
Copyright © 2011-2022 走看看