MySQL攻略(1)

14 篇文章 0 订阅
本文详细介绍了如何通过命令行连接MySQL数据库,数据库的三层结构,数据存储方式,SQL语句分类,包括创建、查看和删除数据库,以及备份恢复和表的创建。还深入讲解了各种数据类型如数值型、字符串和日期的使用。
摘要由CSDN通过智能技术生成

目录

一、使用命令行窗口连接MySQL数据库

操作示意图

二、数据库三层结构

三、数据在数据库中的存储方式

四、SQL语句分类

五、创建数据库

六、查看、删除数据库

七、备份恢复数据库

八、创建表

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

9.1 数值型(整数)的基本使用

9.2 如何定义一个无符号的整数

9.3 数值型(bit)的使用

9.4 数值型(小数)的基本使用

9.5 字符串的基本使用

9.6 字符串使用细节

9.7 日期类型的基本使用

十、修改表


一、使用命令行窗口连接MySQL数据库

1. 使用管理员身份打开cmd,输入:cd /D D:\mysql\mysql-5.7.19-winx64\bin 切到该目录

2. 启动mysql服务,指令:net start mysql        停止mysql服务指令:net stop mysql

3. 登录保证服务启动,并且输入指令:mysql -h 主机名 -P 端口 -u 用户名 -p密码

4. 退出指令:quit        刷新权限指令:flush privileges;

操作示意图

二、数据库三层结构

1.所谓安装Mysql数据库,就是在主机安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库,DBMS(database  manage  system)

2.一个数据库中可以创建多个表,以保存数据(信息)

3.数据库管理系统(DBMS),数据库和表的关系如下

三、数据在数据库中的存储方式

四、SQL语句分类

  • DDL:数据定义语句【create 表,库...】
  • DML:数据操作语句【增加 insert,修改 update,删除 delete】
  • DQL:数据查询语句【select】
  • DCL:数据控制语句【管理数据库,比如用户权限 grant,revoke】

五、创建数据库

指令:CREATE DATABASE[IF NOT EXISTS] db_name

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

2. COLLATE:指定数据库字符集的校对规则(常用的utf8_bin[区分大小写]、utf8_general_ci[不区分大小写],默认是utf8_general_ci)

#演示数据库的操作

#创建一个名称为ggm_db01的数据库[图形化和指令]
#使用指令创建数据库
CREATE DATABASE ggm_db01
#删除数据库指令
DROP DATABASE ggm_db01

#创建一个使用utf8字符集的ggm_db02数据库
CREATE DATABASE ggm_db02 CHARACTER SET utf8
#创建一个使用utf8字符集,并带校对规则的ggm_db03数据库
CREATE DATABASE ggm_db03 CHARACTER SET utf8 COLLATE utf8_bin
#校对规则 utf8_bin:区分大小写  默认校对规则utf8_general_ci:不区分大小写

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

六、查看、删除数据库

显示当前数据库服务器中的所有数据库语句:SHOW DATABASES

显示数据库创建时定义信息语句:SHOW CREATE DATABASE db_name

删除数据库语句[慎用]:DROP DATABASE [IF EXISTS] db_name

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

#删除前面创建的ggm_db01数据库
DROP DATABASE ggm_db01

七、备份恢复数据库

备份数据库(注意:要在DOS执行)命令行

mysqldump -u 用户名 -p -B 数据库1 数据库2 数据库n > 文件名.sql

提示:-B表示后面都是数据库而不是表,想得到某个库的某个表就不能写-B

恢复数据库(注意:需要先进入Mysql命令行再执行)

source 文件名.sql

#练习:database03.sql  备份ggm_db02和ggm_db03库中的数据,并恢复

#备份,要在Dos下执行mysqldump指令
#这个备份的文件,就是对应的sql语句
mysqldump -u root -p -B ggm_db02 ggm_db03 > d:\\bak.sql

#删除数据库
DROP DATABASE ggm_db03;

#恢复数据库(注意:要先进入mysql命令行再执行)
source d:\\bak.sql
#第二种恢复方法,直接将bak.sql的内容放到查询编辑器中,执行

八、创建表

CREATE TABLE table_name (

        field1 datatype,

        field2 datatype,

        field3 datatype)

character set 字符集  collate 校对规则  engine 存储引擎

field:指定列名

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

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

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

engine:引擎

指令创建表
#注意:hsp_db02 创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型。例:user
#id 		整形 	[图形化,指令]
#name 		字符串
#password 	字符串
#birthday 	日期
CREATE TABLE `user`(
	id INT,
	`name` VARCHAR(255),
	`password` VARCHAR(255),
	`birthday` DATE)
	CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;

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

9.1 数值型(整数)的基本使用

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

#演示整形的使用
#使用tinyint来演示范围(-128~127),如果没有符号(0~255)
#说明:表的字符集,校验规则,存储引擎,使用默认
#1.如果没有指定unsigned,则tinyint就是有符号的
#2.如果指定unsigned,则tinyint就是无符号的(0~255)
CREATE TABLE t2 (
	id TINYINT);
	
CREATE TABLE t3 (
	id TINYINT UNSIGNED);
	
INSERT INTO t2 VALUES(127);#这是一个简单的添加语句

SELECT * FROM t3

INSERT INTO t3 VALUES(255);

9.2 如何定义一个无符号的整数

create table t10(id tinyint);  //默认是有符号的

create table t11(id tinyint unsigned);  //无符号的

9.3 数值型(bit)的使用

1. 基本使用

mysql > create table t05(num bit(8));

mysql > insert into t05(1,3);

mysql > insert into t05 values(2,65);

2. 细节说明

  • bit字段显示时,按照位的方式显示
  • 查询的时候仍然可以用使用添加的数值
  • 如果一个值只有0,1可以考虑使用bit(1),这样可以节约空间
  • 位类型。M指定位数,默认值是1,范围是1-64
  • 实际开发中使用不多
#演示bit类型的使用
#说明
#1.bit(m) m范围在1~64
#2.添加数据 范围按照给定的位数来确定的,比如m=8,表示1个字节(0~255)
#3.显示是按照bit
#4.查询时,仍然可以按照数来查询
CREATE TABLE t4(num BIT(8));
INSERT INTO t4 VALUES(255);
SELECT * FROM t4;
SELECT * FROM t4 WHERE num = 1;

9.4 数值型(小数)的基本使用

1. FLOAT:单精度    /    DOUBLE:双精度

2. DECIMAL[M, D] [UNSIGNED]

  • 可以支持更加精确的小数位。M是小数位数(精度)的总数,D是小数点(标度)后面的位数
  • 如果D是0,则值没有小数点或分数部分
  • M最大65,D最大是30。如果D被省略,默认是0,如果M被省略,默认是10
  • 建议:如果希望小数的精度高,推荐使用decimal
#演示float、double、decimal类型的使用
#创建表
CREATE TABLE t5(
	num1 FLOAT,
	num2 DOUBLE,
	num3 DECIMAL(30,20));
#添加数据
INSERT INTO t5 VALUES(88.12345678912345, 88.12345678912345, 88.12345678912345);
SELECT * FROM t5;

#decimal可以存放很大的数
CREATE TABLE t6(
	num DECIMAL(65));
INSERT INTO t6 VALUES(8999999999945623111111111111111113333222222222288888888);
SELECT * FROM t6;
CREATE TABLE t7(
	num BIGINT UNSIGNED);
INSERT INTO t7 VALUES(8999999999945623111111111111111113333222222222288888888);
SELECT * FROM t7;

9.5 字符串的基本使用

1. CHAR(size)  固定长度字符串 最大255字符

2. VARCHAR(size) 0~65535 可变长度字符串 最大65532字节

【utf8编码最大21844字符,1~3个字节用于记录大小(存储数据的大小不确定,所以是1~3)】

  • 如果表的编码是utf8  varchar(size) size = (65535-3) / 3 = 21844
  • 如果表的编码是gbk  varchar(size) size = (65535-3) / 3 = 21844
#演示字符串类型使用 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 t8(
	`name` CHAR(255));
	
CREATE TABLE t9(
	`name` VARCHAR(21844));

CREATE TABLE t10(
	`name` VARCHAR(32766)) CHARSET gbk;

9.6 字符串使用细节

细节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的密码、右边、手机号、身份证号码等等

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

查询速度:char > varchar

细节4

在存放文本时,也可以使用Text数据类型,可以将TEXT列是为VARCHAR列,注意Text不能有默认值。大小为0~2^16字节

如果希望存放更多字符,可以选择  MEDIUMTEXT(0~2^24)  或者  LONGTEXT(0~2^32)

#演示字符串类型的使用细节
#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('咕咕猫好');
INSERT INTO t12 VALUES('ab南京');
SELECT * FROM t12;

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

9.7 日期类型的基本使用

CREATE TABLE birthday (

        t1 DATE,

        t2 DATETIME,

        t3 TIMESTAMP

                NOT NULL DEFAULT CURRENT_TIMESTAMP

                ON UPDATE CURRENT_TIMESTAMP);

  • 日期类型的细节说明

TimeStamp在Insert和update时,会自动更新

#演示时间相关的类型
#创建一张表,date, datetime, timestamp
CREATE TABLE t14(
	birthday DATE,  -- 生日
	jobtime DATETIME, -- 记录年月日 时分秒
	login_time TIMESTAMP 
	NOT NULL DEFAULT CURRENT_TIMESTAMP 
	ON UPDATE CURRENT_TIMESTAMP); -- 登录时间,如果希望login_time列自动更新,需要配置

SELECT * FROM t14;
	INSERT INTO t14(birthday, jobtime) 
		VALUES('2022-11-11', '2022-11-11 10:10:10');
-- 如果我们更新t14表的某条记录,login_time列会自动的以当前时间进行更新

创建表的练习

#创建表的课堂练习
-- 字段属性
-- Id 	      整形
-- name       字符型
-- sex 	      字符型
-- brithday   日期型(date)
-- entry_date 日期型 (date)
-- job 	      字符型
-- Salary     小数型
-- resume     文本型

CREATE TABLE t15(
	id INT,
	`name` VARCHAR(32),
	sex CHAR(1),
	brithday DATE,
	entry_day DATETIME,
	job VARCHAR(32),
	salary DOUBLE,
	`resume` TEXT) CHARSET utf8 COLLATE utf8_bin ENGINE INNODB;
SELECT * FROM t15;
	INSERT INTO t15 VALUES(100,'咕咕猫', '男', '2000-11-11', '2019-10-10 18:00:09', '会吃', 5000, '晚上吃什么');

十、修改表

使用ALTER TABLE语句追加,修改或删除列的语法

  • 添加列

ALTER TABLE tablename

        ADD 列名 类型

  • 修改列

ALTER TABLE tablename

        MODIFY 列名 类型

  • 删除列

ALTER TABLE tablename

        DROP 列名

  • 其它

查看表的结构:desc 表名; //可以查看表的列

修改表名:Rename table 表名 to 新表名

修改表字符集:alter talbe 表名 character set 字符集

#修改表的练习
-- 员工表 emp 的上增加一个 image 列,varchar 类型(要求在 resume 后面)
ALTER TABLE t15 
	ADD image VARCHAR(32) NOT NULL DEFAULT ''
	AFTER RESUME
-- 修改 job 列,使其长度为 60。
ALTER TABLE t15
	MODIFY job VARCHAR(60) NOT NULL DEFAULT ''
-- 删除 sex 列。
ALTER TABLE t15
	DROP sex
-- 表名改为 employee。
RENAME TABLE t15 TO employee
-- 修改表的字符集为 utf8
ALTER TABLE employee CHARACTER SET utf8
-- 列名 name 修改为 user_name
ALTER TABLE employee
	CHANGE `name` user_name VARCHAR(64)NOT NULL DEFAULT''

DESC employee -- 显示表结构,可以查看表的所有列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值