MySQL数据库(1)

目录

SQL语句分类

创建数据库

查看删除数据库

备份恢复数据库

备份库的表

使用命令行窗口连接MYSQL数据库

细节

创建表

Mysql常用数据类型(列类型)

数值型(int)基本使用

数值型(bit)基本使用

数值型(小数)基本使用

字符串的基本使用

字符串的使用细节


SQL语句分类

在MySQL中sql语句主要分为这几类,分别是

DDL : 数据定义语句 [create 表,库...]

DML: 数据操作语句 [增加 insert ,修改 update,删除 delete]

DQL: 数据查询语句[select ]

DCL : 数据控制语句[管理数据库: 比如用户权限 grant revoke ]

创建数据库

1.CHARACTER SET: 指定数据库采用的字符集,如果不指定字符集,默认utf8

2.COLLATE: 指定数据库字符集的校对规则(常用的 utf8 bin[区分大小写]、utf8 general ci[不区分大小写] 注意默认是 utf general ci)[举例说明database.sql 文件]

代码演示

#演示数据库的操作
#创建一个名称为db01的数据库

#使用指令创建数据库
CREATE DATABASE db01
#删除数据库指令
DROP DATABASE db01
#创建一个使用utf8字符集的db02数据库
CREATE DATABASE db02 CHARACTER SET utf8
#创建一个使用utf8字符集,并带对校验规则的db03数据库
CREATE DATABASdE db03 CHARACTER SET utf8 COLLATE utf8_bin
#校对规则 utf8_bin 区分大小写 默认utf8_general-ci 不区分大小写

#下面是一条查询的sql,select 查询 * 表示所有字段 FORM 从哪个表查询 WHERE 表示从哪个字段 NAME ='tom'查询的名字是tom
SELECT * FROM t1 WHERE NAME ='tom'

查看删除数据库

显示数据库语句:SHOW DATABASES

显示数据库创建语句:SHOW CREATE DATABASE db name

数据库删除语句:DROP DATABASE [IF EXISTS] db name

代码演示:

#演示删除和查询数据库
#查看当前数据库服务器中的所有数据库
SHOW DATABASES
#查看前面创建的db01数据库的定义信息
SHOW CREATE DATABASE db01
#在创建数据库,表的时候,为了规避关键字,可以使用反引号解决
#删除前面创建的db01数据库
DROP DATABASE db01

备份恢复数据库

备份数据库(注意: 在DOS执行)命令行mysqldump -u 用户名 -p -B 数据库1 数据库2 数据库n > 文件名sql

恢复数据库(注意: 进入SQLyog再执行)Source 文件名.sql

备份库的表

mysqldump -u 用户名 -p密码 数据库 表1 表2 表n > d: 文件名.sql

主要这里要登录MySQL命令行的界面

使用命令行窗口连接MYSQL数据库

1.mysql-h 主机名 -P 端口 -u 用户名 -p密码

2.登录前,保证服务启动

也就是要使用管理员的身份运行,命令提示符 ,然后执行 net start mysql

细节

(1)-p密码不要有空格

(2)-p后面没有写密码回车会要求输入密码

(3)如果没有写-h 主机,默认就是本机

(4)如果没有写-P 端口,默认就是3306

(5)在实际工作中3306一般修改

创建表

character set 字符集

collate 校对规则

engine 存储引擎

field: 指定列名

datatype: 指定列类型(字段类型)

character set:如不指定则为所在数据库字符集

collate: 如不指定则为所在数据库校对规则

engine: 引擎(这个涉及内容较多,尽面单独讲解)

以上是在创建表的过程中可能会使用到的,关键字,接下来看看这么样创建一张表

代码演示

在下面的这段sql语句中,create table 表示的意思是创建一张表格 后面跟的就是表名,也就是我们这张表的名字叫什么

后面跟的就是表的字段 ,比如 id int ,表示id这个字段是整形的,注意在sql中,语法比较特殊,是类型写在后面,而Java中是类型写在前面

最后的character set utf8 的意识就是设置当前这张表格的字符集为utf-8,注意如果不写的话,那么默认使用的就是当前数据库的字符集

CREATE TABLE `user`( 
            id INT , 
            `name` VARCHAR(255),
            `password` VARCHAR(255),
            `birthday` DATE)
             CHARACTER SET utf8 

Mysql常用数据类型(列类型)

数值型(int)基本使用

1.说明,使用规范:在能够满足需求的情况下,尽量选择占用空间小的类型

代码演示:

#演示整型的是一个
#使用tinyint 来演示范围 有符号 -128 ~ 127  如果没有符号 0-255
#说明: 表的字符集,校验规则, 存储引擎,使用默认的
#1. 如果没有指定 unsinged , 则TINYINT就是有符号
#2. 如果指定 unsinged , 则TINYINT就是无符号 0-255
CREATE TABLE t3(
		id TINYINT);#表示创建了一个表名为t3 字段名叫做id 类型为TINYINT

CREATE TABLE t4 (
	id TINYINT UNSIGNED);
	
INSERT INTO t3 VALUES(127); #这是非常简单的添加语句
SELECT * FROM t3 ; #因为t3这个表使用的类型是tinyint 因此只能添加-128~127之间 的数据

INSERT INTO t4 VALUES(255);
SELECT * FROM t4;#简单的查询语句表示对t4这张表,进行查询

数值型(bit)基本使用

细节说明 字段显示时,按照 位的方式显示

查询的时候仍然可以用使用 添加的数值

如果一个值只有 0,1 可以考虑使用 bit(1),可以节约空间

位类型。M指定位数,默认值1,范围1-64使用不多

代码演示:

#演示bit类型使用
#说明
#1. bit(m) m 在 1-64
#2. 添加数据 范围 按照你给的位数来确定,比如m = 8 表示一个字节 0~255
#3. 显示按照bit 
#4. 查询时,仍然可以按照数来查询
CREATE TABLE t05 (num BIT(8));#表示创建了一个表格名子为t05  有一个字段是num类型是bit
INSERT INTO t05 VALUES(255); #表示给t05这个表格添加一个数据 因为指定了8位因此范围最大是0~255之间
SELECT * FROM t05;
SELECT * FROM t05 WHERE num = 1;

数值型(小数)基本使用

1.FLOAT/DOUBLE [UNSIGNED] Float 单精度精度,Double 双精度

2.DECIMAL[M,D] [UNSIGNED]

可以支持更加精确的小数位。M是小数位数(精度)的总数,D是小数点(标度)后面的位数。

如果D是0,则值没有小数点或分数部分。M最大65。D最大是30。如果D被省略,默认是0。如果M被省略,默认是10.

建议:如果希望小数的精度高,推荐使用decimal

代码演示:

#演示decimal类型、float、double使用

#创建表
#表示创建一个名字为t06的表 有有三个字段,类型分别是float double decimal其中decimal的30表示小数点左边也就是整数
#部分可以保存的位数,后面的20表示小数为可以保存的位数
CREATE TABLE t06(num1 FLOAT ,num2 DOUBLE ,num3 DECIMAL(30,20));

#添加数据
INSERT INTO t06 VALUES(88.12345678912345, 88.12345678912345,88.12345678912345);
SELECT * FROM t06;

#decimal可以存放很大的数
CREATE TABLE t07 (
	num DECIMAL(65));
INSERT INTO t07 VALUES(8999999933338388388383838838383009338388383838383838383);

SELECT * FROM t07;
CREATE TABLE t08(
	num BIGINT UNSIGNED)
#这里会添加不成功因为不够存放这个数据
INSERT INTO t08 VALUES(8999999933338388388383838838383009338388383838383838383);
SELECT * FROM t08;

字符串的基本使用

CHAR(size)

固定长度字符串 最大255 字符

VARCHAR(size) 0~65535

可变长度字符串 最大65532字节 [utf8编码最大21844字符 1-3个字节用于记录大小]

代码演示:

#演示字符串类型使用char varchar
#注释的快捷键 shift+ctrl+c , 注销注释 shift+ctrl+r
-- CHAR(size)
-- 固定长度字符串 最大255 字符 
-- VARCHAR(size)    0~65535字节
-- 可变长度字符串 最大65532字节  【utf8编码最大21844字符 1-3个字节用于记录大小】
-- 如果表的编码是 utf8 varchar(size) size = (65535-3) / 3 = 21844
-- 如果表的编码是 gbk varchar(size) size = (65535-3) / 2 = 32766
CREATE TABLE t09 (
	`name` CHAR(255));#表示创建一个表名为t09的表 字段名是name 类型是char 最大支持255个字符

CREATE TABLE t10 (`name` VARCHAR(32766)) CHARSET gbk;
#VARCHAR是可变的字符串长度最大可以支持65535个字节,但是实际情况下要根据编码来判断 因为varchar会留下
#1到3个字节左右记录大小,并且根据不同的编码实际大小会有不同

DROP TABLE t10;

字符串的使用细节

细节1

1.char(4) //这个4表示字符数(最大255),不是字节数,不管是中文还是字母都是放四个,按字符计算

.varchar(4)//这个4表示字符数 ,不管是字母还是中文都以定义好的表的编码来存放数据.

不管是 中文还是英文字母,都是最多存放4个,是按照字符来存放的.

细节2

char(4)是定长(固定的大小),就是说,即使你 插入aa’,也会占用 分配的4个字符的空间.

·varchar(4)是变长(变化的大小),就是说,如果你插入了aa',实际占用空间大小并不是4个字符,而是按照实际占用空间来分配(

说明:varchar本身还需要占用1-3个字节来记录存放内容长度) L(实际数据大小)+(1-3)字节

细节3

什么时候使用 char,什么时候使用varchar

1.如果数据是定长,推荐使用char,比如md5的密码,邮编,手机号,身份证号码等.char(32)

2.如果一个字段的长度是不确定,我们使用varchar,比如留言,文章

查询速度:char > varchar

细节4

在存放文本时,也可以使用Text 数据类型.可以将TEXT列视为VARCHAR列,注意 Text 不能有默认值.大小 0-2A16 字节如果希望存放更多字符,可以选择MEDIUMTEXT 0-2^24 或者 LONGTEXT O~2A32

代码演示:

#演示字符串类型的使用细节
#char(4) 和 varchar(4) 这个4表示的是字符,而不是字节, 不区分字符是汉字还是字母
CREATE TABLE t11(
	`name` CHAR(4));
INSERT INTO t11 VALUES('明天你好');

SELECT * FROM t11;

CREATE TABLE t12(
	`name` VARCHAR(4));
INSERT INTO t12 VALUES('明天你好');#注意我们在上面指定了只能使用4个字符不是字节,而且不区分字母和汉字多一个字母也不行

INSERT INTO t12 VALUES('ab北京');
SELECT * FROM t12;

#如果varchar 不够用,可以考试使用mediumtext 或者longtext, 
#如果想简单点,可以使用直接使用text
CREATE TABLE t13( content TEXT, content2 MEDIUMTEXT , content3 LONGTEXT);
INSERT INTO t13 VALUES('明天你好啊', '明天你好啊100', '明天你好啊1000~~');
SELECT * FROM t13;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值