MySQL凝练 一

编程入门 行业动态 更新时间:2024-10-23 21:37:03

MySQL<a href=https://www.elefans.com/category/jswz/34/1748721.html style=凝练 一"/>

MySQL凝练 一

一、数据库介绍

1、为什么使用数据库
    计算机的资源有限,因此不可能把数据一直存储在内存中,而且一旦掉电,内存中的数据就会不存在,我们需要使内存中的数据存储到文件中,方便下次的编译、拷贝,但随着程序越来越复杂,数据也就会越来越庞大,管理这些数据就会成为编程中最难、最重要的问题
        为什么不再使用文件存储?
        1、使用文件保存不安全,可能会被误删除,也可能被覆盖;而数据库的访问是需要用户名、密码,相应的权限及命令
        2、文件读取数据并解析数据需要大量的重复代码,这种操作效率很低;从数据库中查阅数据只需要提供条件即可
        3、文件中删除一条记录异常麻烦,而且不同的程序对于文件的操作不同,接口也不相似,因此访问文件的代码不能被复用
        对于这个问题就有人提出一个设想,统一文件的访问接口和访问方法,对文件进行统一管理,再增强对于数据管理读取的优化操作,使对数据的管理,使用方便又快捷——数据库
    2、什么是数据库
    数据库,顾名思义就是数据的仓库(电子文件柜),而对数据进行增加、删除、修改、查询等操作由数据库管理系统(DBMS)进行,对于数据库进行设计、维护、管理的人员叫DBA
    3、数据库的类型
    层次型数据库:数据的存储类似一棵树,以上下层级关系来组织数据
    网状型数据库:数据的存储类似一幅图,各个数据节点和其它节点都连接关系
    关系型数据库:关系模型就是一张二维表,任何数据都可以通过行号和列确定,容易理解、使用方便。
    4、目前主流的关系型数据库
    商用的:Oracle 、SQL Server 、DB2
    开源的:MySQL 
    桌面的:Access
    嵌入式的:SQLite,适合于手机、桌面程序

二、SQL语言介绍

1、什么是SQL
    SQL是结构化查询语言的缩写,用来操作数据库,主要对数据进行增、删、改、查,高级操作是对数据库进行管理、维护
    虽然SQL已经被ANSI组织定义为标准,但不幸的是每个数据库对标准的支持都不太一致,大多数的数据库都对SQL进行了扩展
    理论上SQL可以操作所有的数据库,但如果使用了某个数据库的扩展语句,换一个数据库后就不能再执行了
    但是SQL的核心功能绝大多数数据库都是支持的
    
    注意:SQL语言不区别大小写

2、SQL语言的分类
    数据定义语言:用于建立、修改、删除数据库对象
        CREATE 用于创建表或其它对象结构,类似C/C++设计结构体
        ALTER 用于修改表或其它对象结构
        DROP 用于删除表或其它对象
        TRUNCATE 用于删除表中的数据,保留表结构
        
    数据操作语言:用于改变表中的数据
        INSERT 将数据插入到表中
        UPDATE 修改表中已经存在的数据
        DELETE 删除表中的数据
        表中的数据改变后需要执行事务控制语句,才能使改变应用到数据库中

    事务控制语言:用来维护表数据的一致性
        COMMIT 提交,确认已经进行修改的数据
        ROLLBACK 回滚,消除已经进行修改的数据改变
        SAVEPOINT 保存点,用于回滚到指定的保存点

    数据控制语言:用于执行权限的授予和回收操作
        GRANT 用于给用户或角色授予权限
        REVOKE 用于回收用户或角色的权限
        
    数据查询语言:用于查询数据
        SELECT

三、如何访问数据库

1、远程登录

    ubuntu开启telnet服务
    sudo apt-get install openbsd-inetd
    sudo apt-get install telnetd
    sudo /etc/init.d/openbsd-inetd restart
    sudo netstat -a | grep telnet 检查是否安装成功

    telnet 192.168.0.xxx   在Windows下测试 
    输入用户名
    输入密码
    mysql -utest -p123456
    

    ubuntu下开启ssh
    1.1、查看是否安装,使用命令:sudo ps -e |grep ssh

    1.2、如果安装了的是会有sshd服务的
          先更新资源列表,使用命令:sudo apt-get update
          安装openssh-server,使用命令:sudo apt-get install openssh-server
          继续输入sudo ps -e |grep ssh   查看是否安装成功

          启动ssh命令:service sshd start
          停止ssh命令:service sshd stop
    
      1.3、ssh xxxx@192.168.0.xxx     在windows测试
          输入密码
          mysql -utest -p123456

四、SQL中的数据类型

   MySQL    |    Oracle
    N/A     |    Byte                    单字节数据,布尔类型
    int    |    Number                  整数
    float    |    NUmber              浮点型
    char    |    char                    定长字符串
    varchar    |    varchar2        变长字符串
    date    |     date                   日期
    
    char(n) 表示字符串长度    一次申请10个  
    "123"
    char(10)   12300 00000  依然存储10个字符
    适合存储字符串长度波动不大的字符串
    优点:速度快,缺点:浪费空间

    varchar(n) 表示字符串长度     用多少申请多少
    varchar(10)  数据:"123" ,依然存储4个字符
    适合存储字符串长度不确定,波动比较大的字符串
    优点:   会根据字符串的长度进行存储,节约存储空间
    缺点:与char相比,速度慢

五、数据定义语言

 1、创建表
    CREATE TABLE 表名(字段名 字段类型,。。。);

    CREATE TABLE Student(
    name char(20),
    sex char(1) ,
    age int,
    id char(8));

    --CREATE TABLE Student19072(name char(20),sex char(1),age int,id char(8)); 

    查询表结构:DESC 表名;
    查看数据库所有表:show tables;
    
2、修改表
        1、修改表名  
            RENAME TABLE 旧表名 TO 新表名;
            RENAME TABLE student TO Teacher; 

        2、增加列
            ALTER TABLE 表名 ADD(字段名 字段类型);
            ALTER TABLE Teacher ADD(id char(6));
            注意:只能增加到表的末尾,不能插入到表的中间

        3、删除列
            ALTER TABLE 表名 DROP 字段名;
            ALTER TABLE Teacher DROP sex;

        4、修改列
            ALTER TABLE 表名 MODIFY 字段名 新类型;
            ALTER TABLE Teacher MODIFY id char(8);
            
    3、删除表
        删除表数据,保留表结构
        TRUNCATE 表名;
        
        删除表,数据和结构都不存在
        DROP TABLE 表名;

六、数据操作语言

    1、插入数据
    INSERT INTO 表名 (字段名,。。。)VALUES(数据);
    INSERT INTO Student (name,sex,age,id)VALUES("hehehehehehe",'m',18,19070001);

    2、修改表数据
    UPDATE 表名 SET 字段名=数据,。。。 where 条件
    UPDATE Student SET sex=‘w',name='hehe' where not id=19070001;
    UPDATE Student SET age=17 where  id=19070001 or   id=19070002;  满足一个条件
    
    3、删除表数据
    DELETE from 表名 where 条件;
    DELETE from Student where id=19070001;
    

七、事务控制语言

注意:数据定义语言立即有效,不能进行事务控制,只有数据操作语言才能进行事务控制
    1、commit 提交
    在Oracle数据库,一个用户向表中插入数据(他自己能够查询到),其它用户并不能立即查询到,只有执行了commit命令后其它用户才能查询到。
    INSERT INTO Student(name,sex,age,id) VALUES ('xixi','w',19,19070002);
    COMMIT;

    在MySQL数据库中,默认设置的 autocommit 一个用户插入的数据其它用户能够立即看到

    show variables like 'autocommit';
    autocommit | ON/OFF
    
    set session autocommit=0;--关闭当前连接的自动提交
    set global autocommit =0 ;-- 关闭所有连接的自动提交,需要root权限

    set session autocommit=1;--打开当前连接的自动提交
    set global autocommit =1 ;-- 打开所有连接的自动提交,需要root权限

    2、回滚
    当使用数据操作语言对数据进行更改后,如果没有进行 commit,那么就可以撤销(反悔),使用rollback 命令,可以把数据还原到数据更改前
    3、保存点
    如果向表中插入了四条记录,此时如果直接rollback,则四条记录会消失,如果只想保留一条,两条或三条,需要在每插入一个记录后设置个保存点,使用 rollback to savepoint 保存点名字; 可以回到任意一个记录后。
 

更多推荐

MySQL凝练 一

本文发布于:2024-02-06 10:43:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1748410.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:凝练   MySQL

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!