正常操作,正常分析,大家好,我是D1N910。本文是我学习【MySQL数据库】C++语言程序设计 - MySQL数据库所做的文字笔记。
【MySQL数据库】
P1 数据处理技术概述~1
(资料图片仅供参考)
数据处理技术的发展
人工管理阶段 20世纪50年代中期之前
文件系统阶段 20世纪50年代后期~60年代中期
数据库阶段 20世纪60年代末~至今
IBM大哥出的数据管理系统。1969年的时候,美国大哥出了行业的标准。1970年,IBM的大哥在ACM的刊物上发了关系模型的概念;
复杂度高;独立性高;冗余度低;
【相关术语】
数据(Data):
数据库中存储的基本对象,包括文字、图形、图像、声音等
数据库(Database):
是长期存储在计算机内、有组织的、可共享的大量数据的集合
数据库管理系统(DBMS):
是位于用户和操作系统之间的一层数据库管理软件
科学的组织和存储数据、高效的获取和维护数据
数据库系统(DBS):
是指在计算机系统中引入数据库后的系统构成,由数据库、数据库管理系统(及其开发工具).应用系统、数据库管理员(和用户)构成
【主流的数据库产品】
层次、网状、关系以及非关系型
关系型应用时间最长,运用范围最广。
本门课就是学习关系型数据库。
1、Oracle
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司出的管理系统。2016年,在全球占市场的40%,占国内市场的60%!
2、DB2
IBM DB2企业服务器版本,是美国IBM公司发展的一套关系型数据库管理系统。
环境为UNIX、Linux、IBM i、Z/OS,以及Windows服务器版本。
提出了 SQL 语言的前身
3、Microsoft SOL Server
Microsoft SOL Server是由美国微软公司所推出的关系数据库解决方案
4、MysQL
MySQL原本是一个开放源代码的关系数据库管理系统
SQL 语言
SQL是用于对存放在计算机数据库中的数据进行组织、管理和检索的SQL"是Structured Query Language的缩写.
SQL是和关系数据库交织在一起发展起来的。
1970 Codd定义关系数据库模式
1974 IBM开始其System/R计划1974 首篇文章描述SEOUEL语言
1986 批准ANSI SOL标准
1987 批准TSO SOI标准
SQL可分为:
数据查询语言( DQL) : Data Query Language
select
应用最广泛,语法最灵活最复杂,课程中花时间最多
数据操纵语言( DML): Data Manipulation Language
insert、delete、update
用来改变数据库中表中的数据
数据定义语言(DDL): Data Definition Language
create、alter、drop
创建、修改或者删除数据库对象,比如表、视图等等
事务控制语言( TCL) : Transaction Control Language
commit 、rollback、savepoint
为了维护数据库数据的一致性
数据控制语言( DCL): Data Control Language
grant、revoke、create user
用来进行创建用户等,对数据库进行管理的操作,课程中不多
P2 1.2 MySQL基础知识~1
MySQL的特点
性能高效
跨平台支持
简单易用
开源
支持多用户
进入MySQL
启动和停止MySQL服务
启动:service mysql start
重启:service mysql restart
停止:service mysql stop
连接MySQL服务器
语法
>其中
host: 主机名或IP地址
username: 登录名
pwd: 密码
dbname: 当前数据库
port:端口号
示例
> mysql -h localhost -u root -p information_schema 3306
>mysql -h 192.168.1.1 -u root -p
断开服务器连接 exit, quit
清屏 control + L (Mac)
可以不输入主机号,使用默认主机号
但是如果IP地址不一样,那么就要加
MySQL的管理
创建数据库
创建数据库的语法
其中:
dbname是新建数据库的名称
示例
创建选课数据库 choose
*注意,我们每行语句都要用分号作为结尾!
查看数据库
查看所有数据库
语法:
>其中 :
information _schema(定义了所有的数据库和数据库对象的信息)、performance_schema(收集mysql服务器的性能参数,方便数据库管理排查性能问题)以及mysql(配置账号数据等等)数据库为系统数据库。
choose数据库为刚刚新建的数据库显示指定数据库结构
>语法 :
>其中 :
dbname 是要查看的数据库的名称
选择当前数据库
语法
其中: dbname 是要设置的当前数据库的名称
示例
将choose数据库设置为当前数据库
这个是我们连接数据库的时候直接在后面加上数据库的名称有一样的作用
删除数据库
语法
其中: dbname 是要删除的数据库的名称
示例 :
数据库一旦删除,保存在该数据库中的全部数据丢失
03 MySQL 表管理
创建表的语法 create
e.g.
查看表
查看当前数据库中所有的表
show tables
查看指定表的表结构
desc[ribe] table_name
示例:
查看指定表的详细信息
show create table table_name;
示例 :
删除表
删除表的语法
drop table table name;
示例:使用SOL语句删除表student
删除表后,MySQL服务实例会自动删除表定义文件,以及数据、索引等
P4 1.3 表结构的管理(一)~1
MySQL只要支持5种整数类型: tinyint、smallint、mediumint、int和bigint
可以使用关键字“unsigned”对整数类型进行修饰(无符号)
取值范围:
tinyint 1字节
smallint 2 字节
mediumint 3 字节
int 4 字节
bigint 8 字节
小数类型
精确小数类型
decimal(length, precision)
length决定了该小数的最大位数
precision用于设置精度( 小数点后数字的位数 )
例如 : decimal(5,2)
浮点数类型
单精度浮点型 float 4字节
双精度浮点型 double 8字节
例如,定义工资字段salary,可以用 salary float unsigned
其中,unsigned用于约束工资不能为负数。
字符串类型
定长字符串: char(n)
最多容纳字符数: 255
变长字符串: varchar(n)
n的取值和字符集有关
示例
在表student中的student_name列的定义如下:
表示student_name列中最多可存储长度为10的字符串。
日期时间类型
date
3个字节
取值范围:‘1000-01-01'~’9999-12-31‘
格式:YYYY-MM-DD
datetime
8个字节
取值范围:'1000-01-01 00:00:00'~*9999-12-31 23:59:59
格式:YYYY-MM-DD hh:mm:ss
time
取值范围 :'-838:59:59' to838:59:59
格式:"hh:mm:ss' 或"hhh:mm:ss
创建表
语法约束
约束类型
主键约束 primary key 用标记唯一
非空约束 not null 创建数据不能为空
默认约束 default 创建时会有默认值
唯一约束 unique
外键约束 foreign key、references
1、主键约束 primary key(记得用括号包裹!)
`` 测试
单一字段作主键
直接在该字段的数据类型或者其他约束条件后加上关键字primary key
语法字段名 数据类型[其他约束条件] primary key
例如,将学生表student的student_no字段设置为主键,SQL语句如下
P5 1.3 表结构的管理(一)~2
多个字段组合作主键
如果想要创建多个字段组合起来作为组件,就要使用复合组件。
实际上就是在定义完所有字段后,加上逗号,另起一行然后加上去。
语法规则 :
例如,将(t1,t2)组合你test表的主键
约束实施
非空约束
》语法规则
直接在该字段的数据类型后加上关键字not null,语法o字段名 数据类型 not null
>示例
将学生表student的student_name字段设置为非空约束,SQL语句如下
这里 stu_no 是 primary key,所以 Null 是 No;stu_name 做了设置,所以 Null 是 No
`` 测试
默认值约束
语法
。直接在该字段的数据类型及约束条件后加上”default 默认值”即可,语法:
>示例
·将课程表course的status字段设置为默认值约束,且默认值为'未审核’,SQL语句如下:
将课程表course的up limit字段设置为默认值约束,且默认值为整数60,SQL语句如下:
如何使用默认值呢?
1、直接用不带单引导的 default 填充!
2、前置声明
唯一约束
》 语法
直接在该字段的数据类型后加上关键字unique
字段名 数据类型 unique
》如果某个字段存在多种约束条件,约束条件的顺序是随意的
》示例
将班级表classes的class_name字段设置为非空约束以及唯一性约束,就是可以为空。SQL语句如下
或者
下面跑一下
输入内容如下,可以发现unique成功了。
unique和primary key的区别在于,unique是允许为空值的,且可以有多个。
注意,多个空值在数据库中不是相等的概念,它可以是未定义,也可以是什么值都不是。即“空值等于空值”这个概念是错误的,这也就不会和unique1冲突了
未完待续,学习进度(5/42)
X 关闭
Copyright © 2015-2022 华中办公网版权所有 备案号:京ICP备12018864号-26 联系邮箱:2 913 236 @qq.com