精华内容
下载资源
问答
  • MySQL数据库入门实战精讲
  • 数据库概述数据库入门

    千次阅读 2019-04-20 12:20:15
    数据库概述 数据库入门 数据库概述 存放数据的方式 1.存在内存中 2.保存在普通文件中 3.保存在数据库中 什么是数据库 存储数据的仓库,用户可以对数据库中的数据进行增加,修改,删除及查询操作(sql...

    数据库概述 数据库入门

    数据库概述

    存放数据的方式

    • 1.存在内存中
    • 2.保存在普通文件中
    • 3.保存在数据库中

    什么是数据库

    存储数据的仓库,用户可以对数据库中的数据进行增加,修改,删除及查询操作(sql语言)。

    数据库的优点-

    数据库是按照特定的格式将数据存储在文件中,通过SQL语句可以方便/*-的对大量数据进行增、删、改、查操作,数据库是对大量的信息进行管理的高效的解决方案。-

    数据库管理系统(DBMS)

    数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于创建、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系 统访问数据库中表内的数据

    数据库管理系统、数据库和表的关系

    数据库管理系统可以管理多个数据库,每个数据库中可以有多张数据库表。

    常见数据库

    • MYSQL:开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。
    • Oracle:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
    • DB2:IBM公司的数据库产品,收费的。常应用在银行系统中.
    • SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。
    • SyBase:已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。
    • SQLite: 嵌入式的小型数据库,应用在手机端。

    安装MySql数据库

    卸载: 使用软件管理工具,手动删除 
    
    细节:不止要删除数据库,还要将保存数据的文件给手动删除了,如果不删除无法正常安装新的数据库
    

    启动和关闭mysql

    细节注意:mysql的服务必须是启动状态下才是使用

    • 启动和关闭mysql:
      • 方式1:操作windows服务
      • 方式2:dos命令中操作mysql
        • net start mysql 开启mysql服务
        • net stop mysql 停止mysql服务

    登录和退出mysql数据库

    第一种:

    • mysql -u用户名 -p密码
      例如:mysql -uroot -proot

    第二种

    • mysql -u用户名 -p
    • 密码

    退出

    • exit
    • quit
    • ctrl + c

    sql语句

    简介

    概述

    结构化查询语言(Structured Query Language)简称SQL,SQL语句就是对数据库进行操作的一种语言。
    

    数据库是不认识JAVA语言的,但是我们同样要与数据库交互,这时就需要使用到数据库认识的语言—SQL语言

    作用:

    通过Sql语言可以对数据库管理系统中的数据库,表,表中的数据进行增删改查(crud)。
    

    sql分类和语法

    分类:(面试题)

    1.DDL(Data Definition Language)数据定义语言

     用来操作数据库和表
    

    关键字:create,drop,alter等

    2.DML(Data Manipulation Language)数据操作语言

    用来对数据库中表的数据进行增删改
    

    关键字:insert,delete, update等

    3.DQL(Data Query Language)数据查询语言

    用来对数据库中表的数据进行查询
    

    关键字:select,from,where等

    4.DCL(Data Control Language)数据控制语言(了解)

    用来定义数据库的访问权限和安全级别,及创建用户。
    

    关键字:grant, revoke等

    5.TCL(Transaction Control Language) 事务控制语言

    用于控制数据库的事务操作
    

    关键字: commit,rollback等

    sql语法

    1 SQL语句可以单行或多行书写,以分号结尾
    2 可使用空格和缩进来增强语句的可读性
    3 MySQL数据库的SQL语句不区分大小写
    4 可以使用-- 或# 或/**/的方式完成注释

    DDL(数据定义语言)

    操作数据库

    1-创建数据库

    创建数据库 (掌握)

    create database 数据库名;
    

    默认字符集是安装mysql时选择的字符集 (utf8)

    判断是否存在并创建数据库(了解)

    create database if not exists 数据库名;
    

    创建数据库并指定字符集(了解)

    create database 数据库名 character set 字符集;
    

    2-查询数据库

    查询所有数据库

    show databases;
    

    查看某个数据库的定义信息

     show create database 数据库名称;
    

    3-修改数据库(了解)

    修改数据库字符集格式

    alter database 数据库名  character set 字符集;
    

    4-删除数据库

    drop database 数据库名;
    

    5-数据库的其他操作

    查看当前使用的数据库

    select database();
    

    切换数据库

    use 数据库;
    

    操作表

    条件:首先要进入到指定的数据库中

    创建表

    create table 表名(
    字段名1 字段类型1[长度],
    字段名2 字段类型2[长度]   
    .....
    )
    ps:只有字符串类型需要手动加长度,其它类型都不需要加长度(默认有)
    

    – 需求: 创建一个学生表(id name sex)

    数据类型:
    java的数据类型 mysql数据库的数据类型
    int int
    float float
    double double

    char/string varchar
    date date yyyy-MM-dd
    time HH:MM:SS
    datetime YYYY-MM-DD HH:MM:SS

    查看表

    查看某个数据库中的所有表:  show tables;
    

    查看表结构: desc 表名称;

    查询建表语句: show create table 表名;

    快速创建表结构: create table 新表名 like 旧表名;

    修改表结构

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

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

    修改列名 : alter table 表名 change 旧名称 新名称 类型;

    修改列类型 : alter table 表名 modify 列名 新类型

    修改表名称 : rename table 旧表名 to 新表名;

    删除表

    直接删除表: drop table 表名;
    

    判断表是否存在并删除表(了解): drop table if exists 表名;

    DML(数据操作语言)–重点

    插入记录

    添加全部字段

    方式一:insert into 表名 (字段名1, 字段名2, 字段名3…) values (值1, 值2, 值3);    
    

    方式二:insert into 表名 values (值1, 值2, 值3);

    添加部分字段

    insert into 表名 (字段名1, 字段名2, ...) values(值1, 值2, ...);
    

    注意事项

    值与字段必须对应,个数相同,类型相同
    

    值的数据大小必须在字段的长度范围内

    除了数值类型外,其它的字段类型的值必须使用引号引起。

    如果要插入空值,可以不写字段,或者插入null

    DOS命令窗口操作数据乱码问题的解决(了解)

    • 错误说明:
      当我们使用DOS命令行进行SQL语句操作如有有中文会出现乱码,导致SQL执行失败
    • 错误原因:
      因为MySQL的设置编码是utf8,而系统的DOS命令行编码是gbk,编码不一致导致的乱码
    • 解决方案:
      设置mysql编码方式
      • 快捷设置(临时)
        set names gbk;
      • 修改配置文件(永久)
        1 my.ini文件,在[mysql]设置字符集:GBK
        2 重启mysql服务

    蠕虫复制

    在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中

    前提:表结构得一致

    语法格式: insert into 新表 select * from 旧表;
    

    修改记录

    不带条件修改数据 : update 表名 set 字段名 = 值,字段名 = 值 ;  全改
    

    根据条件修改数据 : update 表名 set 字段名 = 值,字段名 = 值 where 字段名=值; 按条件改

    删除记录

    不带条件删除数据: delete from 表名;   全删
    

    根据条件删除数据: delete from 表名 where 字段名=值; 按条件删

    truncate删除表记录: truncate 【table】 表名; 全删

    truncate和delete的区别:(面试题)

    delete是将表中的数据一条一条删除

    truncate是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样

        delete删除的数据可以还原  truncate的数据无法还原
    

    DQL(数据查询语言)

    简单查询:

    查询所有列:  select * from 表名;
    

    查询指定列: select 字段名1,字段名2… from 表名;

    别名查询: select 字段名1 as 别名, 字段名2 as 别名… from 表名 as 表别名;

    清除重复值: select distinct 字段名 from 表名;

    查询结果参与运算: select 列名1 + 固定值 from 表名;(参数运算的字段必须为数值型)

    1 查询所有的商品
    2 查询商品名称和商品价格
    3 使用别名查询商品:as as可以省略
    4 去重查询 查询去重之后的价格 distinct
    5 运算查询 查询价格,将价格的增加100

    总结

    1 数据库的概念 
       用来存储数据的仓库,仓库需要DBMS系统创建,在硬盘上,所有数据也在硬盘上
       要想操作仓库中的数据,必须得使用sql语句
    2 DBMS系统的安装
        mysql    见参考大纲  细节:卸载
        oracle
        db2
        sqlserver
    3 sql语句操作数据库
         1 使用sql语句告诉dbms系统做数据库的crud      ddl分类
         2 使用sql语句告诉dbms系统做数据库表的crud    ddl分类
         3 使用sql语句告诉dbms系统做数据库表上数据的增删改 dml分类
         4 使用sql语句告诉dbms系统做数据库表上数据的查     dql分类
            简单查询
    

    《算法导论 第三版英文版》_高清中文版

    《深度学习入门:基于Python的理论与实现》_高清中文版

    《深入浅出数据分析》_高清中文版

    《Python编程:从入门到实践》_高清中文版

    《Python科学计算》_高清中文版

    《深度学习入门:基于Python的理论与实现》_高清中文版

    《深入浅出数据分析》_高清中文版

    《Python编程:从入门到实践》_高清中文版


    展开全文
  • MySQL数据库入门学习(多图预警+新手向~)

    万次阅读 多人点赞 2017-12-02 15:55:50
    现在市场上有很多图形化的数据库,没有什么可讲的,读者如果愿意,自行下载研究即可,本文章讲的全是在DOS环境下的一系列操作。

    1. 前言

    作者作为一名大二在校生,因为正在学习网页设计,考虑到后台问题,所以便自学了数据库,可能给大家总结的不是很全,但是一些必要的点肯定会讲到。现在市场上有很多图形化的数据库,没有什么可讲的,读者如果愿意,自行下载研究即可,本文章讲的全是在DOS环境下的一系列操作。


    2. MySQL基础知识

    MySQL经常和“数据库”连在一起读,这很容易对新手造成误解,认为MySQL就是一个数据库,其实不是这样,MySQL是数据库的集合,MySQL里面有很多数据库,那么数据是直接存在数据库里的吗?并不,数据库底下还有一个叫做数据表的存储单元,数据表里面才存储数据。打个比方,好比一座大图书馆,就是MySQL,图书馆里面分南库,北库,这就是数据库,每个库里面的书都是放在书架上的,书架就是数据表,而放在书架上的很多本书,就是数据。这么说,读者应该理解了吧,所以按大小顺序排个序就应该是,MySQL>数据库>数据表>数据,所以我们接下来的内容也是按照这个顺序来展开。


    3. 进入MySQL

    工欲善其事必先利其器,如果连MySQL如何打开都不知道,那如何进行操作学习呢,所以接下来讲解的就是,如何在DOS环境下进入MySQL。
    这里写图片描述

    在这里,我们首先找到MySQL的安装路径,找到“bin”文件夹下的“mysql.exe”,记住这个路径,然后在DOS环境下输入你的路径“D:\BtSoft\WebSoft\mysql\MySQL5.7\bin\mysql -uroot -p”,这里解释一下后面加上“-uroot -p”的作用,因为进入MySQL是需要账号密码进行登陆的,账号密码默认都是“root”,所以当你输完路径之后,摁下回车,就会要求你输入密码。
    这里写图片描述

    既然讲到了账号密码,这里就给大家补充一点,如何免密码登陆

    这里写图片描述

    打开MySQL安装的文件夹,在里面找到一个名为“my.ini”的配置文件,通过记事本或者其他文本编辑的方式打开,在“[mysqld]”的下面加上一句话“skip-grant-tables”然后重启MySQL服务即可

    这里写图片描述

    再次进入MySQL的时候,出现“Enter password”要你输入密码,直接摁回车即可。然后会列出一系列MySQL的版本信息,不用管他,现在可以看到,底下出现了一个“mysql>”接下来就可以对MySQL数据库进行操作了

    这里写图片描述


    **4.数据库的基本操作 **

    1. 查询数据库

    show databases;
    

    下面图片上展示的就是你当前有哪些数据库,这里因为作者之前创建过一些数据库,所以读者如果是第一次查询,可能我图片上的某些数据库你没有,这没有关系。这里要注意,因为数据库不止一个,即便是刚安装好的MySQL,里面默认存在的数据库也不止一个,所以是“databases”,千万别漏了“s”。

    这里写图片描述

    2. 创建数据库

    create database XX(数据库名);
    

    这里我创建了一个名为“hello”的数据库,显示“OK”,表示成功

    这里写图片描述

    在这里给大家补充一点,创建数据库的时候,默认的字符是”latin“,也就是拉丁文,现在读者可能体会不到有什么区别,等到数据表的操作的时候再讲。不过这里还是告诉大家,如何创建数据库的时候,自己定义为什么字符

    create database XX(数据库名) charset = (字符编码,例如utf8);
    

    我们平时学的中文的字符编码是“utf-8”,但是在MySQL里面,中文字符编码是“utf8”,这点希望读者注意。

    创建数据库还有一些细节性的操作,这里也给读者提一下。

    如果我们创建已存在的数据库,会发生什么事呢?下面我就创建一个已经存在的“test”数据库
    这里写图片描述

    果然,报错了,它告诉我,不能创建数据库“test”,因为这个数据库已经存在了,所以我们创建数据库的时候判断一下,如果不存在就创建

    create database if not exists XX(数据库名); 
    

    这段代码的好处是显而易见的,在我们这里可能体现不出来,但如果是做项目的时候或者在企业中,数据库非常非常多,你用肉眼看都要看花了,到底哪些数据库已经存在了,名字被用过了?所以就可以用上面这句代码,下面我们用这段代码创建一下“test”数据库,看会发生什么事情
    这里写图片描述

    看到没,显示“OK”,没有报错了,但是有一个警告,这个警告就是告诉用户,”test“这个数据库存在。

    还有个问题,有的人创建数据库起的名字和关键字相同,会发生什么呢?(关键字就是MySQL中有特定作用的词,比如说“show”、“create”)
    这里写图片描述

    这里英文太长了,有兴趣的读者可以自己去翻译一下,但是这里我们可以确实看到的是,名为“create”的这个数据库没有创建成功,报错了,那如果有的人说我就想创建一个名为“create”的数据库,怎么办呢?下面给出解决办法

    create database `XX`(数据库名);(注意,这里``是反引号,在键盘tab上面)
    

    这里写图片描述

    3. 显示数据库信息

    show create database XX(数据库名);
    

    这里写图片描述

    这里可以看到,我刚才创建的“test”数据库,默认的字符是拉丁的,我之前创建的数据库,我设定了它的字符是中文,所以显示是“utf8”

    4. 更改数据库的字符编码

    alter database XX(数据库名) character set utf8;
    

    5. 删除数据库

    drop database XX(数据库名);
    

    下面我删除刚创建的“hello”数据库
    这里写图片描述

    还是老问题,如果这个数据库不存在,我删除它,会发生什么呢?
    这里写图片描述

    很明显,报错了,因为不存在“a”这个数据库,我们可以判断一下,这个数据库存在才删除,下面给出代码。这里就不演示了,跟创建一样的。

    drop database if exists XX (数据库名字);	
    

    5. 选择数据库
    这是数据库的最后一个基本操作,我们如果想要创建数据,必须要创建一个数据库,然后在数据库当中创建数据表,在数据表中进行操作,但是这么多数据库,计算机怎么知道我们选择的是哪个数据库呢?下面给出代码

    use XX(数据库名);
    

    这里写图片描述

    选择数据库在我的理解更像是“进入数据库”,因为好比图书馆,我得进入一个某一个库,才能进行书架和图书的操作。


    **5.数据表的基本操作 **

    数据表的基本操作全都是在选择了数据库的前提下,请读者注意,下面的所有例子,都是在“test”的数据库内的操作

    1. 创建表

    create table XX(表名)(
    字段1名 数据类型,
    字段2名 数据类型,
    .......
    字段n名 数据类型
    );
    

    在讲解代码之前,请读者先想想,如果要你用Excel做一份班级成绩表,你会怎么做?肯定先有个标题吧,比方说“16级软件一班期末成绩表”,这里的标题就相当于我们的表名。标题有了,我们得在第一行写上“学号”、“姓名"、“总成绩"吧,来告诉看这个表的人,每一列代表的什么东西,这里的“学号”、“姓名"、“总成绩"就相当于我们的字段名。到这里,都这应该对这段代码有所了解了,下面我们创建一个数据表。

    这里写图片描述

    这里需要给大家补充一点MySQL数据类型的知识

    数据类型:int 整型
    		 tinyint 整型(0-256) 
    		 decimal 浮点型(总位数,小数位数) 例如 decimal(3,1)
    	     char(X) 定长字符型 例如 char(10)
    		 varchar(X) 可变长度字符型 例如varchar(10)
    		 text 大段文本
    		 binary 二进制(存储照片等)
    

    具体的没必要多说,只要了解常用的数据类型即可。现在我可以讲讲“Latin”和“utf8”的区别了,如果是在“Latin”字符下创建的数据表,那么一个中文等于两个字符,也就相当于,如果名字是四个字,就要char(8)。但如果是在“utf8”字符下创建的数据表,一个中文等于一个字符,如果名字是四个字,只需要char(4)就够了。

    提醒读者一句,如果用关键字做字段名或者表名,要用反引号

    创建数据表还有一些字段属性的设置,比方说

    null:空
    not null:不为空
    default 'XXXX':默认值
    auto_increment:自动增长
    primary key:主键(主键的特点,不为空,不重复,一个表只能有一个主键,但是一个主键可以由多个列组成)
    

    这些初学者用不到,讲起来很复杂,所以这里就不讲了,有兴趣的读者可以去百度自行了解。

    2. 查看所有表

    show tables;
    

    我在前面就提过,一个MySQL里面有多个数据库,所以,一个数据库里面也可以有多个表,当然,一个表里面也可以有多个数据

    这里写图片描述

    这里因为我只在“test”数据库里创建了一个数据表“stu”,所以显示了一个

    3. 显示创建表

    show create table XX(表名);
    show create table XX(表名) \G;
    

    上面两段代码都是显示创建表,只不过显示的样式不同,读者随意选择一种即可

    show create table stu

    show create table stu \G;

    4. 显示表结构

    describe(或desc) XX(表名);
    

    显示表结构就会展示表中有哪些字段,分别是什么类型,有没有默认值,为不为空,哪个是主键

    这里写图片描述

    5. 删除表(删除多个表)

    drop table XX(表名);
    drop table XX,XX,XX......; 
    

    上面的一句代码是删除一个表,下面的代码是一次性删除多个表


    **5.数据的基本操作 **

    数据的操作算是整个MySQL中最复杂的部分,虽然概括起来无非就是“增删查改”,但每一项底下包含的内容非常之多,作者在这里只能尽量为大家解释比较重要的操作

    1. 插入数据(增加)

    insert into XX(表名) (字段1,字段2,字段3......) values (值1,值2,值3.......);
    

    这里写图片描述

    这里,我插入两组数据,分别是学号为“2016101”,姓名为“李白”,成绩是“83”和学号为“2016102”,姓名为“杜甫”,成绩是“91”的两位同学的信息

    这里还需要给大家做一点补充,如果大家还记得之前我们创建数据表的时候,“id”和“name”都是varchar型,也就是字符串型,字符串型的数据,插入的时候就要加上""
    字段可以和数据库中的字段顺序不一致,但是值和插入字段的顺序必须一致
    插入字段是可以省略的,这时插入的值和数据表的字段顺序和个数必须一致

    2. 查询数据(查)

    这里本来应该按照顺序给大家讲删除数据的,但是因为想给的大家看一下插入数据之后,表内变成什么样了,让大家加深印象,所以这里讲查询数据,首先给大家介绍一个知识点——运算符

    比较运算符 >、>=、<、<=、=(比较和赋值都是"=")、<>(不等于)
    逻辑运算符 and(与)、or(或)、非(not)

    • 查询该表内的所有数据
    select * from XX(表名);
    

    举个例子,我们查询stu表下的所有数据,因为我等会讲的例子涉及到“性别”,所以我提前新增了一个字段名叫“sex”

    这里写图片描述

    • 查询该表内某字段的所有数据
    select 字段1,字段2,字段3......(或用"*"代替所有字段) from XX(表名);
    

    举个例子,我们查询“id”字段底下所有的数据,那么”id“下有哪些数据,就会展现出来

    • 查询某条件的所有数据
    select * from XX(表名)where 字段1 = 值1 and 字段2 = 值2 and ......;
    

    这段代码的意思是,从某个表中找出满足条件一且满足条件二的数据,例如,我们想要寻找成绩等于91分,且性别为女的学生信息

    这里写图片描述

    这里也可以改成,我们想寻找成绩大于90分或者成绩小于60分的学生信息,那么代码就应该是

    select * from stu where score > 90 or score < 60;
    
    • 由低到高排序
    select * from XX(表名) order by 字段x asc;(默认就是升序)
    
    • 由高到低排序
    select * from XX(表名) order by 字段x desc;
    
    • 按某条件排序
    select * from XX(表名) where 字段x = 值x oreder by 字段x asc(desc);
    
    • 取前n条数据
    select * from XX(表名) limit n;
    
    • 从第n条开始(起始位置是0)取m条
    select * from XX(表名) limit n,m;
    
    • 查询某排序下的前n条数据
    select * from XX(表名) order by 字段x asc(desc) limit n;
    

    这几条语句之所以不附上例子,是因为考虑到读者如果有耐心看到了这里,那么你应该基本掌握了MySQL的语法,不再需要例子去模仿,只需要告诉你使用什么语句,所以下面的代码也是一样,不再附上例子

    3. 删除数据(删)

    delete from XX(表名) where 字段x = 值x;
    

    4. 修改数据(改)

    update XX(表名) set 字段1 = 值1,字段2 = 值2 where 条件;
    update XX(表名) set 字段1 = 值1;
    

    下面一条的作用是修改某一字段的所有值,所以不需要加条件

    5.聚合函数

    • sum(); 求和 select sum(字段x) from XX(表名);
    • avg(); 求平均值 select avg(字段x) from XX(表名);
    • max(); 求最大值 select max(字段x) from XX(表名);
    • min(); 求最小值 select min(字段x) from XX(表名);
    • count(); 记录数 select count(字段x) from XX(表名);/select max(*) from XX(表名);
    • 在某字段条件下使用函数 select 函数名() from XX(表名) where 字段x = 值x;

    **6.结语 **

    现在在DOS环境下使用如此繁多的代码操作MySQL数据库已经不多见了,包括我们老师每次都跟我说让我使用图形化工具去操作MySQL,但是作为新手来说,一开始先掌握好这些基础的,再去使用图形化工具,能够很好的理解每一步操作,所以这也是一个打基础的过程。当然,作者水平有限,可能还有很多操作我没有讲到,这些都要靠读者自己去学习,作者只是为初学者领路,入门MySQL,如有任何问题,可以加群689696631交流。最后,感谢观看!

    展开全文
  • Python小白的数据库入门

    万次阅读 多人点赞 2019-06-28 16:49:32
    文章目录前言SQL数据库数据库SQL语言入门SQL简介SQL 的作用SQL语句分类SQLite 数据库SQLite 中的数据类型DDL语句创建表删除表修改表DML语句添加删除修改查询Python中的SQLite操作SQLite游标对象数据库可视化归纳总结...

    前言

    可以毫不夸张的说,不懂数据库,不是真正的程序员。纷繁复杂,界面绚丽的程序,最本质的无非都是在操作数据而已。既然有数据,那就肯定需要一个东西去存放并管理这些数据,而数据库就是这么一个软件。
    有些人可能没有直接接触过数据库,但我相信大部分人都用过Excel这种表格工具。实际上,它就相当于一个简单的数据库,与之相比,更贴切的可能是 Access数据库。

    在学习数据库之前,我们先看看数据库到底长什么样子,得先有感性认识才行

    这是MySql数据库
    MySQL
    这是Sqlite3数据库
    sqlite3
    以上两个是主流的关系型数据库,我们观察之后发现,它们与我们熟知的Excel好像也没有什么不同。关系型数据库里面放的都是一张张的表,就如同Excel中的工作簿。就算不熟悉Excel,但每一张表也都是我们从小到大所熟悉的那种表结构,例如课程表、值日表之类的。

    与Excel不同的是,数据库提供了快速的、高效的编程接口,可以让我们非常简洁、灵活的以代码去操作这个数据库,例如删除一条数据、新增一条数据、对数据进行排序,就想我们经常对价格、销量、好评排序那样。这些都是Excel无法比拟的。

    SQL数据库

    所谓数据库,即存储数据的仓库。每一个数据库可以存放若干个数据表,这里的数据表就是我们通常所说的二维表,分为行和列,每一行称为一条记录,每一列称为一个字段。表中的列是固定的,可变的是行。要注意,我们通常需要在列中指定数据的类型,在行中添加数据,即我们每次添加一条记录,就添加一行,而不是添加一列。对数据库的操作可以概括为就是向数据库中添加、删除、修改和查询数据,其中查询功能最为复杂。

    先简单了解了一下数据库,接下来学习一下数据库相关的概念。

    数据库SQL语言入门

    SQL简介

    结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和设计语言,用于存取数据以及查询、更新和管理关系数据库系统.

    简而言之,SQL就是一种脚本编程语言,是绝大多数数据库的通用语言。没错,刚学会Python,接下来又得学习新的语言……不过,对于非DBA(Database Administrator,数据库管理员)的开发人员而言,并不需要对SQL语言掌握得太深入,SQL的基本用法实际上是比Python还简单的。

    SQL 的作用

    • SQL 面向数据库执行查询
    • SQL 可在数据库中插入新的记录
    • SQL 可更新数据库中的数据
    • SQL 可从数据库删除记录
    • SQL 可在数据库中创建新表
    • SQL 可在数据库中创建视图

    SQL语句分类

    共分为四种

    1. DDL(data definition language)数据定义语言
      主要是对数据库中的表以及表中的列等的定义和操作

    2. DML(data manipulation language)数据操纵语言
      对数据库里的表中数据进行操作的语言

    3. DCL(Data Control Language)数据库控制语言

    4. TCL(Transaction Control Language)事务控制语言

    其中DDL和DML是最常用的语言,是重中之重,其他两种忽略

    SQLite 数据库

    SQLite 是一款轻型的嵌入式数据库,占用资源及其低,这是它受人青睐的原因之一,在嵌入式设备(如手机)中只需要几百 K 的内存即可。它不仅支持数据库通用的增删改查,还支持事务功能,功能还比较强大。
    SQLite 数据库实际上就是一个文件,这个文件的后缀名通常是 .db,database的缩写,它的第一个版本诞生于 2000 年,最近版本为 SQLite3。
    除了SQLite数据库,还有其他几种常见的数据库,例如Oracle、SQL Server、MySQL等等

    这里我们选取SQLite作为入门来学习数据库,因为它搭建非常简单,极容易上手。与之相比,其他的数据库都需安装,配置,启动服务等等操作。而Python在标准库已经自带了这种数据库。

    SQLite 中的数据类型

    数据库是存储数据的,它自然会对数据的类型进行划分,SQLite 划分有五种数据类型(不区分大小写)

    1. NULL 类型,取值为 NULL,表示没有或者为空
    2. INTERGER类型,取值为带符号的整数,即可为负整数
    3. REAL类型,取值为浮点数
    4. TEXT 类型,取值是字符串
    5. BLOB类型,是一个二进制的数据块,即字节串,可用于存放纯二进制数据,例如图片

    DDL语句

    简单说,其实主要就是用来创建表的,当然也可以删除表,或者修改表的定义,比如原表只有三列,现在需要五列,就要修改表的定义

    • 概念理解
      • 表: 可以理解为我们通常所说的二维表,分为横纵(行列),用于存放数据
      • 字段: 就是表中的列名
      • 主键: 就是一种特殊的列。每一行数据的主键不能相同,是这一行数据的唯一标识,就像人的身份证号
    创建表
    create table  表名称(列名1 类型 配置, 列名2 类型  配置, 列名3 类型 配置);
    

    注意,SQL语言是不区分大小写的,create 也可以写成CREATE。另外,每一句SQL语句后面都需要一个;号结尾

    示例:

    create table contacts (
    	id integer primary key autoincrement,
    	name text not null ,
    	phone text not null default 'unknow');
    

    上面的DDL语句创建了一个叫contacts的表,并且定义了三个列,分别是idnamephone,并且给每一个列定义了数据类型,分别是integertexttext,这表明,id只能是一个整数,namephone只能是字符串。
    除了这些,还对每一个列做了一些配置,或者叫约束

    primary key autoincrement 的意思是指将id这个列定义为主键,并且从1开始自动增长,也就是说id这个列不需要人为的手动去插入数据,它会自动增长。

    not null 指明这一列不能为空,当你插入数据时,如果不插入name或者phone的值,那么就会报错,无法完成这一次插入。

    default 'unknow' default关键字代表设置默认值,这里指定它默认值是字符串'unkonw',当不插入这一列数据时,默认就是这个值。此处写法是有些多余的,它与not null 一起用是没有意义的,因为not null已经指明这一列必须插入,不可能为null,那就不需要默认值了,当然,此处只是为了演示default的用法

    特别注意
    当Python程序运行建表语句时,如果表已经存在了,再去创建一遍会报错崩溃,因为你的程序第一次运行时执行了一遍建表语句,第2次第3次…去执行,表已经在第1次的时候创建了,这个时候就报错崩溃了。因此通常需要在建表语句中加入一个判断,判断这个表是否存在。

    create table if not exists stu_info(
    	id integer primary key autoincrement,
    	name text not null,
    	number text);
    

    如上所示,在建表语句中增加了一个if not exists的判断,每次运行都会先判断,不存在才会执行后面的语句创建

    删除表
      drop table 表名称;
      drop table if exists 表名称;
    
    修改表
    /* 修改表名称 */
    alter table 原表名 rename to 新表名;
    
    /* 添加新列 */
    alter table 表名称 add column 列名 类型 配置
    

    示例:

    alter table contacts rename to students;
    /* 添加字段,分多次添加 */
    alter table contacts add column email text;
    alter table contacts add column qq text not null;
    

    在SQLite3中需要特别注意,由于其对SQL 语句支持不够彻底,因此不能一次添加多个字段,只能一次添加一个,如有多个字段需要添加,则需要多次执行添加语句一次添加一个

    DML语句

    对数据库里的表数据进行相应的增、删、改、查的操作。注意,这里是表中的数据,而DDL则是对表的结构进行创建或修改,注意区分

    添加
    #想要插入的字段和值的顺序要一一对应起来
    insert into 表名称 (字段1,字段2,字段3……) values (被插入的值1,值2,值3……)
    
    insert into 表名称  values(值1,值2,值3……)
    

    要注意,使用简略的语句,必须插入全部字段,顺序对应,不能遗漏一个

    示例:

    insert into stu_info (name,number,age) values("zhangsan","20171220",20);
    
    删除
    delete  from  表名称  where 字段 = 条件;
    
    # 用于删除表中所有数据,但不删除表
    delete from 表名  或者  delete * from 表名
    

    示例:

    delete from stu_info  where number = "20171221";
    
    修改
    update 表名称  set 字段1=1,字段2=2,……  where 字段 = 条件;   
    

    注意,此处值是你要修改的值,此语句可用来修改满足条件的一行或多行

    示例:

    update stu_info set name = "zhangsan",age=10  where number = "20171221";
    
    查询
    #查询的字段就是你要查询的列名,用*可表示查询全部字段    
    select 查询的字段 from 表名称 where 字段 = 条件;
    
    #查询整张表的所有数据
    select * from 表名称;
    

    示例:

    select * from  food_types  where name = "apple" 
    

    多表查询
    如果两张表有关系,譬如,一张表是班干部表,记录了所有班干部,另一张表是全体学生表,记录每一个学生的情况,那么显然这两种表是有关系的。因为一个人既可以在学生表中,也可以在班干部表中。如果我们在班干部表中查到了他的学号,那么就可以用这个学号再去全体学生表中查出他的全部信息,包括考试成绩等等这些,这就是所谓的多表查询。

    如下例,我们需要查询的是table1中的abc字段的内容,则从table1,table2两张表去查,当满足条件table1中的xxx字段的内容等于table2中的xxx字段的内容时,就返回这些符合条件的数据。

    select table1.abc from table1,table2 where table1.xxx=table2.xxx;
    

    或者等价于

    select table1.abc from table1 inner join table2 on table1.xxx=table2.xxx;
    

    特别注意
    SQL语句中,text类型的字符串常量需要用单引号或者双引号括起来,推荐使用单引号。

    例如:

    select * from stu_info where name = 'zhangsan'
    

    以上也就是数据库中常说的所谓CRUD操作(create、read、update、delete),分别代表对数据的增删改查

    在技术上很多术语词汇并不是没有来由出处的,因此大家不能根据英汉词典去望文生义。根据英文维基百科,CRUD(create, read, update, and delete )术语的出处,是James Martin在1983年的《管理数据库环境》一书中首次流行的

    Python中的SQLite

    操作SQLite

    操作该数据库的大致步骤就是连接数据库,然后对数据库进行增删改查等操作即可。

    操作步骤

    1. 导入模块
    2. 连接数据库,返回连接对象
    3. 调用连接对象的execute()方法,执行SQL语句,进行增删改的操作,如进行了增添或者修改数据的操作,需调用commit()方法提交修改才能生效;execute()方法也可用于执行DDL语句进行创建表的操作
    4. 调用连接对象的cursor()方法返回游标对象,然后调用游标对象的execute()方法执行查询语句,查询数据库
    5. 关闭连接对象和游标对象

    示例代码:

    # 导入模块
    import sqlite3
    
    # 连接数据库,返回连接对象
    conn = sqlite3.connect("D:/my_test.db")
    
    # 调用连接对象的execute()方法,执行SQL语句
    # (此处执行的是DDL语句,创建一个叫students_info的表)
    conn.execute("""create table if not exists students_info (
    id integer primary key autoincrement,
    name text,
    age integer,
    address text)""")
    
    # 插入一条数据
    conn.execute("insert into students_info (name,age,address) values ('Tom',18,'北京东路')")
    
    # 增添或者修改数据只会必须要提交才能生效
    conn.commit()
    
    # 调用连接对象的cursor()方法返回游标对象
    cursor = conn.cursor()
    
    # 调用游标对象的execute()方法执行查询语句
    cursor.execute("select * from students_info")
    
    # 执行了查询语句后,查询的结果会保存到游标对象中,调用游标对象的方法可获取查询结果
    # 此处调用fetchall方法返回一个列表,列表中存放的是元组,
    # 每一个元组就是数据表中的一行数据
    result = cursor.fetchall()
    
    #遍历所有结果,并打印
    for row in result:
        print(row)
    
    #关闭
    cursor.close()
    conn.close()
    

    游标对象

    调用连接对象的cursor()方法可以得到一个游标对象,那么游标到底是什么呢?其实可以把游标理解为一个指针,如下图:
    在这里插入图片描述

    图中的指针就是游标cursor,假设右边的表就是查询到的结果,那么可以调用游标对象的fetchone()方法移动游标指针,每调用一次fetchone()方法就可以将游标指针向下移动一行,第一次调用fetchone()方法时,将游标从默认位置移动到第一行

    # 调用游标对象的execute()方法执行查询语句
    cursor.execute("select * from students_info")
    
    # 将游标移动到第一行
    row = cursor.fetchone()
    
    # 当查询的结果集没有数据时,向下移动游标会返回空,如果不是空,说明有数据
    if row !=None:
        print(row)
    

    一行一行的手动去移动太太麻烦,可以使用循环

    # 将游标移动到第一行
    row = cursor.fetchone()
    
    # 如果返回的结果集第一行有数据,进入循环
    while row != None:
    	# 打印第一行结果
    	print(row)
    	
    	# 将游标指针向下再移动一行
    	row = cursor.fetchone()
    

    上面的例子主要讲解了游标的一些概念,通常只有在确定返回的结果只有一条数据(即一行)时,才会使用fetchone()方法,比如按id查询时,因为id是唯一的,查询的结果只可能有一条数据或者为空,不可能有多条,这时使用fetchone方法是非常好的。当返回的结果可能为多条数据时,通常使用fetchall()方法,该方法会返回一个结果列表,遍历这个列表就可得到多条结果。如第一个例子中的用法:

    result = cursor.fetchall()
    
    #遍历所有结果,并打印
    for row in result:
    	print(row)
    

    之前的概念中也讲到,实际上执行完查询语句之后,所有的查询结果已经保存到cursor对象中,可以直接遍历cursor对象,与上面的调用fetchall()方法类似,区别就是调用fetchall()方法借助了列表,可以调用一些列表的函数对查询结果进行操作

    #调用游标对象的execute()方法执行查询语句
    cursor.execute("select * from students_info")
    
    #直接遍历cursor对象,并打印
    for row in cursor:
    	print(row)
    

    SQLite防注入

    对于某些特殊符号的数据,直接使用上述方法拼接字符串,可能会造成意想不到的错误,因此,应当使用另一种安全的,可防Sql注入攻击的方式插入数据。

    cursor.execute("insert into students_info values (?,?,?)",
    ('Tom',18,'北京东路'))
    

    这里的?相当于占位符,execute方法的第二个参数是一个元组,元组中的元素会替换掉占位符。注意,这里和字符串拼接是不同的,会进行sql的预编译,可防止SQL注入

    数据库可视化

    当我们创建生成了数据库之后,使用代码或命令行来查看数据库的内容是不方便的,这时候就需要一个界面软件来打开数据库查看,不同的数据库,有不同的可视化软件,即使同一款数据库,也会有多种可视化工具,对于Sqlite3而言,推荐使用SQLiteStudio软件查看 官网链接

    归纳总结

    需要注意,sqlite3模块的connect()函数用于连接数据库,其中传入的参数为数据库的路径,如果数据库不存在,则创建数据库,那么该路径就是数据库的保存路径;如果已经存在数据库,则打开数据库,该路径为当前数据的真实路径,路径填写错误,会造成程序崩溃!

    Cursor游标对象的几个常用方法:

    1. execute() 执行sql语句,通常执行查询语句
    2. fetchone() 将游标指针向下移动一行,并返回当前行的数据
    3. fetchall() 从结果中取出所有结果,返回所有结果的列表
    4. close() 关闭游标

    查询返回的一行数据是一个元组,如上面代码中,print(row),其中row是一个元组,通过row[0]row[1]等访问每一列数据,索引0对应上面代码中的id,索引1对应name,2对应age,以此类推

    欢迎关注我的公众号:编程之路从0到1

    编程之路从0到1

    展开全文
  • ArangoDB数据库入门

    2018-11-13 04:14:49
    ArangoDB数据库入门

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

    也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                   

    ArangoDB数据库入门

    作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs

    一、ArangoDB介绍

    ArangoDB是一个开源NoSQL数据库,官网:https://www.ArangoDB.org/

    ArangoDB支持灵活的数据模型,比如文档Document、图Graph以及键值对Key-Value存储。ArangoDB同时也是一个高性能的数据库,它使用类SQL查询或JavaScript扩展来构建高性能应用。

    ArangoDB值得称赞的一点,可以在树莓派上运行ArangoDB 1.4版。

    ArangoDB的特性:

    1)多模型数据库

    可以灵活的使用键值对、文档、图及其组合构建你的数据模型。

    2)查询便利

    ArangoDB有类SQL的AQL查询语言,还可以通过REST方式进行查询。

    3)可通过JavaScript进行扩展

    无语言范围的限制,可以从前端到后端都使用同一种语言。

    4)高性能

    ArangoDB速度极快

    5)Foxx - 构建自己的API

    用JavaScript和ArangoDB构建应用,Foxx运行在DB内部,可快速访问数据。

    6)空间利用率高

    跟其它文档型数据库相比,ArangoDB占用的存储空间更少,因为ArangoDB是模式自由的元数据模式。

    7)简单易用

    ArangoDB可以在几秒内启动运行,同时可使用图形界面来管理你的ArangoDB。

    8)多OS支持

    ArangoDB支持Windows、Linux和OSX等操作系统,还支持树莓派。

    9)开源且免费

    ArangoDB开源免费,它采用了Apache 2许可证协议。

    10)复制

    ArangoDB支持主从集群

    二、ArangoDB安装

    这里以ArangoDB的Windows版为例。
    ArangoDB的下载地址为:https://www.arangodb.org/repositories/Windows7/x86_64/ArangoDB-1.4.11-win64.exe

    ArangoDB的安装与Windows上普通软件的安装一样,安装完成后启动ArangoDB Server。


    运行Arango Shell,会弹出如下界面:


    要让ArangoDB变成Windows服务,可以执行如下命令:
    D:\database\ArangoDB\bin>arangod --install-serviceINFO: adding service 'ArangoDB - the multi-purpose database' (internal 'ArangoDB')INFO: added service with command line '"D:\database\ArangoDB\bin\arangod.exe" --start-service'

    要注意,ArangoDB由数据库服务器和客户端工具组成。在启动ArangoDB服务器时,ArangoDB服务器会自动放置一个锁文件(只读)以防止对数据文件的意外访问。在ArangoDB启动完成后,ArangoDB服务器会自动删除此锁文件,如果锁文件仍然有效,那么ArangoDB会意外终止。

    可以通过浏览器访问ArangoDB,地址:http://127.0.0.1:8529/


    三、ArangoDB程序介绍

    1、arangod

    它是ArangoDB数据库的守护程序,运行后就是ArangoDB数据库服务器的守护进程。

    2、arangosh

    ArangoDB的Shell环境。

    3、arangoimp

    ArangoDB数据库导入工具

    4、arangodump

    ArangoDB数据库的备份工具

    5、arangorestore

    ArangoDB数据库的恢复工具

    6、foxx-manager

    一个Shell脚本,管理Foxx应用程序

    7、arango-dfdb

    ArangoDB的数据文件调试器

    8、arangob

    ArangoDB的测试和评分工具,主要用于ArangoDB的开发和测试。



               

    给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

    这里写图片描述
    展开全文
  • H2数据库入门

    2018-08-10 11:51:39
    H2数据库入门 一、H2数据库介绍  常用的开源数据库有:H2,Derby,HSQLDB,MySQL,PostgreSQL。其中H2和HSQLDB类似,十分适合作为嵌入式数据库使用,而其它的数据库大部分都需要安装独立的客户端和服务器端。  ...
  • 数据库入门

    万次阅读 2014-05-10 17:39:34
    以前听到数据库, 就头大, 知道用过
  • C#2008数据库入门经典

    热门讨论 2012-05-17 13:57:17
    《C# 2008数据库入门经典(第4版)》着重介绍了使用C# 2008作为开发工具,与最新发布的Visual Studio 2008及.NET Framework 3.5一起访问数据库。《C# 2008数据库入门经典(第4版)》介绍了使用SQL Server 2005进行数据库...
  • 数据库入门教程

    千次阅读 2021-06-09 08:55:29
    数据库入门教程 一、MySQL的重要性 1.1定位 (1)重点在SQL语句 ,需要能够在没有任何提示下,用纸和笔手写SQL。 (2)在面试中95%的概率 手写SQL语句。 (3)通过SQL语句去操作数据库 需要了解SQL、Oracle、SQL...
  • MySQL数据库入门

    千人学习 2020-06-24 20:57:12
    MySQL数据库当前已经成为开源数据库的首选,很多大型企业在高喊去IOE时,会使用MySQL已经成为测试人员、开发人员的必备技能。 本课程从最初的安装、使用,逐一讲解。
  • NoSQL数据库入门概述

    万次阅读 2016-08-27 13:59:55
    NoSQL数据库入门概述、包括Memcached、Redis、Tokyo Tyrant等NoSQL数据库的简单了解
  • 数据库概述 数据库入门

    千次阅读 2019-04-11 09:27:42
    数据库概述 存放数据的方式 1.存在内存中 2.保存在普通文件中 3.保存在数据库中 什么是数据库 存储数据的仓库,用户可以对数据库中的数据进行增加,修改,删除及查询操作(sql语言)。 数据库的优点- ...
  • Oracle数据库 入门教程

    万次阅读 多人点赞 2018-07-06 17:16:56
    Oracle数据库1.1 数据库环境安装1.Oracle数据库产品是免费的,我们可以从Oracle的官方网站(http://www.oracle.com)下载到程序安装包,Oracle在Windows下的安装非常方便,安装开始后,一直点击安装程序的“下一步”...
  • Derby数据库入门

    2012-03-02 11:14:58
    Derby数据库入门 点击打开链接
  • 微信小程序云开发之云数据库入门

    万次阅读 2020-07-20 12:28:34
    微信小程序云开发之云数据库入门 介绍 开发者可以使用云开发开发微信小程序、小游戏,无需搭建服务器,即可使用云端能力。 其基础能力数据库,是一个JSON数据库,作用是无需自建数据库,就可以在微信小程序前端操作...
  • MySQL数据库入门学习

    千次阅读 2017-09-20 14:37:03
    课程介绍 本课程通过最流行的开源... 数据库入门学习者  前端学习者 课时列表 课时1: MySQL概要 课时2:MySQL在windows下的安装 课时3:MySQL在linux下的安装 课时4:MySQL在Mac下的安装 课时5:MySQL配置
  • Oracle数据库入门——初级系列教程

    千次阅读 2018-09-17 12:01:22
    Oracle数据库入门——初级系列教程
  • SequoiaDB巨杉数据库入门教程,数据库基本概念及基础操作教程,上手分布式数据库。
  • NoSQL数据库入门与实战

    千人学习 2019-05-10 09:16:03
    NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL"。本科介绍了 memcache 和 redis 两种数据库。 非关系数据库Redis中的数据类型比较多,相对MySQL要复杂的多,而且方法较多,是学习中的难点。
  • H2数据库入门Demo(一)

    千次阅读 2017-11-21 20:12:13
    H2数据库入门Demo(一) 1、 H2数据库:H2是Thomas Mueller提供的一个开源的、纯java实现 的关系数据库。其有很多优点:轻便、嵌入式或内存版本、兼容性好、支持标准SQL等。 2、H2数据库的下载和安装 如图所示:...
  • Oracle数据库入门

    千次阅读 2018-11-22 22:22:31
    Oracle数据库 Oracle数据库与Mysql数据库的区别 a.Oracle是大型数据库,Mysql是中小型数据库。 b.Oracle支持大并发,大访问量,是OLTP最好的工具。 c.在数据处理上也存在一些区别 1.主键:Mysql采用的是自增长主键,...
  • mysql数据库入门教程(4):查询讲解大全 mysql数据库入门教程(5):多表操作(连接查询,子查询,分页查询,联合查询) 今天介绍下数据库的增删改。 数据库基本操作:增删改查 #DML语言 /* 数据操作语言: 插入:insert...
  • 十分钟看懂数据库——数据库入门级语言总结

    万次阅读 多人点赞 2016-07-31 11:25:21
    从sql入门经典,到sql视频,再到自考的数据库系统原理,不知不觉中我们已经走进了数据库的世界,那么什么叫数据库,他又是干什么用的呢? 咱们先看一下百度给的解释啊。 数据库(Database)是按照数据结构来组织、...
  • MySQL数据库入门练习100句

    万次阅读 2016-12-14 21:23:52
    用于配合MySQL入门学习和温习的练习代码100句
  • mysql数据库入门基础精讲视频

    千次阅读 2017-07-27 11:13:20
    mysql数据库入门基础精讲视频   目前MySQL已经成为最为流行的开源关系数据库系统,并且一步一步地占领了原有商业数据库的市场。 学习目标: 深入理解MySQL数据库的原理 从硬件 系统 MySQL参数 执行计划 SQL优化等...
  • 时序数据库入门

    千次阅读 2019-03-30 23:13:13
    数据库的模型包含关系型、key-value 型、Document 型等很多种,那么为什么新型的时序数据库成为监控数据存储的新宠呢? 下面就会从 为什么需要时序数据库? 时序数据库的数据结构 两个方面来介绍一下时序数据库。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 307,723
精华内容 123,089
关键字:

数据库入门