MySQL8.0数据库原理与应用课堂笔记

第一章 数据库概述

一 学习环境介绍

1.Windows 10/11 非家庭版 内存8g

2.Vmware workstation 16.0

3.LAMP--Linux Aparche mysql PHP

LNMP--Linux nginx mysql PHP

WAMP--Windows Aparche mysql PHP

WNMP--Windows nginx mysql PHP

注意:Windows是非客服端操作系统,而是服务器版的server

4.一台 Windows server 2019

二台 Linux

二 数据库系统概述

1.数据Data:凡是能被计算机处理的东西,如字母,数字,汉字,符号。声音。图片。动画等均认为数据

2.信息information: 数据---数据处理---信息 对人们的决策有帮助作用的有用数据

3.数据处理:将数据转变是信息的过程

4.数据库Database:数据的仓库,容器级别的概念,存放数据库对象的容器

5.数据库系统的组成:数据库管理系统简称为(Database System)是由数据库Database,数据库管理系统DBMS、数据库管理员DBA,数据库应用系统DBAS和计算机硬件五部分组成

6.数据库管理系统 DBMS: Mysql Server 2019、Microsoft Access、 VFP、 Mysql、 Oracel、 DB2等属于软件系统

7.数据库应用管理系统DBAS:教务管理系统、一卡通消费系统、进销存管理系统、OA办公自动化系统等、属于应用软件

三 数据库发展史---数据处理的历史

1.从人工管理阶段 20世纪40、50年代,磁带,纸带等存储设备相对落后,数据处理也比较落后

2.文件系统阶段 20世纪50、60年代,磁盘,文件系统FAT16、FAT32、NTFS、EXT、相比人工管理阶段而言有进步,存在大量的冗余(重复)数据,数据独立性差

3.数据库系统阶段 20世纪60年代中后期,降低了数据的冗余度后,提高了数据的独立性,数据与程序是分开存在的

提示:一定不是消除了冗余

四 数据库系统三级模式和两级映像

1.模式:学生表(学号、姓名、性别、年龄)

2.内模式:excel 工作簿存放在计算机什么位置

3.外模式:视图,从学生表中查询年龄小于18并且性别是女的学生信息

外模式/模式

模式/内模式

五 数据模型

1.层次模型:组织结构图

2.网状模式:地图

3.关系模型:用二维表的方式表示实体和实体集之间关系的一种模型

4.实体:客观存在的并且可以相互区别的事物,如:一个人,一本书,一枝花,一首歌

5.实体集:实体的集合 个人是实体,一群人是实体集

6.属性:二维表中每,列的名称,描述实体自身属性,特性的字段,如学生表(学号,姓名,性别)中的学号,姓名,性别,都是属性

7.概念模型:将客观世界的事物抽象为计算机可以识别的事物过程

8.实体之间的关系

a.一对一:班级与班长 一夫一妻

b.一对多:班级与学生

c.多对多:图书与学生 老师与学生

9.E-R图 E=实体 R-关系

矩形表示实体

椭圆表示属性

菱形表示关系

10.关系模型的相关概念

a 元组:二维表的每一行,除了第一行--也称为记录

b 属性:二维表中的每一列,只有第一行--也称为字段

c 关系:用二维表的方式来表示实体及实体集之间关系的一种模型(E-R模型 实体关系)

d 实体:客观存在的,可以相互区别,与面向对象程序设计中的对象的概念相同的

e 关系模型 一对一,一对多,多对多

f 实体集:实体的集合

f主键:在一个表中至少应该有这样一个字段,这个字段所对应的值一不能有空值(NULL值:不确定的值1),二不能有重复,这个字段,所对应的值能够起到唯一标识表中记录的作用,这个字段就是称为主键字 primary key

g 外键: 在一个表中某一个字段,它不是本表的主关键字


1.下载Mysql (.msi安装包、.zip安装包)

2.Windows Server上安装、Linux系统上安装

3.mysql 安装完成后的状态

①Windows+R--services.msc

a.鼠标方式 b.命令方式 mysql服务启动与停止

②win+r→cmd→net stat -an 用来看mysql数据库的 端口 3306

4.连接mysql 数据库--本地登录mysql

win+R→cmd→cd c:\program Files\Mysql\Mysql Server 5.1\bin mysql -u root -p

密码root

注意:c:\program Files\Mysql\Mysql Server 5.1\bin mysql下载哪里从哪里找

cd与路径之间必须有一个空格

select version(); 查看版本

sclect user();查看当前登录用户

create user hector@'127.0.0.1' indentified by'abc..123';

创建一个用户

grant all privileges on *.* to hector@'127.0.0.1' with grant option;

给hector@'127.0.0.1'用户赋权值

5.使用图形化界面工具 navicate for mysql 连接mysql--本地登录

第二章笔记

一、Vmware虚拟机介绍与学习环境规划

1、什么是虚拟机?

虚拟机(virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统,

虚拟机系统是一个操作系统镜像,它具有与真实windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立环境上进行,可以独立安装应用软件、保存数据、拥有自己的独立桌面,不会对真正的系统产生影响,而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作系统。

流行的虚拟机厂家有Vmware、Oracle virtual box、微软virtual PC等,它们都能在windows系统上虚拟出多个计算机(windowsЛinux)。

2、使用虚拟机的好处有哪些?

演示环境,可以安装各种演示环境,便于做实验…-实验、学习环境申保证主机的快速运行,减少不必要的垃圾安装程序,偶尔使用的程序或者测试的程序可以在电廖拟机上运行

避免每次重新安装操作系统

体验不同版本的操作系统,如Mac-OS、Linux、windowsserver

3、Vmware workstation虚拟机介绍

Vmware workstation中文名威睿工作站。是一款功能强大的桌面虚拟化软件,提供用户可以在单一桌面上运行不同的操作系统,和进行开发、测试、部警新的应用程序的最佳解决方案。

Vmware workstation收费,非开源

4、实战内容

Vmware Workstation安装与配置

①官方网站下载www.vmware.com/cn

②提示:如果检查产品更新,会从官网下载最新安全补丁;

加入客户体验会造成个人信息泄露

二、Vmware安装windows server 2019或windows server 2016、

①在“此电脑”非系统盘如E盘或F盘,新建一个虚拟机系统目录Vm-Server (E:\VM-Server)

②步骤

文件..>新建虚拟机-->“自定义

③安装windows server 2019

④windows server 2019激活与优化

a.安装vmware tools

b.显示windows server 2019的桌面图标:桌面空白处-->右键-->个性化-->主题-->桌面图标

c.激活windows server 2019

提示:先要给新装的操作系统安装必要的工具软件如winrar、office等常用工具

Vmware安装CentOS Linux

①新建虚拟机

②将系统光盘镜像文件插入光驱中

③安装操作系统

提示:KUMP内核崩澳选项将其禁用;安装时选择GUI带图形画界面linux系统,生产环境中可以选择最小化安装。

第三章笔记

一、MySQL简介

1.介绍

1.1 什么是数据库?

数据库:Database,按照数据结构来组织、存储和管理数据的仓库,简单来说就是存储数据的仓库。------用来存放数据库对象(表、视图、函数、存储过程等)的一个容器。

数据库管理系统DBMS:用来管理数据的系统软件,常见:MySQL、Oracle、MSSQLServer、DB2、Sysbase、Access等数据库系统的组成:数据库和数据管理系统。

1.2 什么是MySQL?

MySQL:是一个开源的关系型数据库管理系统。由瑞典MySQL AB公司开发,后来被Oracle公司收购,所以目前属于Oracle公司

特点:体积小、速度快、成本低、开源(源代码是开放的),中小型网站都使用MySQL数据库。

版本:企业版Enterprise(收费的)、社区版community(免费的)

DBA:Database Administrator数据库管理员

二、实战部分

1、准备-台windows server 2019的主机

2、安装windows server 2019

3、下载mysql 8.0版本

MySQL :: MySQL Community Downloads

4、MysqI8.0数据库配置

①Mysql server 8.0.39数据库服务器配置

②Mysql router 8.0.39读写分离的配置

③数据库实例配置

注意:使用8.0密码策略,要选择“高级认证“方式出错。

5、MysqI8.0数据库管理入门

修改root密码

说明:上述修改用户密码的命令中with mysql native password 是mysql 5.7的方式

允许root远程登录

三、MySQL登录与退出

1、MySQL登录

本地登录

mysql -u用户名(root) -p 密码 显式登录

mysql -u 用户名(root) -p 隐式登录 远程登录

mysql -h主机名或ip地址 -u 用户名(root) -p 密码

2、MySQL退出

3、当mysql8.0安装完成后的相关配置

查看mysqI服务

WIN+R-->运行-->services.msc

windows+R--->运行-->输入netstat -an

windows+R===>运行-->输入wf.msc

mysql服务的开启与停止

①鼠标的方式

windows+R--->services.msc-->mysql80-->右键-->启动或停止上

②命令的方式

初学者不建议修改

提示:若要修改配置文件my.ini,就需要重启mysqI服务

四、Mysql安装方式之配置方式

1、mysql卸载

控制面板

win+R-->运行-->输入control-->卸载程序-->与mysql有关组件-->卸载

安装包

双击mysql-installer-community-8.0.39.0.msi

2、用配置文件来安装mysql

[mysqld];

设置3306端口

port=3306

;设置mysql的安装目录

basedir "C:\mysql-8.0.39-winx64";

设置mysql数据库的数据的存放目录

datadir=C:\mysql-8.0.39-winx64\Data;

允许最大连按数

max connections=200

;允许连接失败的次数,这是为了防止有人从该主机试图攻击数据库系统

max connect errors=10

;服务端使用的字特集默认为UTF8

character-set-server=utf8

创建新表时将使用的默认存储引整

default-storage-engine INNODB;

默认使用“mysqlnative_password”插件认证default authentication

plugin=mysql native _password[mysql}

设置mysql客户端默认字符集

default-character-set utf8

[client]设置mysql

客户端连接服务端时默认使用的端口

port=3306

default-character-set=utf8

五、环境变量

右键-->此电脑-->高级系统设置-->环境变量-->path-->新建-->将mysql的安装目录bin路径放到path下即可。

六.、Mysql目录和配置文件

Mysql安装目录包括启动文件,配置文件,数据库文件和命令文件,具体如下:

bin目录:存放一些客户端程序和可执行脚本

data目录:存放一些日志文件以及数据库

docs目录:存储一些版本信息

include目录:存放一些头文件

lib目录:存放一些库文件

share目录:存储错误消息文件、字符集等

数据库的建立,删除,数据库,数据库表

1.虚拟机与物理机

学习存在的问题:概念阶段;

虚拟机①实现硬件基本功能②构造一个计算机硬件

2.操作系统类型

·客户端操作系统:Windows 95 ,Windows 98 ,Windows Me ,Windows 2000 ; Windows XP , Windows vista , Windows 7 , Windows 8 ,Windows 10 , Windows 11

·服务器操作系统:Windows serve NT(在客户端操作系统95-2000之间),Windows serve 2000(Windows 2000),Windows serve 2003(04,05年),Windows serve 2008(在Windows vista,Windows 7 时期),Windows serve 2012(Windows 8), Windows serve 2016、2019

3.网络的通信方式

·P2P

·C/S 客户端client,服务器server。

例如:微信(客户端应用程序),阿里旺旺,QQ,浏览器,支付宝

DNS 域名解析服务器;Loopback 环回适配器。

4.将Mysql数据库直接装在自己的电脑上

将配置的方式将Mysql 8.0直接装在自己的计算机上

5.建立数据库

·菜单 使用图形化工具Navicate连接Mysql→选择主机→右键→新建数据库→输入数据库|

·命令行

create database 数据库名;character set utf8 collate utf8_general_ci;

eg:

create database SchoolDB character set uft8 collate uft8_general_ci;

·设置环境变量

此电脑→右键→属性→高级系统设置→环境变量→系统变量→Path→编辑→新建→将复制后的路径粘贴

目的:解决在命令执行Mysql指令无需切换目录

6.删除数据库

·菜单

使用图形化界面Navicate连接Mysql→选择删除数据库→右键→删除数据库→删除

drop datebase; 数据库名

7.查看数据库

show datebases;#查看数据库

说明:数据库是容器,文件夹。

用户数据---数据库表(行,列)---数据库---Mysql实例中

8.①数据库的命名规范

数据库命令不能超出30个字符,并推荐使用下划线方式。

such as:SchoolDB、School_DB、DB_School、KY_CJ_DB

②数据库命令:一般为项目英文名称简写或者有意义的缩写

数据库创建时,必须指明字符集和字符序

uft8:uft8_general_ci;不区分大小写

uft8_general_cs;区分大小写

uft8_bin 二进制

uft8:属于Unicode编码 Unicode也叫万国码,统一码,单一码,一般用utf8mb4.

9.数据库设计规范

·控制单实例表个数在3w以内

·控制单库表的个数,建设单库表的个数 4096个表

·创建数据库语句中 必须指明字符集和字符序

10.如何查询创建数据库语句

show create datebase SchoolDB #更改数据库选项信息,生产环境下不能改

更改指令: alter datebase schoolDB charater set uf8mb4

第四章笔记

1、Mysql用户登录过程和管理mysql用户

1.1 Mysql8.0本地登录访问数据库

  • Mysql用户存储在mysql数据库的user表中,该表在mysq|服务启动时自动加载到内存,控制用户的登录。
  • 查看当前连接的mysq的用户

select user):

use mysql;

select user,host from user;

• 创建mysql用户账户

create user hector@'localhost';

• 为新建本地用户修改密码

alter user hector@localhost identified by 'abc..123;修改hector用户的密码

• 为新建本地登录账户赋权

grant all privileges on "." to hector®"localhost' with grant option;

create user hector;

select host, user from user:

  • 主机可以使用通配符,规则和标准的SQL语法中定义的完全相同
  • %表示任意长度的字符
  • _表示1位的任意字符
  • 设置hector@'localhost的密码为'abc..123'

alter user hector@'localhost identified by 'abc..123';

• 创建用户时指定密码

create user hector@'localhost' identified by 'abc..123';

• 练习:

创建1个新用户设置密码并实现本地登录,注意授权。

1.2 Mysql8.0远程访问数据库的设置

• 修改root密码

mysql -u root -p use mysql;

alter user 'root'@'localhost identified by 'abc..123

exit

alter user 'root'localhost' identified with mysql_native_password by 'abc...123';

•允许root远程登录

2、数据库命名规范

二、基本操作

1、连接Mysql

语法:

mysql -u 用户名-p密码 -h 数据库服务器的地址-D 数据库名

安装Mysql以后,默认有一个管理员root

  • 显示登录
  • 隐式登录

2、 查看数据库和表

show databases;--查看当前所有数据库

use 数据库名;---切换数据库

show tables;--查看当前数据库中的所有表

select user();-----显示当前登陆的用户

select database();----显示当前操作的数据库

mysql库属于系统数据库,包含mysql的相关系统信息,不要修改

3.导入初始数据

3.1导入数据

准备好1个以.sq|结尾的文件是数据库脚本文件

先连接登陆mysql数据库。然后执行如下命令:

source E:/init.sql;

3.2表结构

desc 表名;-----直看表结构

select *from 表名;------查看表中的所有记录

知识点:

表结构:只有列名称(属性)的空表

表记录:所有记录的集合

EMP表 雇员表

DEPT 部门表

SALGRADE工资等级表

bonus资金表

第五章笔记

一、Centos 8.4.2105系统下使用yum方式安装mysql 8.4

1、查看CenteOS系统版本

2、配置yum源(由于CenteOS默认yum源镜像链接有误无法直接进入第3步,所以需要更新配置yum源)

vim /etc/yum.repos.d/CentOS-Linux-AppStream.repo

[appstream]

name=CentOS Vault - AppStream

baseurl=http://vault.centos.org/8.4.2105/AppStream/x86 64/os/

enabled=1

gpgcheck=1

3、下载mysql源安装包

root@LinuxServer ~]# wget https://repo.mysql.com/mysql84-community-release-el8-

1.noarch.rpm

4、安装mysql源

下载完成后使用下面的命令安装源:

yum localinstall mysql84-community-release-el8-1.noarch.rpm

5、检查是否安装成功

使用yum repolist命令检查是否安装成功

6、安装mysgl

yum install -y mysql-server

7、安装成功,启动mysql

8、设置开机自动运行

9、查看mysql运行进程

ps -eflgrep mysql

10、为保证mysq|服务器可以远程访问,我们可以使用简单粗暴点的方法,直接将防火墙关闭,或者防火策略中放行3306端口的方式实现远程登陆。

在此我以关闭防火墙的方式实现。

firewall-cmd .-state

systemctl stop firewalld.service

systemctl disable firewalld.service

firewall-cmd .state

二、Linux中MySQL8.0用户管理和用户登录方式

1.登录

2.

三、CentOS Linux 7.6安装Mysql8.0

安装步骤

配置hosts文件

卸载主机自带的mysql

安装mysql8.0

设置环境变量

验证:环境变量

创建mysql用户和组,目录授权

配置参数文件

Mysql数据库初始化

配置CentOS linux启动和停止脚本

配置systemctl启动和停止方法

修改root密码

设置允许root用户远程登录

四、MySQL安装完成后远程登录

设置允许root用户远程登录

远程连接需要关闭防火墙

第六章笔记

三、SQL简介

SQL:Structured Query Languagee 结构化的查询语言,用来对数据库进行查询、更新和管理的一种特殊的语言。DML是SQL语言的核心。

包含三个部分:

  • DML

Data Manipulation language数据操纵语言

用于检索或更新数据库表:insert、delete、update、select增删改查

  • DDL

Data Defination language数据定义语言用于定义的数据的结构:create alter drop

  • DCL

Data Control language数据控制语言

用于定义数据库用户的权限:grant revoke

四、表和库的管理

1.数据类型

整数型:smallint、int bigint

小数型:float、double

日期时间:date、time、datetime、timestamp

字符串:varchar、char、text

其他:clob存储文本大数据

blod存储二进制大数据

2.创建表

语法:

示例:

3.修改表

  • 添加列

语法:

示例:

在t-student表中增加1名为weight体重字段,类型为双精度

  • 修改列的类型

语法:

示例:

将t-student表中name姓名字段的宽度修改为250。

  • 修改列名

示例:

将t-student表中的sex字段修改为gender。

  • 删除列

语法:

示例:

删除t-student表中的weight列(字段)。

  • 修改表名

语法:

示例:

将t-student表名修改为student。

4.删除表

语法:

示例:

删除test数据库中的t-user表?

5、截断表

清空表中的数据,作法类似于无条件的delete语句

语法: 

示例:

delete与truncate的区别:

- delete会记录日志,所以速度慢,而truncate不记录日志,清空表并释放资源,速度快

- delete可以指定条件只删除部分数据,而truncate只能用来清空表中所有数据

- delete不会将自动增长列归零,而truncate会使自动增长的列如id列归零

6.创建库

语法:

示例:

7、删除库

语法:

示例:

第七章笔记

7.1彻底搞定MySQL的乱码问题

1.什么是乱码?

乱码是指由于编码、解码过程中的不匹配或错误,导致文本或数据在显示或解读时出现无意义、混乱或不可读的字符序列。简单来说,当你打开一个文件或接收一段信息时,如果看到的字符不是预期的文字,而是一串无法理解的符号或乱码,这通常意味着信息的编码方式与你所使用的解码方式不一致。

7.2预备知识

——字符 character  eg:abcd 1234,.()

——字符集合:charset一组字符

ASCII字符集合(7bit,最高位是0),标准的——可打印的

扩展Ascii字符集合(8bit)  拉丁语系,扩展----不可打印的字符  

 GB2312   简体中文

 BIG5   繁体中文

 GBK   包含简体中文和繁体中文

- 字符编码  给字符集合中的每1个字符指定1个二进制数字来标识。

- 字符集:字符集合+编码=字符集

- 字符序:字符的排序规则   1个字符集,可以有多个排序规则即多个字符序

以_ci结尾,大小写不敏感,不区分大小写

以_cs结尾,大小写敏感,区分大小写

7.3常见的字符集

- Ascii字符集

- 扩展Ascii字符集   latin1   8位二进制  包括Ascii字符集中的全部字符

-GB2312  BIG5  GBK    16位二进制 

-unicode  字符集  全球语言  16位二进制

- 扩展Ascii字符集  latin1  latin2

- unicode字符集    unicode编码   一个字符2个字节

                           utf8    一个英文字符  占一个字节

                                    一个中文字符使3个字节

-utf8mb3   utf8mb4    more bit

- utf-8是一种变长的字节编码方式,对于某一个字符的utf-8编码,如果只有一个字节则其最高位二进制位为0;如果是多字节,其第一个字符节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头,utf8最多可以用到6个字节。

示例:

1字节   0xxx xxxx

2字节   110x xxxx 10xx xxxx

3字节   1110 xxxx 10xx xxxx 10xx xxxx

4字节    1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx

5字节    1111 10xx 10xx xxxx 10xx xxxx 10xx xxxx 10xx xxxx

6字节    1111 110x  10xx xxxx 10xx xxxx 10xx xxxx 10xxxxxx 10xx xxxx

1110 01011000 1000 1001 1010

E58896

A

0100 0001

41

示例:

新建文本文件,使用utf-8编码来保存,验证字符的字节数。

GBK字符集,一个英文占1个字节,一个汉字占2个字节。

7.4mysql支持的字符集

语法:show character set;——查看mysql支持的字符集

show variables like'character_set%'_%’;——查看学前mysql字符集

character_set_client客户端字符

character_set_connection连接字符集

character_set_database数据库字符集

character_set_results返回结果的字符集

character_set_server服务器字符集

character_set_system系统字符集

创建数据库时,如果没有指定数据的字符集,则会使用服务器字符集。

创建表时,如果不指定表的字符集,则会使用数据库字符集。

创建表中字段时,如果不指定字符段的字符集,则会使用表的字符集。

7.6设置mysql字符集

7.6.1查看服务器和客服端字符集

show variableslike'character_set_%';查看默认字符集

7.6.2修改mysql默认字符集

l  临时修改

set names字符集名称;——临时修改

——提示:此方法可以临时修改3个字符集

character_set_client

character_set_connection

character_set_results

set character_set_database=utf8;使用此方法分别修改

l  永久修改——修改配置文件

windows server my.ini

linux my.cnf

重要提示:修改配置文件后,必须重启mysql服务

net start mysql;

net stop mysql;

7.7指定数据库和表以及字段的字符集

7.7.1创建数据库时,指定数据库的默认字符集

create database dbdefault charset lantin1;

7.72创建表时,指定表的默认字符集

create tablestudent(sid int,sname char(30))default charset utf8;

7.73创建列(字段)时,指定列(字段)的字符集

create tablestudent1(sid int,sname char(30),address char(20) character set latin1)defaultcharset utf8;

回忆:

l  创建数据库时,如果不指定默认字符集,就会使用服务器字符集character_set_server

l  创建表时,如果不指定表的默认字符集,就会使用数据库字符集

character_set_datbase

l  创建列时,如果不指定列的字符集,就会使用表的字符集

7.8修改数据库、表和列的字符集

7.8.1修改数据库的字符集

语法:

alter database dbcharacter set'lantin1';

结论:

更改数据库的默认字符集对已存在数据库中的表没有影响,但是会影响新建表的默认字符集。

7.8.2修改表的字符集

语法:

alter table student1character set'utf8';

结论:修改表的默认字符集,对表中现有的字符集没有影响,但是会影响在表中新插入列的默认的字符集。

7.8.3修改表中列的字符集

语法:

alter table student1cgange dz dz char(20)character set 'lantin1';

7.9指定客户端使用的字符集

语法:

set nameslatin1;

7.10字符集的兼容性

结论:utf8兼容latin1

GBK兼容utf8

更改数据库字段字符集  由latin1可以转换为utf8;由utf8转换为latin1,汉字会变为??

第八章笔记

SQL介绍

SQL是访问和操作数据库的标准语言。Structure query language.

SQL能做什么

·SQL可以对数据库执行查询

SQL可以从数据库中检索数据

SQL可以给数据库表插入记录

SQL可以更新数据库表的记录

SQL可以从数据库表中删除记录

SQL可以创建新的数据

SQL可以在数据库中创建新表

SQL可以在数据库创建存储过程

SQL可以在数据库中创建视图

SQL可以设置表、过程和视图的权限

数据的元操作

CRUD操作

C: create 创建数据

R:retrieve/read获取数据/读取数据

U:update/alter 更新数据/修改数据

·D: delete/drop删除数据

数据库的命令

介绍数据库的CRUD操作查看所有数据库语法:

show databases;

创建数据库..C操作语法:

create database 数据库名 charset 字符集;

切换

数据库..R操作语法:

use 数据库名;

查看当前所选数据库-R操作语法:

select database();

修改数据库..-U操作语法:

database数据库名[default] character set 字符集[default] collate 字符序;

示例:

alter database db_test

default character set gb2312

default collate gb2312_chinese_ci;

查看数据库编码语法:

show create database数据库名;

查看mysql支持的所有编码类型I语法:

show character set;

删除数据库---D操作语法:

drop database 数据库名;

表命令

1、查看所有表

show tables;

2、创建表

前提:切换数据库,需要明确在哪个数据库中新建表

CREATE TABLE table_name (-- table_name表名 特别说明:数据库名、表名都应该有一意义

column1_name data_type constraints,--列名 类型 属性

column2_name data_type constraints,

....

)ENGINE=InnoDB DEFAULT CHARSET=utf8;--存储引擎 字符集

3、示例:

创建一个用户表

CREATE TABLE users(--在DB数据库下新建一个user表

id INT NOT NULL PRIMARY KEY

AUTO_INCREMENT,

name VARCHAR(50) NOT NULL, -- null值表示是一个不确定的值

birth_date DATE,

phone VARCHAR(11) NOT NULL UNIQUE

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

主键:primary key在一个表中至少应该有这样一个字段,这个字段所对应的值一不能有重复,二不能为空,这个字段所对应的值能够起到唯一标识表中每一条记录的作用。

上面的语句创建了一个名为users的表,其中包含5个字段id、name、birth_date和phone。注意,每个字段后面都有一个数据类型声明,表示该字段将存储何种类型的数据,例如:整数、字符串、日期等。

MySQL支持的常用数据类型数字型

数据类型 字节 范围(无符号)

unsigned 范围(有符号)

signed(默认) 描述

tinyint 1 (0,255) (-128,127) 小整数值

decimal 2 (0,65535) (-32768,32767) 大整数值

mediumint 3 0,16 777215) (-8 388 608,8 388 607) 大整数值

int 4 (0,4294967 295) (-2 147 483 648,2 147 483

647) 大整数值

bigint 8 (018 446744 073709 551615) (-9,223,372.036,854,775.808.9 223 372 036 854 775 807) 极大整数值

FLOAT(M,D) 4 0,(1.175494 351E38,3.402823466 E+38) (-3.402 823 466 E+38,-1.175494 351E-38),0,(1.175 494351 E-38,3.402 823 466 351

E+38) 单精度浮点数值

M是数字总个数,D是小数点后个数

double(M,D) 8 0,(2.225073 858507 201 4 E-308,

1.797 693134 8623157 E+308) (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507201 4E-308).0,(2.225 073858 507 201 4E-308.1.797693 134 862 315 7 E+308) 双精度浮点数值

M是数字总个数,D是小数点后个数

decimal(M,D) 对

DECIMAL(M,D),如果M>D.为M+2否则为

D+2 依赖于M和 D的值 依赖于M和D的值 M是表示有效数字数

的精度。M范围为

1-65,D是表示

小数点后的位数。D

的范围是0~30

MySQL要求D小于或

等于(

单精度和双精度不同

1、在内存中占有的字节数不同

2、有效数字位数不同

3、所能表示数的范围不同

字符串

类型 字节 说明

char 0-255字节 定长字符串

varchar 0-65535字节 变长字符串

text 0-65 535字节 长文本数据

日期

类型 大小 范围 格式 说明

date 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期

time 3 -838:59:59/838:59:59' HH:MM:SS 时间

datetime 8 1000-01-01 00:00:00/9999-12-3123:59:59 YYYY-MM-DD HH:MM:SS 日期时间

year 1 1901/2155 YYY 年份类型

1.tinyint 示例:性别男1女0数据类型选择tinyint

2.decimal 示例:价格与财务有关的字段设置为该类型

3.mediumint 示例:博客访问数设置为该类型

4.int 示例:员工的编号、学生学号设置为该类型

5. bigint 示例:网站访问数设置为该类型

  1. float 示例:float(5,2) 范围(-999.99,999.99)桌子的长度、物理测理的度量值

2.double 示例:误差比float低 科学计算、物理测量的值

3. decimal 示例: decimal(7,2) M=7(包含整数部分和小数部分,小数点也要算作1位)D=2小数点后数字的位数如某一商品的价格是¥1234.56

char(50) 宽度是固定,若占不完,空格补齐查询效率高,浪费存储空间 varchar(50)宽度是自动,用多少宽度分配多少宽度,查询效率低,节约空间 text 长文本类型示例:简历 text类型

MySQL支持的常用约束

修饰符 描述

primary key 主键

not null 非空

unique 唯一

default 默认

foreign key 外键

●主键:学生表中的学号、身份证号;课程表中的课程号;在一个表中至少应该有这样一个字段,这个字段所对应的值一不能有重复,二不能有空间,它能够起到唯一标识表中记录的作用。

not null不能空值示例:某个商品的价格是null,只能说这个商品价格尚未确定,不是免费的 unique:满足主键条件的字段设置为unique的字段,此字段所对应的值是不能有重复

foreign key外键:在一个表中某一个字段它不是当前这个表的主关键字,但是它却是另外一个表的主关键,我们在当前这个表,把此字段称为是当前表的外部关键字。

存储引擎

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。I

存储引擎:就是我们对数据进行增、删、改、查或CRUD操作的一种技术方式。|

show engines;

.查看表结构

desc表名

。查看表的创建语句

show create table‘表名";

更新约束

·先创建一个表,除了主键,不加其他约束。

CREATE TABLE users1 (

id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), birth_date DATE, phone VARCHAR(11)

)ENGINE-InnoDB DEFAULT CHARSET=utf8;

·给手机号添加唯一约束

ALTER TABLE users1 ADD UNIQUE(phone);

.删除唯一约束

ALTER TABLE users1 DROP INDEX phone;

·给姓名添加非空约束

ALTER TABLE users1 modify name VARCHAR(50) not null;

.删除非空约束

alter table user1 change name name varchar(50) nul1;

给生日添加默认约束

ALTER TABLE users1 ALTER birth_date SET DEFAULT '1992-05-11';

删除默认约束

ALTER TABLE users1 ALTER birth_date DROP DEFAULT;

表的CRUD操作

更新约束

·先创建一个表,除了主键,不加其他约束。

CREATE TABLE users1 (

id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), birth_date DATE, phone VARCHAR(11)

)ENGINE-InnoDB DEFAULT CHARSET=utf8;

·给手机号添加唯一约束

ALTER TABLE users1 ADD UNIQUE(phone);

.删除唯一约束

ALTER TABLE users1 DROP INDEX phone;

·给姓名添加非空约束

ALTER TABLE users1 modify name VARCHAR(50) not null;

.删除非空约束

alter table user1 change name name varchar(50) nul1;

给生日添加默认约束

ALTER TABLE users1 ALTER birth_date SET DEFAULT '1992-05-11';

删除默认约束

ALTER TABLE users1 ALTER birth_date DROP DEFAULT;

表的CRUD操作

更改表名称

rename table 原表名to新表名;

.修改表

alter table 表名 add| change|drop 列名类型;

alter table users add age int default 1;

alter table users add user_desc varchar(50) default‘哈哈'; alter table users change user_desc userdesc varchar(50);

alter table users drop userdesc

.删除表

drop table 表名;

语法:

insert into 表名(字段名1,字段名2,) values(值1,值2,.);

缺省插入示例:

给user表新增1条记录?

insert into user(name,birthday, phone,age) values('老王','1954-10-5','13012345

全列插入

给user表再新增1条记录

insert into user values(1000,'老张','1964-10-7',13112345678,60); insert into user values(0,'老李','1974-10-7',13212345678,50);

说明:

给表中所有字段插入记录的时候,id自动增长型主键的值从0开始。不同:

主键列是自动增长,但是在全列插入时需要占位,通常使用0,插入成功后以实际数据为准

查询数据

语法:

select * from 表名;--查看表记录

验证float、double、decimal误差

新建测试表 tbl_test create table tbl test(

I

id int not null primary key auto increment, price1 float(9,3) not null, price2 double(9,3) not null, price3 decimal(9,3) not null

)engine=innodb default charset=utf8;


《C MySQL8.0数据库跨平台编程实战笔记》是一本介绍如何在不同平台上使用C语言和MySQL8.0数据库进行编程的实用指南。本书从数据库的基本概念开始讲解,包括数据库的设计、表的创建和管理,以及SQL语句的基本使用方法。然后深入探讨了C语言和MySQL8.0数据库的结合,通过示例代码演示了如何在不同操作系统上使用C语言连接和操作MySQL8.0数据库。 本书以实战为主,介绍了在Windows、Linux和MacOS等不同平台上使用C语言编写跨平台的数据库程序的方法。读者可以通过学习本书,掌握在不同平台上使用C语言和MySQL8.0数据库的技巧和方法。此外,本书还介绍了一些实用的编程技巧和调试方法,帮助读者更好地应用C语言和MySQL8.0数据库进行开发和调试。 作者通过丰富的实例和详细的讲解,使读者能够快速掌握使用C语言和MySQL8.0数据库进行跨平台编程的技能。不论是初学者还是有一定开发经验的读者,都可以从本书中获得丰富的知识和经验。本书内容通俗易懂,深入浅出,适合作为C语言和数据库编程的入门指南,也适用于数据库开发人员和C语言程序员作为进阶学习和实践的参考。 总之,《C MySQL8.0数据库跨平台编程实战笔记》是一本实用性强、内容丰富的技术书籍,对于想要学习C语言和MySQL8.0数据库跨平台编程的读者来说是一本难得的好书。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值