数据库-数据库基础2-MySQL数据库中建表
一、常见的数据库
1、Oracle
- 应用广泛、功能强大,分布式数据库系统
- 可移植性好
2、MySQL
- 开源、免费、与PHP组成经典的LAMP组合
- 快速的、可靠的和易于使用
3、SQL Server
- Web上最流行的用于存储数据的数据库
- 易用性好但只能在Windows上运行
二、MySQL数据库简介
MySQL数据库是一种关系型数据库管理系统,是一种开源软件由瑞典MySQL AB公司开发,08年1月16日被Sun公司收购,09年Sun公司又被Oracle公司收购。
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了减少网站总体拥有成本而选择了MySQL作为网站数据库。
- 优点:体积小、速度快、成本低、开源、可以和开发语言结合,可移植性(跨平台),可以在不同的操作系统中使用(轻量级数据库)
三、MySQL数据库操作
1、查看现有数据库
使用show databases;
2、新建自己的数据库
使用create database 数据库名称;
3、删除自己的数据库
使用drop database 数据库库名称;
四、MySQL中建表
1、表中字段的数据类型
大致分为三类:数值、日期/时间、字符串(字符)类型
1)数值型
整数类型:int
小数类型:decimal
小数格式:decimal(总长度,小数位)同float double
2)日期和时间
datetime: YYY-MM-DD HH:MM:SS
date:YYYY-MM-DD
timestamp:时间戳,不规定格式
3)字符串
字符和字符串:字符是单个的单引号的CHAR,字符串是多个(长度>=1)的双引号的VARCHAR。
char:(括号内指定字符串的长度) 定长(如果未填满,系统不会释放空间,而是用空格填满)
varchar:(括号内指定字符串的长度) 变长(如果未填满,系统将剩余空间释放)
2、创建表
1)数据库创建表方式和原则
- 表的创建语法
create table 表名(
属性名1 数据类型 [约束条件],
属性名2 数据类型 [约束条件],
属性名3 数据类型 [约束条件]
); - []中的内容为可选内容
- 最后一个属性后没有逗号
切换数据库:use 数据库名称;(进入这个数据库中)
数据库中注释:- - 注释的内容
多行注释:/* 多行注释的内容 */
3、查看数据库中的表
使用show tables;
4、显示表结构
desc 表名;
或者:show columns from 表名;
或者:describe 表名;
或者:show create table 表名;
5、删除表
- 语法:drop table 表明;
- 删除多个表:drop table 表名1,表名2……
6、修改表
1)添加或删除列
- 添加列(属性):alter table 表名 add 属性名 数据类型;
- 删除列(属性):alter table 表名 drop 属性名;
2)修改属性
- alter table 表名 modify 属性名 数据类型;
3)修改字段名
- alter table 表名 change 旧字段名 新字段名 数据类型;
五、数据的完整性约束
1、数据的完整性约束
数据的完整性:指的是数据库中的数据的准确性和可靠性
2、实体完整性
- 实体完整性是指关系中的记录唯一性
- 定义表中的所有行能唯一的标识
- 表中主属性不能为NULL且不能有相同值
- 一般用主键、唯一索引、unique关键字来实现
1)主键约束
(1) 单一主键约束
- 主关键字(primary key)唯一,不重复,不能为空
- 一个表中有且仅有一个主键约束
i、创建表的同时创建主键约束
- 格式一:
- create table 表名(
列名 数据类型 primary key,
列名2 数据类型
)
- create table 表名(
- 格式二:
- create table 表名(
列名1 数据类型,
列名2 数据类型,
constraint 主键约束的名字 primary key(列名1)
) - 主键约束的名字写法:PK_列名(可以是任意字母或者汉字)
- create table 表名(
- 格式三:
- create table 表名(
列名1 数据类型,
列名2 数据类型,
primary key(列名1)
)
- create table 表名(
ii、针对已经存在的表
- 格式一:
alter table 表名 modify 列名 数据类型 primary key; - 格式二:
alter table 表名 add primary key(列名); - 格式三:
alter table 表名 add constraint 主键约束的名字 primary key(列名);
iii、删除主键约束
格式:alter table 表名 drop primary key;
(2)联合主键
i、创建表的同时创建联合主键
指的是把两个列看成是一个整体,这个整体式不为空、不重复、唯一的
- 格式一:主键约束的名称: pk_列名
create table 表名(
列名1 数据类型,
列名2 数据类型,
constraint pk_列名1 primary key(列名1,列名2)
); - 格式二:
create table 表名(
列名1 数据类型,
列名2 数据类型,
primary key(列名1,列名2)
);
ii、针对已经存在的表,添加联合主键
- 格式一:
alter table 表名 add primary key(列名1,列名2); - 格式二:
alter table 表名 add constraint 主键约束的名字 primary key(列名1,列名2);
2)唯一约束 unique
- 唯一约束是指定table的列或列组合不能重复,保证数据的唯一性
- 唯一约束不允许出现重复的值,但是可以为多个null
- 同一个表可以有多个唯一约束,多个列组合的约束
- 如果不给唯一约束名称,就默认和列名相同
- MySQL会给唯一约束的列上默认创建一个唯一索引
索引:等同于书本的目录,为了加快数据的查询
(1)创建表的同时创建唯一约束
- 格式一:唯一约束名称(两个唯一玉树的名称不可以相同):UN_列名
create table 表名(
列名1 数据类型,
列名2 数据类型
constraint 唯一约束的名称 unique(列名1),
constraint 唯一约束的名称 unique(列名2)
); -
格式二:通用格式
create table 表名(
列名1 数据类型 unique,
列名2 数据类型 unique,
列名3 数据类型
);
(2)针对已经存在的表,添加唯一约束
格式:alter table 表名 add unique(列名);
alter table 表名 add unique(列名1,列名2);
(3)删除唯一约束
格式:alter table 表名 drop index 唯一约束的名字;
3、域完整性
- 域完整性是对数据表中字段属性的约束
- 它是由确定表结构时所定义的字段的属性决定的
- 限制数据类型,缺省值(默认值),规则,约束,是否可以为空
- 域完整性可以确保不会输入无效的值
默认约束,非空约束
1)默认约束- default
当默认约束来修饰某个列时,修饰的列即使不填写也会有一个默认值在里面
i、创建表的同时创建默认约束
通用格式:
create table 表名(
列名1 数据类型 default ‘字符串类型/日期类型的默认值’,
列名2 数据类型 default 数值,
列名3 数据类型
);
ii、针对已经存在的表,添加默认约束
格式:alter table 表名 modify 列名 数据类型 default ‘值’;
iii、删除默认约束
不是删除字段,只是修改字段使之没有默认约束,所以使用modify
格式:alter table 表名 modify 列名 数据类型;
2)非空约束-not null
当前列必须有值
i、创建表的同时创建非空约束
格式:
create table 表名(
列名1 数据类型 not null,
列名2 数据类型 nut null,
列名3 数据类型
);
ii、针对已经存在的表,添加非空约束
同默认约束,使用modify
格式:
alter table 表名 modify 列名 数据类型 not null;
iii、删除非空约束
同默认约束,使用modify
格式:
alter table 表名 modify 列名 数据类型;
4、参照完整性
- 指表与表之间的数据参照引用
- 使用外键约束实现
1)外键约束-foreign key
- 外键是构建于一个表的两个字段或是两个表的两个字段之间的参照关系
- 表的外键值必须在主表中能找到
- 当主表的记录被从表参照时,主表的记录将不允许删除
- 如果要删除数据,需要先删除从表中依赖该记录的数据
从表的某个列参照主表的某个列:
- 从表中想要进行数据的操作,必须先问主表的意见,主表有的数据,从表可以做操作;主表中没有的数据,从表不能做操作。并且参照的两个字段类型和内容必须相同
- 一旦主表中的某条记录,被从表给参照,主表中的记录没办法进行删除。
- 如果确实想删除引用的数据,必须先删除从表的数据,再来删除主表。
- 从表参照主表的某个列,要求主表的列必须有主键约束或者唯一约束。
i 、创建表的同时创建外键约束
-
主表(接下来再建新表时,要参照的表):
create table 表1(
列名1 数据类型 primary key,
列名2 数据类型
); -
从表(外键约束所在的表):
外键约束的名字: FK_列名
create table 表2(
列名1 数据类型,
列名2 数据类型,
constraint 外键约束的名字 foreign key(从表的列名1) references 主表的表名(列名1)
);
注意:
关于引用的列要求:从表的列和主表的列,列名可以不一样,但是这两个列的数据类型和内容必须保持一致
ii、针对已经存在的表,添加外键约束
格式:
alter table 从表表名 add constraint 外键约束的名字 foreign key(从表列名) references 主表表名(主表列名);
iii、删除外键约束
格式:
alter table 从表表名 drop foreign key 外键约束的名字;
本文地址:https://blog.csdn.net/ANingL/article/details/108959932
上一篇: pymysql查询查询结果转换json
下一篇: 作业四