Mysql基础

-->mysql是什么?

mysql 数据库管理系统不数据进行管理和处理等......

->mysql的三层结构

Mysql基础_第1张图片

->几个概念:

Database:s数据库

DBMS :数据库管理系统

数据的表现形式:

物理层面:二进制文件和文本文件,从db的角度来看

逻辑层面:从DBMS的角度来看,实际上是有行和列组成的一张二维表。

行:记录。

列:字段,列。

使用这种二维表来表示数据的数据库,称之为关系数据库,RDBMS

常见的RDBMS:

n         Mysql,淘宝,新浪微博,百度,yahoogooglefacebook

n         Sql server

n         Oracle

n         Access

n         DB2

n         Informix

n         Sybase

NoSQL:非关系型的,键值对,mongod

 sql:structured query language,结构化的查询语言,是一门用于数据库查询和设计的语言。

 sql 还是一个标准。

数据的保存方式:

n         文件保存,少量的数据

n         数据库,专门处理大量的数据,还提供了各种文件系统不具备的一些功能。

—》基本命令

使用mysql要确保mysql的服务是开启的。

开启和关闭mysql服务的。

  • 任务管理器

  • 使用windows的管理中的任务,

  • 使用网络命令,netstat  -anb , net stop mysql , net start  mysql

客户端和服务器端建立连接以及断开

需要验证三个参数:

主机:host;

用户:user;

密码:password

完整的写法:Mysql -host=localhost -user=root -password=1234abcd

localhost也可以使用127.0.0.1,如果是本机,host选项可以不写

短命令的写法:host -h,user -u,password -p

Mysql    -uroot  -p密码

-u 和用户名之间可以使用空格,也可以不用空格,host也一样。

-p 和密码之间的写法

退出:

Exit ,Quit,\q

—》数据库相关命令

查看数据库,show databases

创建数据库,create database 数据库名 charset 字符集(character set 可以简写为charset)

查看创建数据库的语句,show create database 数据库名

 删除数据库:drop database 数据库名

我们经常需要做一种判断,如果库不存在则创建,

If not exists 或者 if exists

create database if not exists db1

—》sql语句规则

问题:书写sql语句需要注意什么?

标识符 的问题,通常情况下,建议使用英文和数字,下划线组合而成。不要跟关键字冲突。

常规情况下,标识符要遵循的规则,

如果加了反引号,则不受上面的限制。

而且,在mysql处理标识符的时候,都会儿自动加上反引号。

—》大小写

Mysql 关键字,函数名可以大写,也可以小写。

数据库、表和视图的名字由服务器系统决定,lnix下区分,而windows下不区分

数据列的名字不区分大小写

建议自己定义的标识符都用小写

—》语句结束符

Mysql以 ; 作为结束符的

—》注释

(#、 /**/、--空格)

表相关语句

在一个DBMS 当中,可以由n个数据库,

在数据库中,有n张表,数据时存在表中的。

表是由行和列组成的。

—》创建表

create table 表名(列声明1,列声明2,列声明n....)engnine=存储引擎 charset=字符集

其中列声明是比较重要的。

列声明:列名  列类型 列属性

注意,在创建表之前,先要选定库,use 库名,这个命令可以不加分号。

Mysql基础_第2张图片

查看表:show tables

查看表结构:desc 表名

Mysql基础_第3张图片

desc 此处的desc表示describe

—》查看表的数据:

Select  列1,列2,列3,.......from表名

如果要选择所有的列,可以使用*来代替  中间的列。

—》插入数据

Insert into 表名(字段列表)values(值列表)

注意:

  • 字段列表和值列表要一一对应

  • 如果是字符串,必须用单引号包含,双引号也可以,但是不推荐。(sql的标准书写Php的便利)

Mysql基础_第4张图片

 查看表的创建语句:show create table 表名

删除记录:Drop table 表名

更新记录:Update 表名 set 字段=值 where 条件

补充:

Mysql 的学习: 

Mysql基础_第5张图片

存储引擎

Mysql支持插件式的存储引擎,MyISAM,InnoDB

存储引擎是如何保存数据,处理数据。

保存方式不同:

Myisam:Mysql基础_第6张图片

Frm文件是存储引擎无关的,任何一种存储引擎都有这个文件。

InnoDB

数据和索引文件都保存在该共享文件中

处理方式不同:

Myisam安全性较低,但效率较高。

Innodb 安全性高,但效率低。安全性体现在支持外键和实物。

Mysql 默认的存储引擎是,在mysql 15.5版之前,myisam,之后的是innodb.

\s 可以查看Mysql的版本信息。

建议:尽量显示声明存储引擎,Engine=引擎;

字符集

字符集是什么?

每个字符,用一个对应的数值来表示,就形成了字符集。

A   65

B   66

520   -我爱你

Default  Character set =字符集,简写方式charset = 字符集。

  • Ascii 128位,单字节

  • Iso-8859-1 ---->Latin1 西欧字符集,单字节,256

  • Gb2312----> 简体中文版,支持的中文不多,双字节

  • Gbk----> 双字节,中日韩

  • Utf8---> 可变,1个字节—Latin2个字节---俄文,3个字节----中文

  • Unicode,统一码,万国码。

字节和字符的区别?

字符:文化符号,表示人类语言的最小的表义符号。不同的国家,名族,有不同的符号

字节:是一种存储单位。

Mysql 支持的字符集

 

MySQL对字符集的支持细化到四个层次:

Ø        服务器

Ø        数据库

Ø        

Ø        连接

字符集的继承关系

Mysql基础_第7张图片

如果在安装的时候没有指定字符集,在创建库的时候指定即可。我们还可以更改mysql的配置文件my.ini.改完重启即可。

建议,在创建表的时候指定。

关于中文乱码,在使用cmd窗口的时候,默认无法插入中文。Set names gbk.

问题:下面哪些会出现乱码

Latin—>GBK,

GBK->Latin1

GBKàUTF8

UTF8->GBK

校对集

校对集是针对库而言的,建库的时候使用。

对字符排序进行比较

一种字符集,对应有多种校对集,

Show collation

每一组的第一个是当前字符集的默认校对集

对于utf-8来说,默认的是utf8_general_ci,表示不区分大小写。

如果指定了字符集,没有指定校对集,则校对集使用默认校对集。

如果指定了校对集,没有指定字符集,则字符集使用该校对集对应的字符集。

 

列类型

mysql中,只能保存简单的数据(标量数据)。

n         数值

n         字符串

n         日期时间

—》数值之整数

根据所表示范围的不同,可以分成以下几种

Mysql基础_第8张图片

整型默认是有符号的,如果要声明为无符号的,则使用unsigned来声明。

关于整型的长度问题

Mysql基础_第9张图片

n         对于一个整型类型的数据而言,只要确定了是哪一种(tinyintsmallintint),我们就能知道其最大长度,所以无需额外的声明长度。

n         长度包含符号位

问题:如果我在定义整型列的时候,定义一个长度,会怎么办?

如果单纯的指定其长度,其实没有任何影响,更不不影响其表示范围。

有这么一种需求,需要数据列的位数是固定的。

00001

00010

00100

01000

10000

 

此时这个长度就派上用场了,但是要结合zerofill关键字一起使用才有效。

Mysql基础_第10张图片

如何选择整型列:

能选择小就不选大的。

age tinyint unsigned

—》数值之小数

近似值:floatdouble

精确值:decimal

定义方式 floatMD

其中M表示总共有多少位,而D则表示小数的位数,注意,小数点不包括在内和符号位。

Mysql基础_第11张图片

Mysql基础_第12张图片

floatdecimal区别

对于float而言,对一个数接近其最大表示范围时,开始不精确了。

decimal则一直是精确的。

小数的范围,由MD共同决定。有正负之分。

默认是有符号的,如果要声明无符号的,则使用unsigned,此时负数被去掉了,正数部分不变。注意和整型的区别。

如何选择小数:选择float还是decimal

对于一些需要精确表示的,比如财务,科学,通常使用decimal

—》字符串

Charvarchar

Mysql基础_第13张图片

Charvarchar共同点:都是用来表示字符串的,声明的时候必须定义其长度。

不同点:

Char,是定长的,比如charn),则会存储n个字符,如果插入的字符串长度小于n个,则会以空格填充。

如果大于n个,则会根据mysql的模式来处理,在严格模式下,拒绝插入,在宽松模式下,会截取然后插入。

Char表示的字符串个数,最多是255个。

Char在查询的时候,会自动去掉空格。可以通过一个配置让其显示。

set sql_mode ='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,PAD_CHAR_TO_FULL_LENGTH

 

Varchar是变长的,varcharn),则表示最多存储n个字符,如果插入的字符串长度小于n个,实际上是几个,就插入几个。如果大于n个,处理方式同上。

Varchar表示的字符串个数,依据字符集和行大小来确定,最多65532个字节。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Mysql基础)