技术标签: 数据库
一、数据库基础
1、数据库的引入
一般来说,我们可以使用文件来存储数据,为什么要用到数据库呢?
由于文件保存数据有以下缺点:
(1)安全性问题
(2)不利于数据的查询和对数据库的管理
(3)不利于存放海量数据
(4)在程序中的控制不方便
因此为了解决文件存储数据的缺点,专家们设计出更加利于管理数据的东西——数据库。
数据库:高效的存储和处理数据的介质(介质主要有两种:磁盘和内存)。
数据库的水平是衡量一个程序员水平的重要标准。
2、主流的数据库
Sql Server:微软的产品,.Net程序员的最爱,中大型项目。
Oracle:甲骨文产品,Java程序员,大型项目,适用于处理复杂的业务逻辑,对开发来说一般不如MySQL.
MySQL:sun公司的产品,现在也属于甲骨文,中大型项目,并发性好,不适合做复杂的业务,主要用于电商、SNS、论坛。对简单的 SQL处理效果好。
DB2:IBM公司,处理海量数据,大型项目,功能很强悍。
Informix:IBM公司,安全非常强。
Postgreasql: 学术性数据库,但是功能很强大,更新维护很及时,开源。
H2:嵌入式数据库,数据内存存储,文件存储,开源,并且实现的代码是JAVA语言,为之自豪。
3、mysql的基本使用
(1) 连接到mysql
a. mysql -h localhost(本机) -P(端口号) -u root -p
我们默认安装时的端口号是3306
b. mysql -u root -p
若没有写-h 127.0.0.1默认是本地连接
(2) SQL基本分类
A. DDL数据定义语言,用来维护存储数据的结构。
代表指令:create、drop、alter
B. DML数据操纵语言,用来对数据进行操作(表中的内容)
代表指令:insert、delete、update
C. DML中有一个分支DQL
数据查询语言如select
D. DCL数据控制语言,主要负责权限管理和事务
代表指令:grant、revoke、commit
二、库的操作
1、创建数据库
Create database [if not exists]
db_name [create_specification[,create_specification]……]
create_specification: [default] character set charset_name [default] collate collation_name |
注:[ ]表示可选项
character set:指定数据库采用的字符集
collate:指定数据库字符集的比较方式(一般utf8_general_ci,一般不指定)
实例:创建Information数据库
(1) 创建不指定字符集和校验规则的数据库Information
create database Iformation;
当我们创建数据库的时候没有指定字符集和校验规则,则系统使用默认的字符集:utf8,默认的校验规则:utf8_general_ci
(2) 创建指定utf8字符集的数据库Information1
create database Iformation charset = utf8;
(3) 创建指定utf8字符集,并带不区分大小写的校验规则的数据库Information2
create database Iformation charset = utf8 collate utf8_general_ci;
2、字符集和校验规则
(1)查看数据库支持的字符集
字符集主要是控制使用什么语言,如utf8可以支持中文。
(2)校验规则
A. 不区分大小写
后缀为_ci
使用我们之前创建好的不区分大小写校验规则的数据库Information2
B. 区分大小写
后缀为_bin
创建指定utf8字符集,并区分大小写的校验规则的数据库Information3
实例:分别向带有区分大小写和不区分大小写的两个数据库Information3、Information2建立表Student并插入元素A、B、a、b。
a、向区分大小写的数据库中添加元素:
b、向不区分大小写的数据库中添加元素
c、分别在两个数据库中查找元素a
d、分别对两个数据库中的元素进行排序
(3)校验对数据库的影响
通过上述实例,我们可以看出:
A. 在指定查询方面:
如果使用不区分大小写的校验规则,则当我们查询指定内容时,会不区分大小写对我们展示出来。而使用区分大小的校验规则则只按照我们所指定的大小写进行显示。
B. 在排序方面:
不使用区分大小写的校验规则则按照相同字符从小到大的顺序进行排序,若区分大小字则各字符按照从小到大的默认顺序进行排序。
3、操纵数据库
(1)查看数据库:show databases
(2)显示数据库创建语句
A. show create database 数据库名;
B. show create database 数据库名 \G
注:
1)MySQL建议我们将关键字大写,但是也不是必须的
2)数据库名称的反引号` `,是为了防止使用的数据库刚好是关键字
3)/*!40100 default…… */这个不是注释,而是表示当前数据库mysql版本大于4.0.1版本,就执行则句话。
(3)查看当前数据库的连接状态
show processlist
4、备份数据库
在删除数据库之前最重要的工作就是对数据库进行备份。
(1)备份数据库:mysqldump -u root -p 数据库名 > 要备份到的路径
这种备份方式,只能在再创建一个数据库的方式下才能还原数据库
(2)备份数据库且创建新的数据库
mysqldump -u root -p -B 数据库名称 > 要备份到的路径
(3)只备份数据库中的表
mysqldump -u root -p 数据库名称 表名 > 要备份的位置
5、删除数据库
drop database 数据库名称
当执行此语句后,数据库内部看不到对应的数据库,且对应的数据库文件夹被删除,级联删除,里面的数据表全部被删除。
6、还原数据库
删除后所有的数据库:
(1)还原第一种方式备份的数据库
首先我们应该先创建一个新的数据库,然后使用新建的库进行数据库的还原。
(2)还原第二种方式备份的数据库
不需要重新创建数据库,因为我们在备份的时候,直接设置了新建。
还原后所有的数据库:
7、修改数据库
alter database [if exists] 数据库名[alter_spacification[,……]]
一般情况下,我们在创建的时候设置好,若修改则会影响后续的操作。
三、表的操作
1、创建表
语法:create table 表名(
filed datatype,
filed2 datatype,
filed3 datatype)charset set 字符集 collate 校验规则 engine 存储引擎;
说明:field表示列名
datatype表示列的类型
charset set 字符集,如果没有指定字符集,则以所在的数据库的字符集为准。
collate校验规则,如果没有指定校验规则,则以所在的数据库的校验规则为准。
2、查看表中字段
(1) show create table 表名 \G
show create table 表名;
3、展示表的结构
4、修改表
在实际的项目开发中,经常需要修改表的结构,如:字段名称,字段类型,字段大小,表的字符集类型,表的存储引擎等。还有需求,添加字段,删除字段,这时候我们就需要对表进行修改。
(1)表中添加一个字段,用于保存图片路径。
(2)修改name,将其长度改为60.
(3)删除birthday列
(4)修改表名为employee
5、修改表中字符集
6、将name列改名为xingming
分支限界算法运用练习(1)0-1背包问题;(2)TSP问题一、实验目的本次实验是针对分支限界算法的设计及应用练习,旨在加深学生对该部分知识点的理解,提高学生运用该部分知识解决问题的能力。三、 实验项目1.请用分支限界法对下列问题进行求解。题目:(1)0-1背包问题;(2)TSP问题;具体题目容请参照教材四、 实验过程(一)题目一:0-1背包问题题目分析每个物品不可再分割,选择装入背包的物品,使得装入背包中的物品的总价值最大。算法构造在此论证算法设计中的一些必要的设计依据。放
PTA刷题第20题-两个有序链表序列的合并已知两个非降序链表序列S1与S2,设计函数构造出S1与S2合并后的新的非降序链表S3。输入格式:输入分两行,分别在每行给出由若干个正整数构成的非降序序列,用−1表示序列的结尾(−1不属于这个序列)。数字用空格间隔。输出格式:在一行中输出合并后新的非降序链表,数字间用空格分开,结尾不能有多余空格;若新链表为空,输出NULL。输入样例:1 3 5..._已知两个非降序链表序列s1与s2,设计函数构造出s1与s2合并后的新的非降序链表s3。
Pong 游戏控制台版我就直接上代码了欢迎来讨论#include <iostream>#include <conio.h>#include <Windows.h>#include <ctime>#include <cstdlib>using namespace std;#define WIDTH 120#define ..._pong c++代码
题目:栈的压入、弹出序列题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路:出栈的过程,我们可以找到判断一个序列是不是栈的弹..._剑指offer java 栈的压入、弹出序列
目录《系统分析与设计》课程设计 1一、 问题定义 2(一) 软件性质 2(二) 软件规模 2(三) 软件要实现的目标 2(四) 选题背景 2二、 可行性研究 32.1 3(一)技术可行性 3(二) 经济可行性 3(三) 法律可行性 3(四) 操作可行性 3(五) 结论 42.2 4(一) 系统概述 4(二) 系统资源 4(三) 成本预算 5(四) 进度安排 5三、 面向对象的分析 5(一)业务分析 51、 业务描述 5(二) 功能分析,建立系统的功能模型 61、_面向对象火车订票系统课设
系列文章目录文章目录系列文章目录前言一、调整奇偶数顺序1.题目描述2.解题思路二、移除链表元素1.题目描述2.解题思路三、反转链表1.题目描述2.解题思路总结前言一、调整奇偶数顺序调整奇偶数顺序使奇数位于偶数前面1.题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。2.解题思路malloc创建一块空间遍历数组两遍,第一遍只存储奇数,第二遍只存储偶数。代码如下:int* exchange(int*.
pypi 镜像使用帮助
Web前端基础知识一、
程序员入门水平,贴出代码大家一起进步!判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。输入格式:输入在第一行给出两个不超过 100 的正整数 N 和 M,分别是学生人数和判断题数量。第二行给出 M 个不超过 5 的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0 代表“非”,1 代表“是”。随后 N 行,每行给出一个学生的解答。数字间均以空格分..._在c语言程序中,用关键字 定义基本整型变量,用关键字 定义单精度实型变量,用关键字 什么 定义双精度实型变量。
VR风暴将至虚拟现实的中国故事该怎么写?当暴风借虚拟现实(Virtual Reality,简称VR)概念成功助推上市时,更多的人开始畅想,虚拟现实的中国故事该怎么写了。越来越多的虚拟现实产品进入我们的视野,游戏,电影,广告,运动.........我们是不是要考虚拟现实在中国的未来,自Oculus以20亿美元被Facebook收购,再到“透镜+手机”的VR解决方案真正戳中从业者...
前言这道题目是输出魔方阵,在这之前我并不清楚魔方阵是什么东西,查阅了一些资料,大概清楚了它的概念。本文适用于奇数矩阵。正文概念由 NxN个数字所组成的n阶方阵,若具有各对角线、各横列与纵行的数字和都相等的性质,则称为魔方阵。这个相等的和称为魔术数字。若填入的数字是从1到NxN,称此种魔方阵为n阶正规魔方阵。如下所示为一个5阶魔方阵。步骤假定当前数的下标为(i,j),先确定1所在的位...
Training 5 - G题Queues and Priority Queues are data structures which are known to most computer scientists. The Team Queue, however, is not so well known, though it occurs often in everyday life. At l..._queues and priority queues are data structures which are known to most compu