数据库
一、数据库基础
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