Mysql新手入门操作

文章目录

  • 数据库基本操作
    • 创建数据库
    • 显示数据库
    • 选择数据库
    • 修改数据库
    • 删除数据库
  • 数据表操作
    • 创建数据表
      • 复制已有表结构
    • 显示数据表
    • 显示表结构
    • 显示表创建语句
    • 设置表属性
    • 修改表结构
    • 删除表结构
  • 数据操作
    • 插入
    • 查询
    • 删除
    • 更新
  • 字符集
    • 字符编码概念
    • 字符集概念
    • 设置客户端所有字符集
    • 查询、设置字符集
  • 字段类型
    • 整数
    • 小数
    • 时间日期类型
      • Date
      • Time
      • Datetime
      • Timestamp
      • Year
    • 字符串型
    • Char
    • Varchar
    • Text
    • Enum
    • Set
    • Mysql记录长度
  • 列属性
    • Null
    • 默认值
    • 列描述
  • 主键
    • 创建主键
      • 随表创建
      • 表后增加
    • 查看主键
    • 删除主键
    • 复合主键
    • 主键约束
    • 主键分类
  • 自增长
    • 原理
    • 使用
    • 修改
    • 删除
    • 初始设置
    • 细节

数据库基本操作

创建数据库

create database name;
库选项:数据库相关属性。
字符集:charset,代表当前数据库下所有表储存的数据默认指定的字符集。不指定,则使用DBMS默认的。
校对集:collate校对集。
Eg:create database name charset=utf8
在这里插入图片描述

显示数据库

  • 显示全部数据库:show databases;
  • 显示部分数据库:show databases like “模式”;
    模式:匹配一个字符:_,多个字符:%
    Mysql新手入门操作_第1张图片
    Mysql新手入门操作_第2张图片
  • 查看数据库创建语句:show create databases name;
    在这里插入图片描述

选择数据库

use databaseName;
Mysql新手入门操作_第3张图片

修改数据库

修改数据库字符集(库选项)
是否可以修改数据库名字?5.5之前rename命令可以修改,5.5之后不能修改。只能修改库选项:字符集、校对集。
alter database charset=utf8
Mysql新手入门操作_第4张图片
一般数据库有内容之后就不再修改编码方式。

删除数据库

drop database mydatabase;
Mysql新手入门操作_第5张图片
删除虽简单,但确保做好安全操作,确保不会删库。

数据表操作

创建数据表

create table name[字段名 字段类型, 字段名 字段类型]
Mysql新手入门操作_第6张图片

  1. 先进入到某个具体的数据库。use 数据库名字。
  2. 将数据挂到数据库下:
    Mysql新手入门操作_第7张图片
    表选项:charset,字符集,对自己表有效,级别比数据库的设置高。

复制已有表结构

create table like name;
Mysql新手入门操作_第8张图片
用途有限,一般用来数据库的迁移。

显示数据表

  1. 查看所有表show tables;;
  2. 查看匹配表:show tables like “模式”;

显示表结构

显示表中包含的字段信息:(名字、类型、属性等)
describe 表名;
desc 表名;
show columns from student;
Mysql新手入门操作_第9张图片

显示表创建语句

show create table name;
Mysql新手入门操作_第10张图片
mysql 有多种语句结束符:
;;效果形同。
\G:上面显示内容的转置。

设置表属性

其实就是设置表选项:engine, charset, collate。
alter table 表名 值选项=值
Mysql新手入门操作_第11张图片
如果数据库已经确定了,里面有很多数据了,不要轻易修改表选项。

修改表结构

  • 修改表名
    数据库中数据表名字通常有前缀:取数据库前俩字母。
    Mysql新手入门操作_第12张图片
  • 新增字段
    alter table 表名 add [colmun] 新字段名 列类型 [列属性] [位置 first/after 字段名]
    在这里插入图片描述
    Mysql新手入门操作_第13张图片
    添加字段后,默认添加到末尾,在最后添加控制符控制字段位置。
    Mysql新手入门操作_第14张图片
  • 修改字段名
    alter table tableName change 旧字段名 新字段名 类型;
    Mysql新手入门操作_第15张图片
  • 修改字段类型
    alter table tableName modify 字段名 新类型 [新位置];
    Mysql新手入门操作_第16张图片
  • 删除字段
    alter table 表名 drop 字段名;
    Mysql新手入门操作_第17张图片

删除表结构

drop table 表名 [, 表名]
Mysql新手入门操作_第18张图片

数据操作

插入

insert into 表名 [字段, 字段] values (值,)
Mysql新手入门操作_第19张图片
insert into 表名 values (对应表结构的值);
这种语法要插入一个tuple,对应表中所有字段。
Mysql新手入门操作_第20张图片

查询

  • 查询表中全部数据:select * from 表名;
    Mysql新手入门操作_第21张图片
  • 查询表中部分字段:select 字段列表 from 表名;字段列表使用,隔开。
    Mysql新手入门操作_第22张图片
  • 简单条件查询数据:select 字段列表 from 表名 where 字段名 θ 值;
    Mysql新手入门操作_第23张图片

删除

delete from 表名 [where 条件]; 如果没有where条件,会删除表中所有数据。
Mysql新手入门操作_第24张图片

更新

一般修改特定行的某些字段数据。
update 表名 set 字段名 = 新值 [where 条件];如果没有where条件,会更新表中所有数据。
Mysql新手入门操作_第25张图片

字符集

字符编码概念

字符Character是各种文字和符号的总成,包括个国家文字、标点符号、图形符号。只有人能认出。
字符编码character code就是计算机对各种符号,再计算机中的一种二进制存储代号。

字符集概念

字符集character set是多个字符的集合。常见:ASCIIGB2312BIG5Nnicode等。

设置客户端所有字符集

用户通过mysql.exe来操作mysqld.exe,真正的mysql操作时MySQLd.exe执行。如果不指定字符集,MySQL.exe就会使用自己默认的字符集。
解决方案:MySQL.exe客户端进行数据操作之前,先将自己使用的字符集告诉mysqld.exe即可。
简单设置:set names utf8;设置所有编码格式位utf8;
深层原理:
mysql.exe 与mysqld.exe之间的处理关系一共分为三层。

  1. 客户端传数据给服务端:client
  2. 服务端返回数据给客户端:server
  3. 客户端与服务端之间的连接:connection
    查看字符集:show variables like ‘character_set%’
    Mysql新手入门操作_第26张图片

查询、设置字符集

要统一character_set_clientcharacter_set_results。设置方法:

  • 一次性设置所有字符集:set names ‘gbk’
    Mysql新手入门操作_第27张图片
  • set character_set_client=gbk;
  • set character_set_connection=gbk;
  • set character_set_results=gbk;

数据表中一旦有了数据后,就不要修改编码格式了。

字段类型

整数

类型 大小
Tinyint 8位
smallint 16位
mediumint 24位
int 32位
bigint 64位

mysql默认整形为有符号整型。如果需要无符号数:应该写成:tinyint unsigned。
如果让数据显示从左侧填充0,用zerofill。填充0,只能是正整数。
Mysql新手入门操作_第28张图片
显示长度:数据在显示的时候,到底可以显示多长位。
Mysql新手入门操作_第29张图片

Mysql新手入门操作_第30张图片

设置默认补0显示几位:
Mysql新手入门操作_第31张图片

小数

类型 精度
float 4字节存储数据。7位精度, 10^38
double 8字节存储数据。15位精度 ,10^308
decimal 定点数,保证数字位数精确

基本语法:

  • float :不指定小数位的浮点数
  • float(M,D):一共存储M个有效数字,其中小数部分占D位。

Mysql新手入门操作_第32张图片
如果丢失精度,按照四舍五入舍弃。
Mysql新手入门操作_第33张图片
用户不能插入数据直接超过指定的长度,但是如果是系统仅为导致的,系统可以承担。

可以用科学计数法插入数据:
Mysql新手入门操作_第34张图片

  • Decimal
    Decimal(M, N),总共10位,小数点后2位。
    Mysql新手入门操作_第35张图片
    Mysql新手入门操作_第36张图片
    Mysql新手入门操作_第37张图片

时间日期类型

Date

日期类型:系统使用三个字节来存储数据,对应格式:YYYY-mm-dd,表示范围:1000-01-01到9999-12-12 。初始值:0000-00-00

Time

时间类型:同样三个字节储存,对应格式:HH:iii::ss,时分秒。但是mysql中time类型能表示的时间范围要大得多。从-838:59:59到838:59:59。在MySQL中具体用处描述时间段。本质上就是用来表示时间区间的。
时间类型输入的时候,如果有空格,比如5 12:12:12,就是 5*24+12=132小时,也就变成了:132:12:12

Datetime

日期时间类型。就是将前面的date和time合并起来,用8个字节储存。格式:YYYY-mm-ddHH:ii:ss,表示范围:1000-01-01 00:00:00到9999-12-23 23:59:59.初始值全0.

Timestamp

时间戳类型,mysql中表示格林尼治时间开始的时间,格式依然是YYYY-mm-dd HH:ii:ss。旧版本的MySQL当tuple中有数据被更新的时候,timestamp字段的数据会自动更新。
Mysql新手入门操作_第38张图片

Year

年类型。占用一个字节,表示1900到2155年。有两种具体的数据插入方式:0-99和四位数的具体年。

Mysql新手入门操作_第39张图片
当year进行两位数插入的时候,当数字小于等于69时,默认21世纪.当大于等于70,默认20世纪。

字符串型

Char

基本语法:char(L),L代表字符数,定长数组。

Varchar

变长字符:varchar(L),字符串最长L。L理论长0到65535.
varchar要记录数据长度,所以每个varchar产生后,系统都会在数据后面增加1-2个字节的额外开销,用来保存所占数据的空间长度。
如果数据本身小于127个字节,额外开销一个字节。如果大于等于128,额外开销两个字节。
char和varchar的区别:

  1. char一定会使用指定的空间,varchar会根据数据分配空间。
  2. char查询效率比varchar高,varchar需要查询长度再查找。
  • 如果数据定长,用char类型
  • 如果不确定数据长度,用varchar类型
  • 如果数据长度超过255个字符,不论是否固定长度,都用text

Text

两种文本类型:
Text:普通字符文本
Blob:二进制文本,一般都不会这用用,通常用一个链接只想对应文件本身。

Text也有四种:

  • Tinytext,一个字节保存
  • Text:两个字节保存
  • MediumText:三个字节保存
  • LongText:四个字节保存

实际使用的时候,不用刻意选择text类型,系统会自动判断长度,选择合适的类型。

Enum

枚举类型:数据插入前,先预设几个项,这几个项就是可能最终出现的数据结果。比如某个数据只有几个值,比如(男、女、保密),
基本语法:enum(数据1, 数据2)
create table my_enum( gender enum('男', '女', '保密') );
存储enum的原理:实际上存储的值并不是真正的字符串,而是字符串对应的下标,当系统设定枚举类型的时候,会给美剧中每一个元素定义一个下表,下表用1开始。
Mysql新手入门操作_第40张图片
实际上enum存储的是数值。插入的时候也可以直接插入数值。

Set

集合,将多个数据选项同时保存的数据类型。本质是将指定项对应的二进制位控制,1表示被选中,0表示没被选中。
基本语法:set(‘A’,‘B’,‘C’)。
如果有8个选项,将会使用一个字节进行储存。
16个选项,将会用两个字节进行储存。
Mysql新手入门操作_第41张图片
一开始设置的数据顺序就是保存的顺序。
实际上会把二进制字符串转化为十进制的时候,原来顺序的最左侧为最低位,最右侧有最高位。
Enum:单选
Set:多选。

Mysql记录长度

Mysql中,记录长度的总长度不能超过65535个字节。
varchar能够储存的理论值为65535个字符,字符在不同的字符集下可能占用多个字节。
gbk:65535/2 = 32767…1,varchar还需要两个字节储存字符串长度,所以gbk最长32766个字符。
Mysql新手入门操作_第42张图片
utf8:65535/3 = 21845…0,varchar还需要两个字节储存字符串长度,所以utf8最长21844个字符。
Mysql新手入门操作_第43张图片

列属性

Null

Mysql新手入门操作_第44张图片
Null这一列为YES表示可以为空。
注意:

  1. 设计表的时候,尽量不要让数据为空
  2. MySQL记录长度为65535个字节,如果一个表中有字段允许为null,系统就会保留一个字节来储存null,最终有效储存长度为65534个字节。

默认值

Default
Mysql新手入门操作_第45张图片
在这里插入图片描述
当插入数据的时候,可以显式表明使用默认值。

列描述

Mysql新手入门操作_第46张图片
Mysql新手入门操作_第47张图片
desc看不到说明。
Mysql新手入门操作_第48张图片

主键

创建主键

随表创建

  1. 方案1,在主键字段之后增加primary key属性。
  2. 方案2,在最后增加primary key(字段名)选项。

Mysql新手入门操作_第49张图片

表后增加

Mysql新手入门操作_第50张图片

查看主键

  1. 方案1,查看表结构desc
    Mysql新手入门操作_第51张图片
  2. 方案2,查看创建语句
    Mysql新手入门操作_第52张图片

删除主键

Mysql新手入门操作_第53张图片

复合主键

有时候需要多个主键。用的不是太多。
Mysql新手入门操作_第54张图片
Mysql新手入门操作_第55张图片

主键约束

  1. 当前字段数据不能为空
  2. 当前数据字段不能重复。
    Mysql新手入门操作_第56张图片

主键分类

分类采用主键对应的意义。

  1. 业务主键:具有业务意义
  2. 逻辑主键:自然增长的整形

自增长

填充后会根据之前存在的数据进行自动增加后填充数据。
通常用于逻辑主键。

原理

  1. 系统中维护着一组数据,用来保存当前使用了自动增长属性的字段,记住当前对应的数据值,再给定一个指定的补偿
  2. 数据插入的时候,如果没有给定值,系统会在原始值上加上步长变成新的数值。
  3. 自动增长只适用于数值

使用

再字段之后增加一个属性,auto_increment
Mysql新手入门操作_第57张图片
Mysql新手入门操作_第58张图片

修改

一张表最多只能有一个自增长
Mysql新手入门操作_第59张图片
如果修改后的自增长值比当前自增长最大还大,下一次就会从修改后的值开始增长。否则就会按照当前最大值增长。步长为1.

删除

就是再字段属性之后不再保留auto_increment。
Mysql新手入门操作_第60张图片

初始设置

系统中维护一组关于自增长的值
Mysql新手入门操作_第61张图片

细节

  1. 一张表只能由一个自增长,子整张会升到表选项中。
  2. 如果给定了自增长字段的数据,那么会设定为所赋值,auto_increment基准值也会根据当前插入值发生改变。同上方修改auto_increment一样。

在本地登录远端mysql,运行mysql时需要加上 -h字段。另外在服务器端的mysql里需要进行授权:
grant all privileges on *.* to root@'%' identified by "root";这样的话root用户就可以在任何ip登录,登陆密码是root
Mysql新手入门操作_第62张图片

你可能感兴趣的:(Mysql,Mysql)