IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> C++ MySql -> 正文阅读

[大数据]C++ MySql

c++ 数据库基础 MySQL

请添加图片描述

请添加图片描述

数据库概述

数据管理技术的发展
人工管理阶段: 20世纪50年代中期
文件系统阶段: 20世纪50年代末~60年代中
缺点:
数据冗余
数据不一致
数据联系若

数据库阶段: 20世纪60年代末~至今
三大标志性事件:
1968年,IBM 推出基于层次模型的数据库系统 IMS
1969年,DBTG 发布了一系列报告
数据库和数据库的环境的标准的规范
1970年,IBM 研究院 E.F.Codd发表论文,首次提出关系模型的概念

特点:
采用复杂的结构化的数据模型
最低的冗余度
较高的数据完整性
多个方面的数据库控制功能:
并发控制
安全性
数据库的恢复
系统更加灵活

术语

数据(Data): 数据库存储的基本对象
数据库(Database): 是长期存储在计算机内、有组织、可共享的大量数据的集合
数据库管理系统(DBMS):介于用户和操作系统之间的一层数据库管理软件 科学的组织和存储数据、高效的获取和检索数据
数据库管理员(DBA)

主流的关系型数据库产品

层次、网状、关系型、非关系型
1.3.1 Oracle
1978年 Oracle 1版本
1.3.2. Microsoft SQL Server
1.3.3 DB2
IBM
1.3.4 MySQL
瑞典的MySQL AB
2008年被sun公司收购
2009年sun公司被Oracle收购

请添加图片描述
请添加图片描述

SQL语言

SQL(Structured Query Language):结构化查询语言
SQL分为:
数据查询语句(DQL): select
用来检索数据库中的数据。使用最广泛、语法最复杂灵活

数据操作语句(DML): insert update delete
用来改变数据库表中的数据

数据定义语句(DDL): create alter drop
用来创建、修改和删除数据库对象

事务控制语句(TCL): commit rollback savepoint
用来确保数据的一致性

数据控制语句(DCL): create user、grant、revoke
用来创建用户、权限的授予和回收等。

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

MySQL的特点

  1. 性能高效
  2. 跨平台支持
  3. 简单易用
  4. 开源
  5. 支持多用户

启动和停止服务

  1. 启动
    service mysql start

  2. 重启
    service mysql restart

  3. 停止
    service mysql stop

连接MySQL

  1. 语法
    mysql [ -h host ]  [-u user] [-p[passwd]] [db] [-P port]

配置【1】:mysql.cnf
character-set-server = utf8

或配置【2】 conf.d/mysql.cnf
[mysql]
default-character-set = utf8

验证:登录数据库
show variables like ‘%char%’ ;
在这里插入图片描述

客户端工具
其中
host: 要连接的服务器的主机名或ip地址 本机: 可以省略 或localhost 127.0.0.1
user: 登录名
passwd: 密码
db: 数据库名
port: 端口号 默认3306

  1. 示例
    mysql -h 10.10.5.2 -u root -p -P 3307
    mysql -u root -p

请添加图片描述

MySQL数据库管理

创建数据库

  1. 语法
    create database 数据库名;
  2. 示例
    – 创建"选课系统"数据库
    create database choose;

查看数据库

  1. 查看所有数据库的列表
    show databases;

  2. 显示指定数据库结构
    – 语法
    show create database 数据库名;
    – 示例
    show create database choose;

选择当前数据库

– 语法
use 数据库名;
– 示例
use choose;

删除数据库

– 语法
drop database 数据库名;
– 示例
drop database choose;

请添加图片描述

MySQL表管理

创建表

– 语法
create table 表名(
字段名 数据类型,

字段名 数据类型
);

示例
– 创建数据库
create database choose;

– 选择当前数据库
use choose;

– 创建表
create table stu_info( ID char(10), Name char(10), Score int );

查看表

  1. 查看当前数据库中表的列表
    show tables;

  2. 查看指定表的详细信息
    – 语法
    show create table 表名;
    – 示例
    show create table stu_info\G – \G表示纵向显示结果

  3. 查看指定表的表结构
    – 语法
    desc[ribe] 表名;
    – 示例
    desc stu_info;

删除表

– 语法
drop table 表名;
– 示例
drop table stu_info;

单行注释: – (后面必须有一个空格)
#
多行注释: /* */

请添加图片描述

MySQL表结构的管理

MySQL数据类型

数值类型

整数

tinyint 1字节
smallint 2字节
mediumint 3字节
int 4字节
bigint 8字节
如果使用无符号整数时,在数据类型后加unsigned
比如:
age tinyint unsigned

请添加图片描述

小数

浮点数:
float 4字节
double 8字节
精确小数:
decimal(len,p)
比如:
salary decimal(9,2)
请添加图片描述

字符串

char(n) 定长字符串 n最大为255
varchar(n) 变长字符串 n的取值和字符集有关

请添加图片描述

日期和时间类型

date 3字节 ‘YYYY-MM-DD’ ‘1000-01-01’~‘9999-12-31’
time 3字节 ‘HH:MM:SS’ ‘-838:59:59’~‘838:59:59’
datetime 8字节 ‘YYYY-MM-DD HH:MM:SS’ ‘1000-01-01 00:00:00’~‘9999-12-31 23:59:59’
请添加图片描述

创建表设置约束

语法
create table 表名(
字段名 数据类型[ 约束条件],

字段名 数据类型[ 约束条件]
[,其他约束条件]
)[其他选项(引擎、字符集)];

约束类型
1) 主键约束 primary key
主键字段的值不允许为空,不允许重复
一个表中只能有一个主键

2) 唯一约束 unique
不允许重复,允许为空

3) 非空约束 not null

4) 默认约束 default

5) 检查约束 check – 目前MySQL不支持 例:age int check(age>=18 and age<=60)

6) 外键约束 foreign key
references

请添加图片描述
请添加图片描述
请添加图片描述

约束的案例

主键约束
– 创建学生表,学号设置为主键
create table student( stu_no char(11) primary key, stu_name char(10) );

测试
– insert语句
insert into 表名[(字段列表)] values(值列表);
insert into student values(‘1’,‘张三’);

#错误 主键字段的值不允许重复
insert into student values(‘1’,‘张三’);

#错误 主键字段的值不允许为空
insert into student values(null,‘张三’);
select * from student;

#错误 一个表中只能有一个主键
create table exam( exam_time date primary key, exam_address char(10) primary key, course_name char(20) );

– 复合主键(组合主键)
create table exam(exam_time date, exam_address char(10), course_name char(20), primary key(exam_time,exam_address) );

– 测试
insert into exam values(‘2019-12-16’,‘一教’,‘高数’);
insert into exam values(‘2019-12-16’,‘二教’,‘概率’);
insert into exam values(‘2019-12-17’,‘一教’,‘英语’);
#错误
insert into exam values(‘2019-12-16’,‘一教’,‘高数’);

唯一约束
– 创建学生表,身份证号设置为唯一
drop table student;
create table student( stu_no char(11) primary key, stu_name char(10), uid char(18) unique );

测试
insert into student values(‘1’,‘张三’,‘12345’);
#错误 唯一约束字段的值不允许重复的
insert into student values(‘2’,‘李四’,‘12345’);
– 唯一字段的值允许为空,且可以有多个
insert into student values(‘2’,‘李四’,null);
insert into student values(‘3’,‘王五’,null);

非空约束
– 创建学生表,设置姓名为非空
drop table student;
create table student( stu_no char(11) primary key, stu_name char(10) not null );

– 测试
insert into student values(‘1’,‘张三’);
insert into student values(‘2’,null);

一个字段添加多个约束,顺序任意
stu_name char(10) not null unique

stu_name char(10) unique not null

默认约束
– 创建学生表,班级默认为’csd1909’
drop table student;
create table student( stu_no char(11) primary key, stu_name char(10) not null, classname char(20) default ‘csd1909’ );

– 示例
– 使用默认值
insert into student values(‘1’,‘张三’,default);
insert into student(stu_no,stuname) values(‘2’,‘李四’);

– 不使用默认值
insert into student values(‘3’,‘张三’,‘csd1908’);
insert into student values(‘4’,‘赵六’,null);

外键约束
外键约束用于定义表与表之间的关系
主表(父表):提供数据的表
从表(子表):外键所在的表
外键字段的值要么来自于主表的对应字段,要么为null

– 语法
constraint 约束名 foreign key(外键字段) references 主表(字段);

– 创建表,添加外键约束
1)先创建主表,然后再创建从表
– 创建班级表
create table classes( class_no int primary key, class_name char(15) );

– 创建学生表
create table student( stu_no char(11) primary key, stu_name char(10) not null, c_no int, constraint classes_student_fk foreign key(c_no) references classes(class_no) );

  1. 添加测试数据
    insert into student values(‘1’,‘张三’,null);
    #错误 违反了外键约束 主表classes中不存在class_no=1的数据
    insert into student values(‘2’,‘李四’,1);
    – 向班级表中插入测试数据
    insert into classes values(1,‘2018自动化1班’);
    – 正确
    insert into student values(‘2’,‘李四’,1);

  2. 删除表
    先删除从表,再删除主表
    drop table student;
    drop table classes;




创建表设置自增型字段

  1. 语法
    字段名 数据类型 auto_increment
    自增长字段的数据类型必须是整型,必须设置为主键
    auto_increment primary key

    primary key auto_increment

  2. 示例
    – 创建班级表,班级编号设置为自增长
    create table classes(class_no int auto_increment primary key, class_name char(15) unique not null );

-- **测试**
insert into classes(class_name) values('2018自动化1班');
insert into classes values(null,'2018计算机1班');

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 22:14:33  更:2022-03-17 22:16:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:59:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码