1,数据库的作用

(1)数据的保存:大量程序产生的数据在程序运行时和程序结束后对数据进行保存。

(2)数据的完整性:连接数据和数据之间的结构,连接数据和程序之间的依赖关系。

(3)数据的读取:为了使写入的数据更方便的进行读取。

(4)数据的安全性:防止因为外界因素所造成的数据丢失。

(5)结构化:数据在数据库中的储存可以依靠二维表结构的逻辑来储存数据,可以参考数据原有的依赖关系和机构关系去储存数据。

(6)独立性:储存在数据库的数据和应用程序之间相互独立,互不影响。

(7)共享性:多个用户可以共同分析计算机数据库中的数据资源,同一数据可以同时被多人使用,从而实现数据库高效共享性.

(8)安全性:访问数据库时对用户的口令,用户的权限进行限制,或者对数据的储存进行限制。

2,数据库的概念

长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”。

作用:存放、管理数据。

分类:关系型数据库、NoSQL数据库

3,MySQL数据库的特点

(1)操作便捷

(2)小巧,功能齐全

(3)免费,开源的数据库

(4)可运行与windows或linux系统

4,数据库结构

数据库(Database)
以文件的形式存放在磁盘上,即对应于一个或多个物理文件。
字段(Field)
也称域。表中的每一列称为一个字段。每个字段都有相应的描述信息。
索引(Index) 索引实际上是一种特殊类型的表,其中含有关键字的值和指向实际记录位置的指针,可以提高访问数据库的效率。
数据表(Table)
简称表,由一组数据记录组成,数据库中的数据是以表为单位进行组织的。一个表是一组相关的按行排列的数据;每个表中都含有相同类型的信息。
记录(Record)
表中的每一行称为一个记录,它由若干个字段组成。
SQL语句
结构化查询语句命令,用来从一个或多个表中获取一组指定的记录,或者对某个表执行指定的操作。

5,SQL语句分类

名称 解释 命令

DDL

(数据定义语言)

定义和管理数据对象,如数据库,数据表等。 CREATE 创建
DROP 删除
ALTER 修改

DML

(数据操作语言)

操作数据库对象中所包含的数据。 INSERT 插入数据
UPDATE 更新数据
DELETE 删除数据

DQL

(数据查询语言)

用于查询数据库数据
SELECT
查询

DCL

(数据控制语言)

用来管理数据库的语言,包括管理权限及数据更改
GRANT 授权
COMMIT 提交
ROLLBACK 回滚

6,DDL语句操作数据库

(1)创建数据库        CREATE DATABASE 数据库名称;

(2)删除数据库        DROP DATABASE 数据库名称;

(3)查看数据库        SHOW DATABASES;

(4)选择数据库        USE 数据库名称;

-- 创建数据库
CREATE DATABASE day001;
-- 删除数据库
DROP DATABASE day001;
-- 查看数据库
SHOW DATABASES;
-- 选择数据库
USE day001;

7,DDL创建数据库表

语法:

        CREATE TABLE [ IF NOT EXISTS ] `表名` (
                `字段名1` 字段类型 [ 属性 ] [ 索引 ] [注释] ,
                `字段名2` 字段类型 [ 属性 ] [ 索引 ] [注释] ,
                … …
                `字段名n` 字段类型 [ 属性 ] [ 索引 ] [注释]
        ) [ 表类型 ] [ 表字符集 ] ;
其中:"[]" 包含的内容可以省略
           "`" 当前符号为反引号,用于区别MySQL保留字与普通字符引入的。

8,数据库表的字段类型

字符处类型

类型 说明 取值范围 储存需求
char[(M)]
固定长字符串,检索快但费空间, 0 <= M <= 255
M字符
char[(M)]
varchar[(M)]
可变字符串,0 <= M <= 65535
可变长度 varchar[(M)]
tinytext 微型文本串
16777215长度+3个字节
tinytext
text
文本串(4个G左右大小)
4294967295长度+4个字节
text

char和varchar比较

类型 特点 空间上 时间上 使用场景
char(M) 固定长度 浪费储存空间 效率高 储存不大,速度要求高
varchar(M) 可变长度 节省储存空间 效率低 非CHAR的情况

数值类型

tinyint
非常小的数据
有符值: -2 ^7 ~ 2^7-1,无符号值:0 ~ 28-1
1字节
smallint
较小的数据
有符值: -2 15 ~ 215 -1 ,无符号值: 0 ~ 216 -1
2字节
mediumin
中等大小的数据
有符值: -2 23 ~ 223 -1 ,无符号值: 0 ~ 224 -1
int
整数
有符值: -2^31 ~ 2^31-1,无符号值:0 ~ 2^32-1
4字节
bigint
较大的整数
有符值: -2^63 ~2^63-1,无符号值:0 ~2^64-1
8字节
float
单精度浮点数
±1.1754351e -38
4字节
double
双精度浮点数
±2.2250738585072014e -308
8字节
Decimal
字符串形式的浮点数
decimal(m, d)
m个字节

日期和时间类型

类型 说明 取值范围 储存需求
DATE
YYYY-MM-DD,日期格式
1000-01-01~ 9999-12-31
DATE
TIME
Hh:mm:ss ,时间格式
-838:59:59~838:59:59
TIME
DATETIME
YY-MM-DD hh:mm:ss
1000-01-01 00:00:00 至 9999-12-31 23:59:59
DATETIM
TIMESTAMP
YYYYMMDDhhmmss格式表示的时间
197010101000000 ~2037年的某个时刻
TIMESTAMP
YEAR
YYYY格式的年份值
1901~2155
YEAR

9,数据库字段注释

        CREATE TABLE [ IF NOT EXISTS ] `表名` (
                `字段名1` 字段类型 [ 属性 ] [ 索引 ] [注释] ,
                `字段名2` 字段类型 [ 属性 ] [ 索引 ] [注释] ,
                … …
                `字段名n` 字段类型 [ 属性 ] [ 索引 ] [注释]
        ) [ 表类型 ] [ 表字符集 ] ;

10,查询创建的数据库表结构

方式一:describe 表名   或     desc       表名        
DESCRIBE teacher;
DESC teacher;

方式二:show create table 表名

SHOW CREATE TABLE teacher;

11,修改和删除数据库表

(1)修改表名 ALTER TABLE 旧表名 RENAME AS 新表名;

(2)添加字段 ALTER TABLE 表名 ADD 字段名 列类型 [属性];

(3)删除字段 ALTER TABLE 表名 DROP 字段名;

(4)修改字段

方式一:ALTER TABLE 表名 MODIFY 字段名 列类型 [属性];

方式二:ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型 属性;

(5)删除表 DROP TABLE 表名;

-- 修改表名
ALTER TABLE teacher RENAME AS laoshi;
-- 添加字段
ALTER TABLE teacher ADD t_phone CHAR(11) COMMENT '老师电话';
-- 删除字段(危险操作)
ALTER TABLE teacher DROP tea_name;-- 修改字段 替换式,不写就会使用默认值
-- 满足数据可以转换为修改的数据类型,长度满足修改的长度。-- 方式1:modify
ALTER TABLE teacher MODIFY t_phone CHAR(20);-- 方式2:change
-- alter table teacher change 旧字段名 新字段名 数据类型 属性;
ALTER TABLE teacher CHANGE t_phone dianhua CHAR(11) COMMENT '电话';-- 删除表(危险操作)
DROP TABLE teacher;

12,约束

概念:约束实际上就是表中数据的限制条件

作用:表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效

种类:

非空约束(not null)

唯一性约束(unique)

主键约束(primary key) PK

外键约束(foreign key) FK

检查约束(目前MySQL不支持、Oracle支持)

13,非空约束

概念:用not null约束的字段不能为null值,必须给定具体的数据

-- 非空约束
CREATE TABLE teacher2(t_name VARCHAR(10) NOT NULL DEFAULT '路人甲',t_age TINYINT
);

若字段为空则报错

14,唯一约束

概念:unique约束的字段,具有唯一性,不可重复,但可以为null

-- 唯一约束
-- 方式一:行级唯一约束
CREATE TABLE teacher3(t_name VARCHAR(10) UNIQUE,t_age TINYINT
);-- 方式二:表级唯一约束
CREATE TABLE teacher4(t_name VARCHAR(10),t_age TINYINT,
-- 表级约束给约束起名字CONSTRAINT uniqu_tname_tage UNIQUE(t_name,t_age) -- 联合唯一约束(一模一样,才算违反唯一约束)
);

如果字段相同则报错

15,主键约束

概念:主键(primary key)是表中的一个或多个字段,它的值用于唯一的标识表中的某一条记录

主键约束与“not null unique”区别
1,作为Primary Key的域/域组不能为null,而Unique Key可以。
2,在一个表中只能有一个Primary Key,而多个Unique Key可以同时存在。unique not null 可以将表的一列或多列定义为唯一性属性,而primary key设为多列时,仅能保证多列之和是唯一的,具体到某一列可能会重复。
3,更大的区别在逻辑设计上。Primary Key一般在逻辑设计中用作记录标识,这也是设置

Primary Key的本来用意,而Unique Key只是为了保证域/域组的唯一性。
注意:一张表应该有主键字段,如果没有,表示该表无效

主键值:是当前行数据的唯一标识、是当前行数据的身份证号,即使表中两行记录相关数据相同,但由于主键值不同,所以也认为是两行不同的记录。
-- 主键约束
-- 1,所有的表都必须有一个主键
-- 2,每张表只允许有一个主键
-- 3,被设置的主键的列不允许重复(唯一性)
-- 4,不允许为空(不能为null)
-- 5,一般作为主键的类型 INT,BIGINT,依次递增(auto_increment)
CREATE TABLE teacher5(t_name VARCHAR(10) PRIMARY KEY,t_age TINYINT
);CREATE TABLE teacher6(t_no INT PRIMARY KEY auto_increment,t_name VARCHAR(10),t_age TINYINT
);-- 表级主键
CREATE TABLE teacher7(t_email VARCHAR(20),t_passwd VARCHAR(10),t_name VARCHAR(10),PRIMARY KEY(t_email,t_name), -- 只能有一个UNIQUE(t_email),UNIQUE(t_passwd),UNIQUE(t_email,t_name)
);

16,外键约束

外键:外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。 若有两个表A、B,id是A的主键,而B中也有id字段,则id就是表B的外键。

A为基本表或父标,主表,B为信息表,子表,副表

定义:foreign key(表的字段名) references 父表表名(父表的字段名)

某个字段添加外键约束之后,该字段称为外 键字段,外键字段中每个数据都是外键值
-- 外键约束
-- 先创建父表,再创建子表
-- 外键数据是可以为空的
-- 添加数据的时候,先要添加父表的数据,再添加子表
-- 删除数据的时候,先要删除子表的数据,再删除父表的数据
-- 什么样的(父表)可以作为(子表)的外键(要么主键,要么唯一)CREATE TABLE A(id INT PRIMARY KEY auto_increment,a_name VARCHAR(10)
);
CREATE TABLE B(bid INT PRIMARY KEY auto_increment,b_name VARCHAR(10),id INT,FOREIGN KEY(id) REFERENCES A(id)
);

若添加外键数据的值主键不存在

17,约束的添加

添加非空约束 alter table 表名 modify 字段名 not null 
添加唯一约束 alter table 表名 add unique(字段名)
添加主键约束 alter table 表名 add primary key(字段名)
添加外键约束 alter table 表名 add constraint N1 foreign key(字段名) references 父表(父表字段名)
SHOW CREATE TABLE teacher;
CREATE TABLE `teacher` (`tea_age` int(11) DEFAULT NULL,`dianhua` char(11) DEFAULT NULL COMMENT '电话'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci-- 给tea_age添加非空约束
ALTER TABLE teacher MODIFY tea_age INT(11) NOT NULL;CREATE TABLE `teacher` (`tea_name` varchar(10) DEFAULT NULL,`tea_age` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci-- 给tea_name添加唯一约束
ALTER TABLE teacher MODIFY tea_name VARCHAR(20) UNIQUE;CREATE TABLE `teacher` (`tea_name` varchar(20) NOT NULL,`tea_age` int(11) NOT NULL,PRIMARY KEY (`tea_name`),UNIQUE KEY `tea_name` (`tea_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci-- 给tea_name添加主键约束
ALTER TABLE teacher MODIFY tea_name VARCHAR(10) PRIMARY KEY;CREATE TABLE `teacher` (`tea_name` varchar(10) NOT NULL,`tea_age` int(11) NOT NULL,PRIMARY KEY (`tea_name`),UNIQUE KEY `tea_age` (`tea_age`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

18,约束的删除

删除not null约束
alter table 表名 modify 列名 类型;
删除unique约束
alter table 表名 drop index 唯一约束名;
删除primary key约束
alter table 表名 drop primary key;
删除foreign key约束
alter table 表名 drop foreign key 外键名;
-- 删除tea_age的非空约束
ALTER TABLE teacher MODIFY tea_age INT(11);CREATE TABLE `teacher` (`tea_name` varchar(20) NOT NULL,`tea_age` int(11) DEFAULT NULL,PRIMARY KEY (`tea_name`),UNIQUE KEY `tea_name` (`tea_name`),UNIQUE KEY `tea_name_2` (`tea_name`),UNIQUE KEY `tea_age` (`tea_age`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci-- 删除tea_age的唯一约束
ALTER TABLE teacher DROP INDEX tea_age;CREATE TABLE `teacher` (`tea_name` varchar(20) NOT NULL,`tea_age` int(11) DEFAULT NULL,PRIMARY KEY (`tea_name`),UNIQUE KEY `tea_name` (`tea_name`),UNIQUE KEY `tea_name_2` (`tea_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci-- 删除表的主键
ALTER TABLE teacher DROP PRIMARY KEY;CREATE TABLE `teacher` (`tea_name` varchar(20) NOT NULL,`tea_age` int(11) DEFAULT NULL,UNIQUE KEY `tea_name` (`tea_name`),UNIQUE KEY `tea_name_2` (`tea_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

MySQL数据库(一)相关推荐

  1. .net连接mysql数据_.net连接MYSQL数据库的方法及示例!

    连接MYSQL数据库的方法及示例 方法一: 使用MYSQL推出的MySQL Connector/Net is an ADO.NET driver for MySQL 该组件为MYSQL为ADO.NET ...

  2. MySQL数据库+命令大全+常用操作

    格式:mysql -h主机地址 -u用户名 -p用户密码 1. 例:连接到本机上的MYSQL 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示 ...

  3. mysql数据库是一个软件呐_15款好用的mysql管理软件

    1. Induction Induction是一款用于理解数据关系的开源管理工具,它可用来探索行/列,运行查询和数据可视化等方面.该工具支持多种数据库,包括PostgreSQL,MySQL,SQLit ...

  4. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...

    这是精心收集的精品经典资料,值得下载保存阅读! c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual h ...

  5. C语言对mysql数据库的操作

    C语言对mysql数据库的操作 原文:C语言对mysql数据库的操作 这已经是一相当老的话题.不过今天我才首次使用,把今天的一些体会写下来,也许能给一些新手带来一定的帮助,更重要的是供自己今后忘记的怎 ...

  6. JDBC连接MySQL数据库及演示样例

    JDBC是Sun公司制定的一个能够用Java语言连接数据库的技术. 一.JDBC基础知识         JDBC(Java Data Base Connectivity,java数据库连接)是一种用 ...

  7. python用django连接mysql_三分钟了解Django如何连接Mysql数据库

    处理用户注册请求.Django连接MysqL数据库相关配置.数据库迁移命令: my_Dproject/app01/views.py    在views函数文件中添加register函数,来处理用户注册 ...

  8. mysql数据库比对视频教程_MySQL数据库全学习实战视频教程(27讲 )

    一)mySQL数据库简介:MySQL属于关系型数据库,是当前最流行的关系型数据库管理系统之一,在WEB项目使用方面,MySQL是最好的 RDBMS应用软件. 二)本mySQL数据库视频教程目录如下:  ...

  9. eclipse关闭mysql数据库,有关于用eclipse连接mysql数据库出现的问题以及解决办法

    写帖子是为了让更多的程序员减少再调试bug中的时间,也希望大家能一起把自己遇到的错误及解决方法写出来.我是一个刚开始学java的大二学生,用的是<java开发实战经典>.在写p646的程序 ...

  10. bd2和mysql语法区别,经验:在MySQL数据库中,这4种方式可以避免重复的插入数据!...

    最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下 ...

最新文章

  1. offsetof使用小结
  2. linux系统主要常见目录结构
  3. ps光效插件_全套光效PS插件(2019),只有你想不到的,没有它做不到的PS特效...
  4. java 反射 ppt_Java反射的基本使用
  5. html中contentEditable属性
  6. dpf linux安装db2_值得一看!数据库及Mysql入门,附详细安装教程
  7. input 上传图片_selnium远程机上传图片遇到的坑-布布扣
  8. rk3568 android 11 更换系统签名
  9. OpenCV 学习笔记-day14 图像几何形状绘制 (rect类 RotatedRect 类,rectangle绘制矩形 circle绘制圆形函数 line画线函数 ellipse画椭圆函数)
  10. H5页面调用手机扫一扫功能
  11. 盒形图pandas绘制方法及数据不等长、坐标倾斜问题记录
  12. P2P流量检测8个方向
  13. 简单理解通大查询下学期课表原理
  14. 手把手教你快应用接入微信H5网页支付
  15. 【Spark Core】【RDD】【01】核心属性 执行原理
  16. 【Linux】创建新用户 sudo配置,添加信任
  17. IT行业的各岗位职责[转]
  18. java 第六次实验_操作系统第六次实验报告——使用信号量解决哲学家进餐问题...
  19. 【码农教程】手把手教你Mockito的使用
  20. 怎么对比2个数据库的差异

热门文章

  1. 【计算专业】信息论框架下的自信息和信息熵
  2. 为什么要去科技创业公司呢?
  3. WiFi_日本认证测要求
  4. 路由器ttl刷机_10块钱的廉价中继路由器
  5. Simulink仿真运行实际时间
  6. 港科招生 | 香港科技大学(广州)2022年研究生自主招生简章
  7. 半高半长 PCIe 20G 以太网实 存储卡 K7
  8. NLP实践(新闻文本分类)-数据读取与数据分析
  9. R语言绘制Donut chart
  10. H.264 NAL层解析(0x00000001,编码,打包,NALU)