Mysql 入门

作者: chcvn | 来源:发表于2017-11-20 22:40 被阅读23次

    认识mysql数据库

    原地址: http://www.1314sl.com

    数据库基础:
    1.什么是数据库?
         数据库:database 存储数据的仓库
    
            数据库:高效的存储和处理数据的介质
    
    
        2.数据库的分类
    分为两种:  关系型数据库(SQL)
                非关系型数据库(NOSQL:not only SQL)
            
    
    3.不同的数据库阵营中的产品?
    关系型的数据库 
        大型:oracle DB2
        中型:SQL-SERVER,MYsql
        小型:access 等
    非关系型数据库:memcached,mongodb,redis
    
    4.区别?
        关系型数据库:安全(保存磁盘,基本不可能丢失)容易理解
        非关系型数据库:效率高,不安全(断电丢失)
    
    
        d
    ----关系型数据库---------
    1.什么是关系型数据库?
        是一种建立在关系模型(数据模型)上的数据库。
        模型包含三个方面
            数据结构: 二维表(列和行)
            操作指令:所有sql语句
            完整性约束:表(内数据约束),表与表之间约束(外键)
    2.关系型数据库:维护实体内部,实体与实体之间的联系
    
    如果表对应的某个字段没有值,但是系统还是会分配空间!
    
    
    ------------关键字说明-------------------
    数据库:database
    数据库系统:DBS(Database system)是一种虚拟系统
    DBMS:database management system 数据库管理系统
    DBA:database administrator,数据库管理员
    
    行/记录:row/record。
    列/字段:column/field.
    
    
    ------------------SQL 关系型数据库---------
    SQL:structured query language 结构化查询语言
    
    SQL分为三个部分
        DDL:datadefinition language ,数据定义语言。
        DML:数据操作语言;其中DML又分了一个DQL 数据查询语言
        DCL:数据控制语言。主要负责权限管理(用户)grant,revoke
        
        SQL 是一种约束,但不强制(类似W3C)。
        
    
    ------------Mysql数据库-------------
    Mysql数据库是一种c/s结构的软件: 客户端/服务器。
        (服务器一直运行,客户端在需要使用的时候运行)
      
        交换方式:
            1.客户单链接认证:链接服务器,认证身份:mysql.exe -hpup
                mysql.exe -hlocalhost -p3306 -uroot -p
            2.发送SQL指令
            3.服务器接收SQL指令:处理SQL指令, 返回操作结果
            4.客户端接收结果:显示结果
                show databases--查看所有数据库
            5.断开链接(释放资源,服务器并发限制)
                exit/quit/\q  退出
        
    ------------------Mysql服务器对象--------------------
    
    将mysql服务器内部对象分成了四层:系统(DBMS)->数据库(DB)->数据表(Tabel)->字段()
    
    --------------SQL的基本操作--------------
        基本操作:CRUD
            SQL的基本操作对象进行分类:
            库操作,表操作,数据操作
        
        
        基本语法
        创建库 create 
        Create database 数据库名字[库选项];
            库选项:用来约束数据库,分为2个选择项
                字符集设定:charset/character set 具体字符集(存储编码格式)常用的字符集:GBK和UTF8
                校对集设定:colate 具体校对集
            
            
    --------- 创建数据库
            create database only charset utf8
    
            -- 创建关键字数据库
            create database database  charset utf8 
    
            --(SQL语句保存:只会告诉用户的大概位置,不会说明保存愿意(静默模式))
    
            --创建中文数据库
            create database 中国  charset utf8;
    
            -- 解决方案:告诉服务器当前中文的字符集是什么 中文:GBK
    
            set names gbk;
            create database 中国 charset utf8;
    
            当创建数据库SQL语句执行之后,发送了什么?
            destiny电脑 保存路径:C:\ProgramData\MySQL\MySQL Server 5.6\data
            1. 在数据库系统中,增加了对应的数据库信息
            2. 会在保存数据的文件夹下:data目录,创建一个对应的数据库名称的文件夹
            3. 每个数据库下都有一个opt文件:保存了库选项
                    --校对集依赖字符集
    --------查看数据库
            1.查看所有数据库:show databases;
            2.查看指定的数据库:模糊查询
                show databases like 'pattern';
                %:表示匹配多个字符
                _:表示匹配单个字符
            3.查看数据库的创建语句:
                show create database only;
                show create database ‘database‘;
                只要需要用到关键字都得用反引号
                -- 数据库在执行SQL语言之前会优化SQl;
    
    ----------更新数据库
            数据库名字不可以修改
            
            数据库的修改选项:字符集合校对集(校对集依赖字符集)
            
            alter database 数据库名称[库选项]
            Charset/charcter set[=]字符集
            collate 校对集
            
            修改数据库    名    字符集
            alter database only charset gbk; 
            
    -----删除数据库
            所有的操作中:删除是最简单
            drop database 数据库名字
        1.删除数据库之后
            在数据库内部看不到对应的数据库
        2.在对应的数据库存储的文件夹内:数据库名字对应的文件夹也被删除
            (级联删除:里面的数据表全部删除)
        
        
        注意:数据库的删除,不能乱删除。要备份再删除! 
        
        
    --------表操作
            表与字段是密不看可分的。
            
            ----新增数据表
            
            create tabel[if not exists]表名(
             字段名字 数据类型,
             字段名字 数据类型--最后一行不需要逗号
            )[表选项]
                
                if not exists:如果表名不存在,那么就创建,否则不执行创建代码:检查功能
                表选项:控制表的表现
                    字符集:charset/character set 具体字符集;
                    校对集:collate 具体校对集;
                    存储引擎:engine 具体的存储引擎(innodb 和 myisam)
                    
                然后一个表的设计都必须设定数据库
        创建表1.       
            careat tabe if not exists (数据库名.)student(
                name varchar(10),
                gender varchar(10),
                number varchar(10),
                age int
            )charset utf8;
        
        创建表2.
            进入数据库环境 use 数据库名字;
                先进入数据库,然后创建表
                use 表名
                use only
                create table class(
                    name varchar(10),
                    room varchar(10),
                    sex varchar(2)
                    
                )charset utf8;
                
            创建表的SQL指令之后发生了什么(多了文件在对应数据库的文件夹下面)
                1.指定数据库下已经存在对应的表
                2.在数据库对应的文件夹下,会产生对应表的结构文件(跟存储引擎有关系)
                
                
    ------------查看数据表-------------------------------------      
            数据库能查看的分数,表都可以查看
            
        1.查看所有表
            show tables;
        
        2.查看部分表 :
            模糊匹配 show tables like '%关键字'
        
        3.查看表创建语句
            show create table student\g  ---\g 等价于 分号;
            show create table student\G  ---\纵向
            
        4.查看表结构:查看表中的字段信息
                Desc / describe /show columns from 表名
                
                -- 查看表结构
                desc class;
                describe class;
                show columns from class;
    
                Type 列表类型
                                字段类型: 数据类型
                Field 字段名字
                
                NULL 列属性 是否允许为空
                
                Key  索引类型(PRI主键)UNI唯一等
                
                Default  列属性  大部分字段默认为NUll
                
                Extra   列属性:扩充(额外的)
    
    
    
    ---------------修改数据表-----------------
            表本身存在,还包含字段;
                    修改本身和字段
            
            --修改表本身
            
            表本身可以修改:表名和表选项
            
            修改表名:rename table 老表名 to 新表名
            
            --修改表选项:字符集,校对集合存储引擎
            Alter table 表名 charset =GBK;
            
            --新增字段
            Alter table 表名 add[column]字段名  数据类型[列属性][位置];
                位置:字段名可以存放表中的任意位置
                First:第一个位置
                after: 在哪个字段之后:after 字段名 ;默认是在最后一个字段之后
            
                alter table my_student
                add column id int
                first;
            
            --修改字段:通常是修改属性还在数据类型
            Alter table 表名 modify 字段名 数据类型【位置】【属性】;
            alter table student 
            modify number char(10) after id; 
        
            --重命名字段
            Alter table 表名 change 旧字段 新字段 数据类型【属性】【位置】;
            
            --删除字段
            alter table 表名 drop 字段名;
            
        ---删除数据表
            drop table 表名1,表名2;--可以一次性删除多张表;
    
    
            
    ----------------数据操作-----------------       
        新增数据表
        1.
            insert into  表名 values (值,值,值),
                                     (值,值,值)
            
        2.
            给部分字段插入数据
            insert into 表名(字段列表)values (值,值),(值列表)
            
        
    ------查看数据
        select * from 表名: [where 条件]
        
        --查看指定字段和条件数据
        select 字段名 from 表名 条件
    
    -------更新数据
        Update 表名 set 字段=值  【where 条件】
    
    --------删除
        delete from 表名 【where 条件】
     
    -------------------中文数据问题----------------------------------------------------------------------
    查看所有字符集
        --基本上:服务器是万能,什么字符集都支持
        show character set;
        
        
        -- 查看服务器默认的处理的字符集
        show variables like 'character_set%';   
    
        --修改服务器认为的客户端数据的字符集为:GBK
        set character_set_client =gbk;
    
        --修改服务器给定数据的字符集为GBK
        set character_set_results=GBK;
    
        快捷方式: set names 字符集
        set names gbk;
    
    -------------------------------校对集问题---------------------
    
        校对集:数据比较的方式
        有三种方式
            _bin:binary,二进制比较,取出二进制位,一位一位的比较,区分大小写
            _cs:  case sensitive 区分大小写
            _ci:  case insensitice 不区分大小写
            
        查看数据库所支持的校对集:show collation;
        
        --- 创建表使用不同的校对集
            create table my_collate_bin(
                name char(1)
            )charset utf8 collate uft8_bin;
            
            create table my_collate_ci(
                name char(1)
            )charset utf8 collate uft8_qeneral_ci;
        
        --排序查找
        select * from  表名_bin order by 字段名;
        select * from  表名_ci order by 字段名:
        
    -----------------Web乱码问题-------------   
        
        动态网页由三个部分构成:
            浏览器、apache 服务器(PHP)、数据库服务器
            都有自己的 字符集(中文)
        
        统一编码(三码合一)
    
    

    原地址: http://www.1314sl.com

    oneNate笔记oneNate笔记

    原地址: http://www.1314sl.com

    相关文章

      网友评论

        本文标题:Mysql 入门

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