管理数据库
创建数据库
创建数据库的语法:create database + 数据库名称;
例如:创建一个名为“test”的数据库。
标识符规范:
数据库名称在服务器中必须是唯一的,并且符合标识符规则。标识符就是用户编程时使用自己规定的具有特定含义的词的名字。其规范如下:
- 标识符由字符(A-Z,a-z)、数字(0-9)、下划线“_”组成,有字符推荐以字母或下划线开始。
- 不能使用数据库的关键字作为标识符。
- 标识符命名应做到“见名知意",不允许嵌入空格或其它特殊字符。
显示数据库
显示数据库的语法:show databases;
例:见“创建数据库例子”
删除数据库
语法:drop database + 数据库的名称
如删除上面例子建的“test”数据库:
数据类型
概念:数据类型是数据的一种分类,是按照数据结构来分类的。数据类型的出现是为了把数据分成所需内存大小不同的数据来进行存储。
数据库可分为五种数据类型:
- 整数数据类型
- 浮点型数据类型
- 字符串数据类型
- 时间日期数据类型
- 二进制数据类型
详情如下表:
管理表
连接数据库
连接数据库既是使用数据库。
使用数据库的语法:use + 数据库名称
创建表
创建表的语法:
create table + 表名(列名1 + 列1的数据类型 + 列1的约束 , 列名2 + 列2的数据类型 + 列2的约束 , ············);
例如:建一个“t_student”表:
注:
- 表为在一个数据库中必须是唯一的,并且符合标识符规则。列名在一个表内必须是唯一的。并且符合标识规则。列的数据类型决定了什么样的数据可以存储在列中,而列的约束定义了创建列时的限制条件。
- 列后面的约束有则加,无则不管
- 上面“desc t_student”(desc + 表名)是查询表的详情。
修改表
- 改表名:
语法:alter table 原表名 rename 新表名;
如将上面的“t_student”改名为“t_teacher”:
- 添加列
语法:alter table 表名 add 列名 列的数据类型;
如为t_teacher 表添加列age:
修改列
语法:alter table 表名 change 原列名 + 新列名 + 新列的数据类型;
如把sex列的“sex”改为“gender”:
- 删除列
语法:alter table 表名 drop 列名;
如删除“t_teacher”中的gender列:
- 删除表:
语法:drop table 表名;
如删除表“t_teacher”:
- 删除数据库:
语法:drop database 数据库名;
例如:删除数据库“test”。
数据的完整性
- 数据完整性的意义:
为了防止错误信息,垃圾数据的产生,从而影响数据库的执行效率,所以我们要保证数据的完整性。
- 数据完整性的表现形式:
精准性 + 可靠性 = 数据的完整性
-
数据完整性的分类:
-
实体完整性
实体完整性就是指 表中行的完整性 。要求表中的 每一行都有唯一的标识符 。
实现实体完整性的方法:主键约束;唯一约束。 -
域完整性
域的完整性指列的值域的完整性。数据库表中的列必须满足某种特定的数据类型或约束。它保证了表中列不能输入无效的值。
实现域完整性的方法:数据类型;非空约束;默认约束;检查约束(注:MySQL不支持检查约束) -
引用完整性
实现数据的引用完整性方法 :外键约束 -
自定义完整性
自定义完整性指针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
-
主键约束
- 定义: 主键约束是在表中定义一个主键,在主键上加一个约束后来确定表中每一行数据都是唯一的。(注意:主键列为唯一且非空,一个表只能有一个主键约束)
- 设置主键约束的方法:
- 建表时创建:(两种方法)
语法①:create table 表名 (列名1 + 列1的数据类型 + primary key,列名2 + 列2的数据类型,·············)(既:在主键后加上“primary key”)
语法②:create table 表名 (列名1 + 列1的数据类型 ,列名2 + 列2的数据类型,·············列名n + 列n的数据类型,primary key(列名i))(列名i为要设置的主键)
- 建表后添加主键约束:
alter table 表名 add primary key (主键名)
删除主键约束
语法:alter table 表名 drop primary key
唯一约束
设置唯一约束的方法:
- 建表时直接添加唯一约束:
语法:create table + 表名 (列名1 + 列1的数据类型 + unique,列名2 + 列2的数据类型,·············)
- 表建好后添加唯一约束:alter table
表名
add unique(列名
);
删除唯一约束
语法:alter table 表名 drop index 索引名
(当我们在创建唯一约束的时候,sql会自动将唯一约束列的列名默认为索引,所以我们删除唯一约束时,实际是删除索引)
非空约束
设置非空约束
创建表时:
语法:create table + 表名 (列名1 + 列1的数据类型 + not null,列名2 + 列2的数据类型,·············)
实现非空约束(表建好后加入):
语法:alter table 表名 change 原列名 新列名 数据类型 not null
删除非空约束
alter table 表名 change 原列名 新列名 数据类型
默认约束
实现默认约束方法
健表时添加默认约束语法:create table + 表名 (列名1 + 列1的数据类型 + default ‘默认值’,列名2 + 列2的数据类型,·············)
建表后添加默认约束:alter table 表名 change 原列名 新列名 数据类型 default 默认值。
删除默认约束
语法:alter table 表名 change 原列名 新列名 数据类型
外键约束
创建外键约束
外键是建立在两张表之间的,外键约束是一个表的外键去引用另一个表的主键,外键实则就是将两张表之间建立起联系。
创建外键约束的步骤:
一、为从表添加外键列(列名一般命名为主表的主键列名,这么做的原因是:为了方便我们一看到就能明白它们之间有联系):
语法:alter table 从表表名 add 外键列名 数据类型 not null
(注意:这里的数据类型应和主表的主键列的数据类型一样)
二、实现外键约束:
语法:alter table 表名 add constraint 外键约束名 foreign key(外键的列名)references 主表名称(主键列名)
删除外键约束
语法:alter table 表名 drop foreign key 外键约束名称
删除有外键约束的表:
在删除有外键约束的表时,一定要先删除从表,再删除主表。
当然还有一种办法就是先删除外键约束,然后再山删除表。
例子:
现在有两张表,一张学生表(t_student),一张班级表(t_class)。一个班级可以有多个学生,所以学生与班级的关系是一对多的关系
第一步:为学生表添加外键列:
第二步:实现外键约束
删除外键约束:
删除表:
在删除主键后删除表:
外键与外键约束的区别
- 外键是用来表示表与表之间联系的,是表中的一个列。
- 外键约束是指在外键列上加上一个约束,强制外键列引用数据时正确的。
- 注意:没有建立外键约束不等于没有外键,要建立外键约束就必须先建立外键。
修改数据的完整性
- 添加唯一性:Alter table 表名 add unique (列名);
- 删除唯一性:alter table 表名 drop index ? ;
- 创建索引: create index 索引名 on 表名 (列名);(索引具体的在后面会有)
- 显示表的索引:show index from 表名;
- 删除索引:alter table 表名 drop index 列名;
- 实现非空约束:alter table 表名 change 原列名 新列名 数据类型 not null ;
- 删除非空约束:alter table 表名 change 原列名 新列名 数据类型 ;
- 实现默认约束:alter table 表名 change 原列名 新列名 数据类型 default 默认值;
- 删除默认约束:alter table 表名 change 原列名 新列名 数据类型;
- 添加外键约束:alter table 表名 add ;
- 删除外键约束:alter table 表名 drop foregin key 列名;
这里我们就不一一举例了。