ddbs mysql_MySQL笔记

1. 安装

注意1:当前MySQL Community Server 5.7.21版本是免安装版,不是exe文件

注意2:不要下载Windows (x86, 64-bit), ZIP Archive Debug Binaries & Test Suite版

安装参考:

Win7安装MySQL 64位解压缩版

Windows 10下mysql 64位 安装(mysql-5.7.11-winx64安装)

要点归纳:

选择正确版本

设置环境变量

配置my.ini文件

管理员运行cmd,

data路径初始化:cd 到mysql bin文件夹中运行mysqld --initialize --console

2018-04-14T03:15:52.711719Z 1 [Note] A temporary password is generated for root@localhost: k9CRxtbKgt?j

记住这里的密码:root@localhost: k9CRxtbKgt?j

安装MySQL服务:mysqld -install

启动MySQL服务:net start mysql

报错:

(C:\Users\leegang\Anaconda3) D:\MySQL\bin>net start mysql

MySQL 服务正在启动 .

MySQL 服务无法启动。

服务没有报告任何错误。

解决办法:

重新运行mysqld --initialize进行初始化,必要时可把之前配置的data文件夹删除

再次尝试启动MySQL 服务:net start mysql

(C:\Users\leegang\Anaconda3) D:\MySQL\bin>net start mysql

MySQL 服务正在启动 .

MySQL 服务已经启动成功。

进入MySQL,修改root密码为123456

mysql -u root -p

alter user root@localhost identified by "123456";

需要确保①已经启动MySQL服务:net start mysql;②用管理员方式打开cmd

安装结束,记住启动MySQL服务的命令,记住你的root密码

2. 数据库系统DBS(Database System)

DBS=DBMS + DB

数据库DB(database):存储数据的介质。分为

-- 关系型数据库SQL:Qracle, DB2, mysql, access

特点:安全(保存到磁盘基本不会丢失)、容易理解,但浪费空间(二维表)

-- 非关系型数据库NoSQL(Not only SQL):mongodb, redis

特点:效率高,但不安全(断电丢失)

关系型数据库:是一种建立在关系模型(数学模型)上的数据库。

-- 关系模型包含三个方面:数据结构(行列二维表)、操作指令集合(所有SQL语句)、完整性约束(表内数据约束、表与表之间的约束)

数据库管理系统DBMS(Database Management System):管理数据库的软件

数据库应用程序:数据库管理系统的补充

SQL语言:对数据库进行查询和修改的语言

--DDL:数据定义definition语言,用来维护存储数据的结构。如:create,drop,alter等;

--DML:数据操作manipulation语言,用来对数据进行操作。如:insert,delete,update等;

--DCL:数据控制control语言,主要是负责权限管理。如:grant,revoke等。

补充:SQL是一种约束,但不强制,不同的数据库产品内部可能会有一些细微差别。类似W3C与各类浏览器的关系。

Q:关系型数据库的设计?

01.找出系统中的存在的实体对象。比如:教师、学生、教师

02.找出实体对象应该存在的数据信息:

--教师:姓名、性别、工资、年龄

--学生:姓名、性别、学号、学科

--班级:班级名字、教师编号

03.设定table表单,明确字段信息之间的关系和约束条件

3. MySQL数据库

MySQL数据库 是一种C/S结构的软件:客户端/服务端。

C/S结构特点:

服务器一直在运行状态,客户端在需要的时候运行;

若想访问服务器,必须通过客户端。

交互方式:

客户端连接认证,连接服务器,认证身份:mysql.exe -hPup

2.客户端发送SQL指令

3.服务器接收SQL指令:处理SQL指令,返回操作结果

4.客户端接收结果,显示结果

5.断开连接(释放资源):exit,quit,\q

例如:mysql.exe -hlocalhost -p3306 -uroot -p

(-h+主机)+(-p+端口,端口用于找软件)+(-u+)+(-p)

结构:

数据库管理系统:DBMS

数据库:DB

数据表:Table

字段:filed

77781d62120e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

g

4. SQL基本操作

分为三类:库操作、表操作、数据操作

前注:

1.必须用分号;结尾,\g也等价于分号

2.可以跨行,因为MySQL会自动寻找分号作为结束标记;

3.通常不区分大小写

4.1库操作

A.新增数据库:

create database 数据库名字 [库选项];

库选项:用来约束数据库,分为字符集设定charset、校对集设定collation

注:常用字符集为GBK、utf8

例如:

create database mydatabase charset utf8;

创建中文名的database:

set names gbk

create database 我的数据库 charset utf8;

执行结果:

会在data目录中创建相应的文件夹

每个数据库文件夹中都会有opt文件,保存着库选项(charset和collations)

B.查看数据库:

查看所有数据库:

show databases;

查看指定部分的数据库,即模糊查询

show databases like 'pattern';

-- pattern表示正则匹配模式

C.查看数据库的创建语句:

show create database 数据库名字

D.更新、修改数据库:

--数据库名字不可以修改

--数据库仅允许修改:字符集charset和校对集collation

修改字符集charset

alter database 数据库的名字 charset GBK;

E.删除数据库:

drop database 数据库名字

注意:删除不可逆

4.2 表操作

前注:表与字段是密不可分的;表的创建必须先明确所依附的数据库

A.新增数据表:

create table if not exists 表名(字段名字 数据类型,字段名字 数据类型)[表选项];

if not exists:如果表名不存在,就创建,否则不执行创建代码。

字符集:charset

校对集:collation

存储引擎:engine,包括innodb和myisam

方法1显式指定该表所依附的数据库:

create table if not exists mydatabase.student(name varchar(10), gender varchar(10),

number varchar(10), age int)charset utf8;

方法2隐式指定该表所依附的数据库:

先进入某个数据库环境

再创建table表

use mydatabase;

create table student(name varchar(10), gender varchar(10),

number varchar(10), age int)charset utf8;

B.查看数据表:

查看所有表:

show tables

查看部分表:

show tables like 'pattern'

-- pattern表示正则匹配模式

查看表的创建语句:

show create table 表名;

查看表结构:查看表中的字段信息

desc columns from 表名

或者:

describe columns from 表名

或者:

show columns from 表名

C.修改数据表:

包括修改表本身、修改表中字段两类

修改表本身:表名、表选项(charset collation)

修改表名:

rename table 老表名 to 新表名

修改表选项:

alter table my_student charset utf8

修改表字段:新增、修改、删除、重命名

--新增字段:

alter table 表名 add columns 字段名 数据类型 [列属性][位置];

位置:first、“after 字段名”(默认在最后)

alter table my_student add column id int first;

其中:

my_student为目标数据表;

id为新增字段的名称;

int为新增字段的属性;

first为新增字段的位置。

--修改字段:

alter table 表名 modify 字段名 数据类型 [属性] [位置];

--重命名字段

alter table 表名 change 旧字段 新字段名 数据类型 [属性] [位置];

--删除字段

alter table 表名 drop 字段名;

D.删除数据表

drop table 表名;

4.3数据操作

A.新增数据:insert

场景1:给table中的所有字段都插入数据:无需指定字段所属的列,但要求数据的顺序必须与表中字段列的顺序一致

insert into 表名 values (1列的值,2列的值,3列的值,……);

场景2:只在部分字段中插入数据,则需要选定字段列表:

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

insert into my_student(number, sex, name, id) values(“itcast001”,“male”,“Tom”,“3”,),(“itcast002”,“female”,“Mary”,“15”,)

B.查看数据

查看表中全部数据:

select * from 表名

按条件查看数据:

select 筛选列名 from 表名 where 筛选条件;

select id,number,sex from my_student where id=1;

C.更新数据

update 表名 set 字段 = 值 [where 筛选条件]

#这里不加table

D.删除数据

delete from 表名 where 筛选条件

#这里不加table

5.中文数据问题

MySQL服务器默认用utf8编码格式来解析输入的数据

然而,输入汉字时,它的编码格式是gbk

因此,解析错误

第一步:查看服务器用于与客户端进行沟通的字符编码格式

show variables like 'character_set%';

第二步:修改服务器与客户端沟通的编码格式为gbk

set character_set_client = gbk;

--服务器端的中文显示正确!

第三步:修改服务器反馈给客户端的数据编码格式为GBK

set character_set_results = gbk;

--客户端从服务器接收中文数据后也能正确显示!

第四步:set = value的更改方法只是当前对话有效,重启后失效。

措施:

set names = gbk;

等效于设置服务器的编码:

set character_set_client, character_set_connection, character_set_results = gbk

其中,character_set_connection是连接层的编码格式,能够提高转码效率,不设也能正常转码。

6. Web乱码问题

参考:玩转MySQL数据库P22

动态网站由三部分构成:浏览器、apache、数据库服务器

7. 校对集问题

参考:玩转MySQL数据库P21

校队集:数据比较的方式,只有当数据产生比较的时候,校对集才会生效。

校对集的三种格式:

_bin:binary,二进制比较,取出二进制位,一位一位的比较,区分大小写;

_cs: case sentive, 大小写敏感,区分大小写;

_ci: case insensitive, 大小写不敏感,不区分大小写;

查看校对集:

show collation;

创建table表时指定校对集:

create table my_table(name char(a))charset utf8 collate utf8_bin;

这里指定了校对集为collate utf8_bin。在对该table进行排序等比较时,将按照二进制进行比较。

修改已存在table的校对集:

修改无效!

8.MySQL的数据类型

列类型

77781d62120e?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

MySQL列数据类型

第一类:数值型

整数型:系统为了节省磁盘空间,将其细分为5类。

tinyint(常用): 迷你整型,使用1个字节存储,最多为256种;

smallint:小整型,使用2个字节存储;

mediumint:中整型,使用3个字节存储;

int(常用):标准整型,使用4个字节存储;

bigint:大整型,使用8个字节存储;

创建整型数据表:

create table my_table_int(

name1 tinyint, name2 smallint,

names int, name4 bigint

)charset utf8;

指定数据的显示宽度:当数据不够显示宽度的时候,就会自动添加前导0让数据变成相应的显示宽度。

create table my_table_int(name1 tinyint(5))charset utf8;

#这里name1 tinyint(5)的5就是指定显示宽度,不影响内部运算时的数据类型

第二类:小数型

SQL中将小数型又细分为浮点型和定点型。

定点型decimal:保证整数部分绝对不会被四舍五入,而小数部分有可能丢失精度。

----引用方法:decimal(M,D)

其中,M为总长度,不能超过65;D为小数部分长度,不能超过30;整数部分长度为M-D

浮点型float、double:是一种精度型数据,因为超出范围后会自动四舍五入。

----引用方法:float(M,D)

其中,M为总长度,D为小数部分长度,整数部分长度为M-D

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值