【学习:Mysql数据库一】

一、数据库创建

1.1 基本语法

建库!

CREATE DATABASE db_name charset=utf8 collate utf8_general_ci;

charset : 字符集(默认)utf8collate : 校对规则(默认:不区分大小写utf8_general_ci

补充说明:

1、当charsetutf8时,可以存放中文
2、当数据库的charsetutf8时,该数据库下的表的编码自然就是utf8
3、如果你在cmd控制台下操作,那么我们需要在mysql的控制台,设置是一个指令 set names gbk

collate:utf8_general_ci utf8_bin 对比

utf8_general_ci

1、如果校验规则是 默认 utf8_general_ci, 在查询时,字母不区分大小写
2、默认排序规则:
这里写图片描述
3、查询:
这里写图片描述

utf8_bin

1、区分字母的大小写
2、那么在排序时,是安字母的ascii大小排序
这里写图片描述
3、查询:
这里写图片描述

二、数据库相关操作

2.1 数据库相关指令

1、show databases                                                 显示数据库
2、show create database 数据库名                     显示创建数据库的指令
3、/*!40100 DEFAULT CHARACTER SET utf8 */ 这句话不是注释,表示 如果mysql的版本大于 mysql4.01.00就执行后面的语句 DEFAULT CHARACTER SET utf8
4、 drop database 数据库的名字                            删除数据库
5、show processlist                                              查看当前mysql数据库连接进程情况

2.2 修改、备份、恢复数据库

修改!

ALERT DATABASE [IF EXISTS] db_name;//[ ]可选
// 例如: ALERT DATABASE [IF EXISTS] mydb collate=utf8_bin;

备份!(1.备份单库和恢复单库)
> 备份单库

mysql> mysqldump  -u root  -p  mydb > d:/mydb.bak   //备份到 `d:/mydb.bak`,注意有 > 

> 恢复单库

mysql> create  database   mydb1;
mysql> use  mydb1; 
mysql> source  d:/mydb.bak

备份!(2.备份多表(库)和恢复多表(库))
> 备份多表

mysql> mysqldump -u root -p mydb user1 user2 > d:/mytable.bak //备份mydb数据库下的user1、user2表

> 恢复多表(就是恢复之前备份表)

mysql> source  d:/mytable.bak   //必须保证你已经use 对应的数据库(不一定非得是 mydb 库)

> 备份多库

mysql> mysqldump -u root -p  -B mydb1 mydb2 > d:/mydb12.bak  //注意有 -B

> 恢复多库

mysql> source  d:/mydb12.bak

注意!

如果我们备份和恢复数据库的表中有中文,请先执行 set names gbk

三、数据表的创建

3.1 基本语法

CREATE TABLE table_name(
    field1 datatype,
    field2 datatype,
    ... ... 
)character set 字符集 collate 校对规则 engine 存储引擎方式         //这里的顺序无所谓

character set    默认是使用你的表所在的数据库的字符集,如果你这里指定了,以这个为主
collate                默认是使用你的表所在的数据库的校对规则,如果你这里指定了,以这个为主
engine                 存储引擎,常见的有(MyISAMInnoDBMemory),Mysql在V5.1之前默认存储引擎是MyISAM
                              在此之后默认存储引擎是InnoDB

MyISAMInnoDB
> MyISAM

*.frm 表结构; *.MYD 表数据; *.MYI 表索引
这里写图片描述

> InnoDB

*.frm 表结构;其它的数据放在文件夹上级的 ibdata1日志文件
这里写图片描述

四、数据类型

4.1 数值类型图

这里写图片描述

4.2 日期和时间类型图

这里写图片描述

4.3 字符串类型图

这里写图片描述

4.4 0填充 zerofill


4.5 float 和 decimal

floatdecimal 区别
这里写图片描述
3.float(M,D)[unsigned] 单精度浮点精确到大约7 位。
  deciaml(M,D)[unsigned] 更精确小数,如果D0,值没有小数点或分数部分;decimal 最大位数(M)为65 。支持十进制的最大(D )是30 。如果D 被省略,默认是 0 ,如果M 省略,默认是10

一句话:float[M,D]没有给M,D就是表示存放精度到小数位数7的值;decimal[M,D] 没有给M,D 就是deciaml(10)

这里写图片描述
越界

关于越界的问题时,如果floatdecimal数据越界,系统会先进行四舍五入,如果四舍五入后仍然越界就报错

例如:
float(4,2) ,但是插入数据是99.991 // 插入了5位,但是最后四舍五入99.99,存入数据库是99.99,不报错。
float(4,2) ,但是插入数据是99.995 // 插入了5位,但是最后四舍五入100.00,存入报错!out of range value for column 'xxx'...

4.6 字符串

1、varchar(n):
如果表的编码是 utf8, 那么 这 n值就是65532/3 = 21844 , 因为utf8编码是一个字符占用3个字节;
如果表的编码是 gbk, 那么 这 n值就是65532/2 = 32766,因为gbk编码一个字符占用2个字节
如果编码是latin1,则可以是 n = 65532, 因为一个字符就是1个字节
2、varchar(n) 和char(n) 的n表示的是字符数而不是字节数

4.7 日期和时间类型

date [年月日] // 日期
datetime [年月日时分秒] // 日期
timestamp [年月日时分秒] // 时间戳,在你添加或者修改一条记录时,会自动的更新

4.8 枚举类型

enum        //单选

1、基本语法
字段名 enum(‘选项1’, ‘选项2’, ‘选项n’)
例如:insert into name values('男')
2、细节
类型enum可以通过数字表示对于的选项值,顺序是 1,2,3,...65535,使用的时候,可以使用选项的字符串格式,也可以使用对应的数字。

set        //多选

1、基本语法
字段名 set(‘选项1’, ‘选项2’, ‘选项n’)
例如:insert into name values('水果,葡萄,橘子')
2、细节
类型set可以通过数字表示对于的选项值,顺序是 1,2,4,8,16,32...,使用的时候,可以使用set选项的字符串本身(多个选项用逗号分隔),也可以使用多个选项的数字之和(比如:1+2+4=7
3、set注意!
find_in_set是专门用于进行set检索的函数。find_in_set(str, strlist)
str就是你要查找的选项, strlist就是集合所在的字段 // 这里为了避免用like 模糊搜索漏洞

4.9 如何将显示的信息对齐显示

1、数据库登录时,要指定登录的编码

mysql>  mysql --default-character-set=latin1 -u root -p
mysql>  set  names  gbk

五、表的修改

5.1 语法

[添加]   ALTER TABLE tablename ADD (column datatype[DEFAULT expr]...);
[修改]   ALTER TABLE tablename MODIFY (column datatype[DEFAULT expr]...);
[删除]   ALTER TABLE tablename DROP (column datatype[DEFAULT expr]...);

案例

// 1、增加一个image列(要求在name后面)  
alter table goods add `image` varchar(64) not null default='' after name;

// 2、修改job列,使其长度为40
alter table goods modify `job` varchar(40) not null default= '';

// 3、删除color列
alter table goods drop `color`; 

// 4、表名改为books [这里是rename]
rename table goods to `books`; 

// 5、修改表的字符集为utf8
alter table bookds charset=utf8;

// 6、列名name修改为user_name  [这里用 change ] 
alter table bookds change `name` `user_name` varchar(64) not null default '' ;  

5.1 修改表的时候的注意事项

1、如果删除了某个字段,那么该字段所有数据都没有, 因此要谨慎
2、修改字段的长度,必须满足当前已经存在的数据的长度小于你要修改的长度
3、修改字段类型,必须满足当前已经存在的数据可以转成你新的数据类型

5.2 mysql自带的帮助

// 方式1
? create
// 方式2
? create table

猜你喜欢

转载自blog.csdn.net/hello_sgw/article/details/81066111