目录

一、使用命令行窗口连接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 t3INSERT 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 = 32766CREATE 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 t15MODIFY job VARCHAR(60) NOT NULL DEFAULT ''
-- 删除 sex 列。
ALTER TABLE t15DROP sex
-- 表名改为 employee。
RENAME TABLE t15 TO employee
-- 修改表的字符集为 utf8
ALTER TABLE employee CHARACTER SET utf8
-- 列名 name 修改为 user_name
ALTER TABLE employeeCHANGE `name` user_name VARCHAR(64)NOT NULL DEFAULT''DESC employee -- 显示表结构,可以查看表的所有列

MySQL攻略(1)相关推荐

  1. MySQL攻略(2)

    目录 一.Insert语句 使用细节 二.Update语句 使用细节 三.Delete语句 使用细节 四.Select语句 4.1使用细节 4.2 使用表达式对查询的列进行运算 4.3 在select ...

  2. MySQL攻略 -DAO和增删改查通用方法-BasicDAO的认知与实现、案例练习

    文章目录 DAO和增删改查通用方法-BasicDao 分析问题 图形介绍 基本说明 应用实例 utils包 domain包 DAO包 test包 案例练习 DAO包 domain包 test包 DAO ...

  3. MySQL攻略 - JDBC程序SQL注入,PreparedStatement接口详解与案例练习,JDBC相关API小结

    文章目录 SQL注入 Statement详解 基本介绍 Navicat演示SQL注入 JDBC演示SQL注入 PreparedStatement详解 基本介绍 预处理好处 预处理案例(selete语句 ...

  4. MySQL攻略 - 函数篇(各类函数统计、练习、细节、表格)

    文章目录 合计/统计函数 count 案例练习 sum 案例练习 avg 案例练习 Max/Min 案例练习 分组查询 group by having 部门表源码 案例练习 字符串相关函数 函数表格 ...

  5. MySQL与优化有关的命令_MySQL优化全攻略-相关数据库命令

    MySQL优化全攻略-相关数据库命令 更新时间:2006年11月25日 00:00:00   作者: 接下来我们要讨论的是数据库性能优化的另一方面,即运用数据库服务器内建的工具辅助性能分析和优化. ▲ ...

  6. mysql数据库导出最大值_4.6 MySQL数据库导入与导出攻略

    4.6 MySQL数据库导入与导出攻略 4.6.1 Linux下MySQL数据库导入与导出 1. MySQL数据库的导出命令参数 主要是通过两个mysql和mysqldump命令来执行 (1) MyS ...

  7. apache php mysql配置详解,详细介绍:Apache+PHP+MySQL配置攻略_php基础

    一.系统要求: 本系统在REDHAT7.2版本测试通过 二.服务器端软件要求: 1:到APACHE的网络站下载APACHE WEB SERVER http://www.apache.org/ 2. 到 ...

  8. linux下安装配置apache+php,linux下安装apache与php;Apache+PHP+MySQL配置攻略

    linux下安装apache与php;Apache+PHP+MySQL配置攻略 时间:2019-10-09 20:04 1.apache 在如下页面下载apache的for Linux 的源码包 ht ...

  9. 超级菜菜鸟全程架站攻略(Mysql+Apche+PHP+Phpmyadmin+Zend,含本机安装)

    作者:蚂蚁啃骨头 时间:2005年5月1日 欢迎访问蚂蚁啃骨头社区:http://bbs.mykgt.com --本文是我5月份刚学PW一个来月时写的攻略,因自己对语言一窍不通,只好自己琢磨+摸索,用 ...

最新文章

  1. POJ 1144 Network (求割点)
  2. 为什么尽量避免使用 CSS 表达式
  3. 压缩感知的阶段性总结
  4. K8s Pod 钩子生命周期
  5. 如何在Java中使用重复项查找整数数组中的K个缺失数字?
  6. GoldenGate Logdump基本使用
  7. 随笔分类 - HALCON学习例程中文详解
  8. Ubuntu Linux系统下搭建自己的Web服务器
  9. HTML5 基础知识
  10. python随机分组的思路_python – 对对象进行分组以实现所有组的类似平均属性
  11. mysql workbench首页_MySQL Workbench是干什么的?
  12. 怎么做自媒体,这份入门攻略,建议收藏
  13. Linux LED子系统调试与应用 设备树官方文档与 gpio-leds.c 源码详解
  14. ChatGpt替代医生可能性分析
  15. CUDA的Occupancy和Achieved Occupancy概念
  16. 软件测试流程规范简介(不同公司流程规范不一样,仅供参考)
  17. 【完整的WebGIS教程】6.1 使用ArcGIS Server发布要素服务
  18. 陀螺研究院 | 产业区块链发展周报(11.14—11.20)
  19. c语言适用于大型的 复杂的软件系统开发,c语言是什么
  20. Linux 给文件夹里面的所有文件授权

热门文章

  1. 基于LSTM的情感识别在鹅漫电商评论分析中的实践与应用
  2. php mysql某小型汽车维修店信息管理系统zjyY3
  3. 浙江省初中计算机知识点,浙江省信息技术学业水平考试重要知识点整理归纳
  4. win10安装消息队列服务器,win10下celery搭建使用
  5. win10下docker部署nginx+node+mongodb+redis学习
  6. jQuery教程_编程入门自学教程_菜鸟教程-免费教程分享
  7. 区块链报错3 | truffle unbox 报错 | downloading失败 | unbox failed
  8. 为什么电脑无限重启,难道是我的电脑装了无限宝石?
  9. 公众号如何裂变涨粉?
  10. 赵小楼《天道》深度解析(75)客观是对现有事实的认可,嘴上认可可不行,得心里认,否则就是自欺