Mysql 入门

认识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笔记

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

你可能感兴趣的:(Mysql 入门)