目录
一、基础知识
1、什么是数据库
数据库由一批数据构成有序的集合,这些数据被存放在结构化的数据表里。数据表之间相互关联,反映了客观事物间的本质联系。数据库系统提供对数据的安全控制和完整性控制。
数据库的发展大致分为:人工管理阶段、文件系统阶段、数据库系统阶段、高级数据库阶段。其种类有3种:层次式数据库、网络式数据库和关系式数据库。
2、表
在关系型数据库中,数据库表是一系列二维数组的集合,用来存储数据和操作数据的逻辑结构。行称为记录,是组织数据的单位;列称为字段,每一列表示记录的一个属性,都有相应的描述信息。
序号 | 用户名 | 密码 | 年龄 |
---|---|---|---|
1 | admin | 123456 | 20 |
2 | root | admin | 18 |
3、数据类型
数据类型决定了数据在计算机中存储格式,代表不同的信息类型。常用的数据类型有:整数型、浮点型、二进制型、日期时间型、字符串型等。
4、主键
主键(Primary Key)又称主码,用于唯一地标识表中的每一条记录。可以定义表中的一列或多列为主键,主键列上不能有两行相同的值,也不能为空值。以上表为例,可以标识序号为主键,其他字段的记录可以有重复值故不能当作主键。
5、SQL语言
对数据库进行查询和修改操作的语言叫做SQL(结构化查询语言)。SQL有许多不同的类型,各大数据库厂商提供不同版本的SQL。SQL包含以下4个部分:
1、数据定义语言:DROP、CREATE、ALTER等
2、数据操作语言:INSERT、UPDATE、DELETE等
3、数据查询语言:SELECT语句
4、数据控制语言:GRANT、REVOKE、COMMIT、ROLLBACK语句等
6、数据库访问接口
不同的程序设计语言会有不同的数据库访问接口,程序语言通过这些接口,执行SQL语句,进行数据库管理。主要的数据库访问接口有:
1、ODBC:开放数据库互联技术为访问不同的SQL数据库提供了一个共同接口。所有的数据库操作由对应的DBMS的ODBC驱动程序完成。
2、JDBC:java数据库连接,它由一组用java语言编写的类和接口组成。
3、ADO.NET:是微软在.NET框架下设计的一组和数据源进行交互的面向对象类库。
4、PDO:是PHP访问数据库定义的一个轻量级的接口,提供了一个数据访问抽象层,是PHP5新加入的一个功能。
7、什么是Mysql
Mysql是一个小型关系型数据库管理系统,与其他大型数据库管理系统(Oracle、DB2、SQL Server等)相比,Mysql规模小、功能有限。但体积小、速度快、成本低,这些特性使得MySQL成为了目前流行的开放源代码数据库。
MySQL的命令机制由3个数字和1个后缀组成,如MySQL-5.7.10。
第一个数字(5)是主版本号,第二个数字(7)是发行级别,第三个数字(10)是在此发行系列的版本号。
二、数据库的基本操作
1、创建数据库
MySQL安装完成后,将会在其data目录下自动创建几个必须的数据库,可以使用show databases;语句来查看当前所有存在的数据库:
创建数据库基本SQL语法格式为:create database name_db;
创建完成后可以使用show create database name_db;命令来查看数据库的定义;
2、删除数据库
删除数据库语法格式为:drop database name_db;使用该删除命令不能恢复数据,请谨慎使用。
三、数据表的基本操作
1、创建数据表
创建表的语法格式:create table 表名
(
字段名1,数据类型 [列级别约束条件] [默认值],
字段名2,数据类型 [列级别约束条件] [默认值],
......
[表级别约束条件]
)
2、使用主键约束
主键约束要求主键列的数据唯一,且不允许为空。可以结合外键来定义不同数据表之间的关系,加快查询的速度。分为两种主键:单字段主键和多字段联合主键。
1、单字段主键:由一个字段组成:
可以在定义列的同时指定主键:字段名 数据类型 primary key
在定义完所有列后之后定义主键:primary key 字段名
多字段联合主键:primary key(字段1,字段2,....字段n)
3、使用外键约束
外键用来在两个表的数据之间建立连接,它可以是一列或多列。一个表可以有一个或多个外键。一个表的外键可以是空值,若不为空值必须是另一个表中主键的某个值。定义外键后,不允许删除在另一个表中具有关联关系的行。
创建外键的语法格式:[constraint 外键名] foreign key 字段名1 references 主键列1
demo:constraint text1 foreign key(tid) references tb_id(id)
4、使用非空约束
非空约束指字段的值不能为空。语法格式如下:字段名 数据类型 not null
5、使用唯一性约束
唯一性约束要求该列唯一,允许为空,但只能出现一个空值。语法格式:字段名 数据类型 unique
唯一性约束与主键的区别是:一个表中可以有多个字段声明为唯一性约束,但只能有一个主键声明;声明为主键的列不允许有空值,但是声明为唯一性约束的字段允许空值null存在。
6、使用默认约束
默认约束指定某列的默认值,语法格式为:字段名 数据类型 default 默认值
自动填充password字段值为123456
7、设置表的属性值自动增加
一个表中只能有一个字段使用此约束,且该字段必须为主键的一部分,默认的自增字段id的值从1开始,每次添加一条新纪录,该值自动加1。
语法格式如下:字段名 数据类型 auto_increment
四、查看数据表结构
1、查看表基本结构
describe/desc语句可以查看表的字段信息,语法格式如下:desc 表名
2、查看表详细结构
show create table语句可以查看用来显示创建表时的create table语句。
五、修改数据表
1、修改表名
语法格式:alter table <旧表名> rename [to] <新表名>;
修改表名:alter table user rename user_1;
2、修改字段的数据类型
语法格式:alter table <表名> modify <字段名> <数据类型>
修改前:
修改username字段:alter table user modify username varchar(50);
3、修改字段名
语法格式:alter table <表名> change <旧字段名> <新字段名> <新数据类型>;
修改username字段名:alter table user change username uname varchar(25) not null;
如果旧字段名与新字段名相同,则只修改数据类型,和modify效果一样。
4、添加字段
语法格式:alter table <表名> add <新字段名> <数据类型> [约束条件] [ first | after 已存在字段名]
“first”为可选参数,作用是将添加的字段置为第一个字段;“after”为可选参数,作用是将新添加的字段添加到指定存在的字段后面。
添加一个age字段:alter table user add age int(10) not null;
5、删除字段
语法格式:alter table <表名> drop <字段名>
6、删除表的外键约束
语法格式:alter table <表名> drop foreign key <外键约束名>
外键约束名指在定义表constraint关键字后面的参数。
7、更改表的存储引擎
MySQL的存储引擎有:MyISAM、InnoDB、HEAP、BDB等,可以使用show engines查看:
语法格式:alter table <表名> engine=<更改后的存储引擎名>;
demo:alter table user engine=innoDB;
8、删除表
语法格式:drop table [if exists] 表1,表2,......表n;
参数if exists用于删除前判断删除的表是否存在,加上该参数,再删除表时,如果表不存在则sql可以顺利执行,但会发出警告。