数据库笔记

有道云笔记链接:

【有道云笔记】数据库笔记
https://note.youdao.com/s/BMG79aSj

    
1.1.1 数据库入门

1.数据库:实际上是数据的集合,数据的仓库

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

数据处理i:数据--->处理--->信息   

信息information:计算机用户或程序员或数据库管理员将数据经过加工处理后对人们的决策起到帮助作用的有用数据。

将数据处理为对人们的决策有帮助作用的数据的集合就是信息

3.数据库系统的组成DBS:database system,由数据库管理系统DBMS、数据库Database、数据库管理员DBA、计算机、数据库应用系统DBAS。

DBMS------MySQL、Oracle、Access、VFP、DB2、Ms-SQL属于系统软件的范围

DBAS------数据库应用系统 如学生管理系统、教务管理系统

4.为什么要有数据库

程序设计 数据类型(整型、浮点型、双精度、字符型、数组、字符串、结构体)

计算机基础 excel电子表格

5.没有数据库会产生的问题

存在大量的冗余数据,浪费资源•数据共享程度低无法及时更新工活中业起的扩显业多要求

1.1.2关系型数据库基本概念

1.关系:用二维表的方式来表示实体和实体集之间的关系

实体:客观存在的并且可以相互区别的事物

实体集:一本书

2. 关系型数据库特征:二维表的组成行和列,行列存储数据

行表示一条记录,也称为元组、实体信息,除了第1行

列表示一个字段,也称为属性,只有第一行

3. 库

文件柜,房子,容器。

4.表

将用户数据存储到数据表中,数据库存储到数据库中。

1.1.3Mysql简介

1.Mysql属于数据库管理系统,属于系统软件,是DBMS。

2.企业选择Mysql,免费,安全稳定,开源

2.vmware的介绍以及安装

2.1.1VMware虚拟机介绍

1.什么是虚拟机?

  • 虚拟机(virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
  • 虚拟机系统是一个操作系统镜像,它具有与真实windows系统完全一样的功能,进入虚拟系统后,所有操作都是在这个全新的独立环境上进行,可以独立安装应用软件、保存数据、拥有自己的独立桌面,不会对真正的系统产生影响,而且具有能够在现有系统与虚拟镜像之间灵活切换的一类操作系统。
  • 流行的虚拟机厂家有Vmware、Oracle virtual box、微软virtual PC等,它们都能在windows系统上虚拟出多个计算机(windows/linux)。

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

  • 演示环境,可以安装各种演示环境,便于做实验----实验、学习环境
  • 保证主机的快速运行,减少不必要的垃圾安装程序,偶尔使用的程序或者测试的程序可以在虚拟机上运行
  • 避免每次重新安装操作系统
  • 体验不同版本的操作系统,如Mac-OS、Linux、windows server

3.Vmware workstation虚拟机介绍

  • Vmware workstation中文名威睿工作站。是一款功能强大的桌面虚拟化软件(KVM、hyper-V、cytrix思杰),提供用户可以在单一桌面上运行不同的操作系统,和进行开发、测试、部署新的应用程序的最佳解决方案。
  • Vmware workstation收费,非开源(源代码不开放、收费的)

2.1.2windows server 2019系统安装

激活密钥

设置虚拟机内存

在编辑-虚拟网络编译器中中将vmnet1,vmnet8改成桥接模式,vmnet8网络改为主机的无线网络

​​​​​

在虚拟机网络设置中设置网络

下载镜像文件,在虚拟机设置中cd/dvd中使用镜像文件

开启虚拟机按引导进行安装

2.4 centos linux

拍摄快照,防止安装虚拟机错误

密码:abc..123

密码;abc..123

3.字符,字符集,字符序

3.1Mysql8.0下载与安装

abc..123

3.4mysql服务的启动与停止

3.2mysql的卸载

3.3环境变量

若没有配置环境变量,每次登录mysql都需要先cd 加mysql的路径

此电脑属性

配置过后,可直接登录mysql

3.4MySQL的目录结构

mysql安装目录包括启动文件,配置文件,数据库和命令文件:

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

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

docs:存储一些版本信息

include:存放一些头文件

lib:存放一些库文件

share:存放错误消息文件,字符集等

3.5mysql的基本操作

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

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

show tables;--显示当前数据库中的所有表

select databases();--查看当前正在操作的数据库

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

4.数据库创建与常用操作

4.1mysql 本地登录和用户管理

登录mysql,查看库

查看用户

建立一个liufy的用户

给liufy这个用户赋权

为本地用户修改密码

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

创建用户时指定密码

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

使用建立的liufy用户设置密码并实现本地登录

4.2MySQL远程登录和用户管理

虚拟机ip地址查询

create user 'lfy'@'192.168.0.%' identified by 'abc..123';--创建一个远程用户 grant all privileges on *.* to lfy'@'192.168.0.%' with grant option;--给远程用户赋权

关闭防火墙

建立出远程用户

用navicat登录上远程用户

4.4 导入初始数据

4.4.1导入数据

准备一个以。sql结尾的文件是数据库脚本文件

先登录MySQL数据库

source c:/init.sql

4.4.2 表结构

desc 表名;--查看表结构

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

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

表记录:所有记录的集合

4.5初始化数据表结构介绍

bonus--奖金 employee--雇员 intteger--整形 double--双精度型 float--单精度型 commission--奖金,佣金 department--部门 location--位置 grade--位置 low--低 high--高 salary--薪水

5.centeos linux安装mysql

5.1mysql官方下载与安装

1.通过ping连接主机和linux

2.查看centeos系统版本

3.配置yum源

vim /etc/yum.repos.d/centos-linux-appstream.repo [appstream] vim /etc/yum.repos.d/centos-linux-baseos.repo [baseos] name=centos vauit - base baseurl=http://vauli.centos.org/8.4.2105/AppStream/x86_64/os/ enabled=1 gpgcheck=1

4.安装成功后启动mysql

systemctl start mysqld

5.设置开机自启动

systemctl emable mysqld

6.查看mysql运行进程

ps-eflgrep mysql

7.关闭防火墙

firewall-cmd. ststemctl stop firewalld.service systemctl disable firewalld.service firewall-cmd.

5.2linux中mysql8.0用户管理和登录方式

5.3centos linux7.6操作系统的安装

5.4centos7.6安装mysql8.0

配置hosts文件

echo"10.10.10.200linux.test.com">>/etc/hosts cat/etc/hosts vim/ect/hosts 10.10.10.200 linux.test.com

卸载主机自带的mysql

rpm -qa|grep mysql rpm - --nodeps *mysql* rpm -qa|grep mariadb rpm -e --nodeps mariadb*

5.5centos 7.6安装mysql8.0

cd /mysql/ tar -xvf mysql-8.0.39-linux-glibc2.17-×86_64.tar rm -f mysql-8.0.39-linux-glibc2.17-×86_64.tar xz -d mysql-8.0.39-linux-glibc2.17-×86_64.tar.xz tar -xvf mysql-8.0.39-linux-glibc2.17-×86_64.tar mv mysql-8.0.39-linux-glibc2.17-×86_64 /usr/local/ mv /usr/local/mysql-8.0.39-linux-glibc2.17-x86_64 /usr/local/mysql mkdir /var/lib/mysql mkdir -p /usr/local/mysql/log mkdir /usr/local/mysql/data

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

groupadd mysql useradd -r -p mysql -s/bin/false mysql chown -R mysql:mysql /usr/local/mysql chown -R mysql:mysql /var/lib/mysql

配置参数文件

vim /etc/my.cnf [mysql] default-character-set=utf8mb4 socket=/var/lib/mysql/mysql.sock [mysqlf] port=3306 socket=/var/lib/mysql/mysql.sock basedir=/usr/local/mysql character-set-server=utf8mb4 default-storage-engine=INNODB innodb_buffer_pool_size=200m max_allowed_packet=16m explicit_defaults-for_timestamp= log-output=FILE general_log=0 general_log_file=/usr/local/mysql/log/linux.test.com.err slow_query_log=ON slow_guery_log_file=/usr/local/mysql/log/Linux.test.com-query.err long_query_time=10 log-error=/usr/local/mysql/log/Linux.test.com-error.err default-authentication-plugin=mysql_native_password

5.6mysql安装完成后远程登录

6.表和库的管理以及数据引擎的介绍

6.1 sql语言简介

6.2表和库的管理

1、数据类型

整数型:smallint、int、bigint

小数型:float、double

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

字符串:varchar、char,text

其他:clob存储文本大数据

         blod存储二进制大数据

6.3创建表

create table 表名 ( 列名 数据类型 特征,--字段名 属性名 列名 数据类型 特征, ...... 列名 数据类型 特征 ) charset=utf8;

create table t-user ( id int, username varchar(20), password varchar(50) );

create table t-student ( if int primary key auto-increment,--将id设为主键 自动增长 默认从1开始,每次递增 name varchar(10)not null,--不允许为空 age int, sex varchar(8)not null default'男',--指定默认值 address varchar(100), height double, birthday date )charset=utf8

insert into t_student(name,age,sex,birthday,height) values('张无忌',21,'男','2002-10-9',176.3); insert into t_student(name,age,birthday,height) values('张三丰',21,'2002-10-9',176.3); insert into t_student(name,age,sex) values(null,22,'女'); insert into t_student values('钱多多',20,'女','南京',172.1,now());

6.4 修改表

添加列

语法:

alter table 表名 add 列名 数据类型;

示例:

在t_student表中增加1个名为weight体重字段,类型为双精度。

alter table t_student add weight double;

修改列的类型

语法:

alter table 表名 modify 列名 新数据类型;

示例:

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

alter table t_student modify name varchar(250);

- 修改列名

alter table 表名 change 原列名 新列名 数据类型;

示例:

将t_student表中sex字段名称修改为gender。

alter table t_student change sex gender varchar(8);

- 删除列

语法:

alter table 表名 drop 列名;

示例:

删除t_student表中weight列(字段)。

alter table t_student drop weight;

- 修改表名

语法:

alter table 原表名 rename 新表名;

rename table 原表名 to 新表名;

示例:

将t_student表名修改为student。

alter table t_student rename student;

rename table student to t_student;

6.5、截断表

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

语法:

    truncate table 表名;

示例:

    truncate table t_student;

    select * from t_student;

    insert into t_student(name,gender) values('tom','男');

    insert into t_student(name,gender) values('mike','女');

    select * from t_student;

delete与truncate的区别:

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

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

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

6.6建造库,删除库

创建库

语法:

    create database 数据库名 charset utf8;

    create database if not exists 数据库名 charset utf8;

示例:

     create database if not exists shop charset utf8;

删除库

语法:

    drop database 数据库名;

    drop database if exists 数据库名;

示例:

    drop database if exists shop;

6.7图形化界面工具的安装

下载压缩包打开

打开navicat

在登陆界面,选择软件软件激活

将文件夹中的key的子串复制进去

7 字符集和排序规则

7.1 什么是乱码

字符  character    eg:abcd  1234  , . (   )

- 字符集合:charset  一组字符     

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

GB2312 简体中文

BIG5 繁体中文

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

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

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

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

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

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

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 10xx xxxx 10xx xxxx

1110 0101 1000 1000 1001 1010

E58896

A

0100 0001

41

示例:

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

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

7.3mysql支持的字符集

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.4 利用字符集知识解决实训室乱码

7.5管理mysql客户端和服务端字符集

7.6 设置mysql字符集

1、查看服务器和客户端字符集

show variables like 'character_set_%'; -- 查看默认字符集

2、修改mysql默认字符集

- 临时修改

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

此方法可以临时修改3个字符集

-- character_set_client

-- character_set_connection

-- character_set_results

set character_set_database=utf8;

- 永久修改----修改配置文件

windows server my.ini

linux my.cnf

修改配置文件后必须重启mysql服务

net start mysql;

net stop mysql;

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

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

create database db default charset latin1;

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

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

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

create table student1(sid int,sname char(30),address char(20) character set latin1)default charset utf8;

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

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

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

7.8 修改数据库和表及字段的字符集

7.8.1 修改数据库的字符集

alter database db character set 'latin1';

结论:

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

alter table student1 character set 'utf8';

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

7.8.3 修改表中列的字符集

zkter table student1 change dz dz char(20) character set 'latin1';

7.9 字符集兼容性

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

set names latin1;

7.9.2字符集的兼容性

结论:UTF8兼容latin1

GBK兼容utf8

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值