MySQL学习 | 青训营

61 阅读4分钟

前言:

本篇笔记整理了在学习sql时的一些内容,供平时实践时作为基础手册参考使用

如有错误之处,欢迎批评指正

数据库三层结构

  • 数据库管理系统(DBMS)
  • 数据库
  1. 客户端实际是通过与DBMS建立连接来管理数据库
  2. DBMS可以管理多个数据库
  3. 一个数据库中有多个表,以保存信息
  • 数据在数据库中的存储方式: 表的一行称为一条记录

SQL语句分类

DDL:数据定义语句(create 数据库、表……)

DML:数据操作语句(增删改)

DQL:数据查询语句(查询)

DCL:数据控制语句(管理数据库:如用户权限grant revoke)


MySQL数据类型(列类型,字段类型)

位类型 bit

整型(默认为有符号,要指定为无符号的需在后面加unsigned):

1字节 tinyint

2字节 smallint

3字节 mediummint

4字节 int

8字节 bigint

单精度小数类型 float

双精度小数类型 double

固定长度字符串(size最大255字符) char(size)

可变长度字符串(size最大65532字节,但utf8编码为21844字符) varchar(size)

文本类型 text

二进制数据 blob

日期(YYYY-MM-DD) date

时间(HH:mm:ss) time

日期时间 (YYYY-MM-DD HH:mm:ss)datetime

时间戳 timestamp


相关DOS命令

  • 开启MySQL服务

net start mysql

  • 关闭MySQL服务

net stop mysql

  • 登录MySQL本地终端(一般默认为3306端口)

mysql -u root -p

  • 连接到MySQL服务(MySQL数据库)的指令

mysql -h [主机IP] -P [端口] -u [用户名] -p[密码]

  1. 注意密码紧挨着-p
  2. 登录前,要保证服务是开启的
  • 备份数据库

mysqldump -u [用户名] -p[密码] -B [所需备份的数据库名] >[文件名].sql

  • 备份某个数据库中的表

mysqldump -u [用户名] -p[密码] [数据库名] [所需备份的表名] >[文件名].sql

  • 恢复数据库(需进入mysql再执行)

source [文件名].sql


DDL

Data Definiton Language , 数据定义语言

  • 创建数据库 (未指定字符集和校对规则,默认为utf8和utf8_general_ci)

create database [数据库名];

在创建\删除数据库时,为了规避关键字,可以使用反引号解决,如:

create database `create`;

命名规则: 只能用半角英文字母,数字,下划线作为数据库、表和列的名称,且名称必须以半角英文字母开头。同一个表中不能创建两个名称相同的列

  • 创建一个使用utf8字符集的数据库

create database [数据库名] character set utf8;

  • 创建一个使用utf8字符集,并带校对规则的数据库

create database [数据库名] character set utf8 collate utf8_bin;

utf8_bin 区分大小写

utf8_general_ci 不区分大小写(默认)

  • 查看前面创建数据库时的定义信息

show create database [数据库名];

  • 删除数据库

drop database [数据库名];

  • 展示数据库

show databases;

  • 使用数据库

use [数据库名];

  • 展示当前数据库中的表

show tables;

  • 建表
create table [表名]
(
    [数据名] [类型],
    ……
)character set [字符集] collate [校对规则] engine [引擎];

若字符集和校对规则未指定,默认为所在数据库的字符集和校对规则

  • 删除表

drop table [表名];

  • 表定义的更新(alter 语句):

    • 增加列使用的语法

    alter table [表名] add column [列名];

    • 删除列使用的语法

    alter table [表名] drop column [列名];

DML

Data Manipulation Language , 数据操纵语言

  • 往表中添加数据

insert into [表名] values([数据],……);

  • 从表中删除特定的行(删除在某一列中为特定值的一行)

delete from [表名] where [列名]=[值];

  • 从表中删除所有的行(但不是删除这张表)

delete from [表名];

  • 更新一列

update [表名] set [列名]=[值] where[列名]=[值];

  • 更新多列

update [表名] set [列名]=[值],[列名]=[值]…… where[列名]=[值];

当在使用update语句时,若不加where,即为将表中该列所有的值进行修改:

update [表名] set [列名]=[值];

DQL

  • 查询表中全部数据

select * from [表名];

  • 查询表中某一列的数据

select [列名] from [表名];

  • 查询表中某几列的数据

select [列名],[列名]…… from [表名];

DCL

Data Control Language , 数据控制语言

  • 确认对数据库中的数据进行的变更

commit

  • 取消对数据库中的数据进行的变更

rollback

  • 赋予用户操作权限

grant

  • 取消用户的操作权限

revoke