MySQL基础笔记

676 查看

MySQL基础笔记

标签(空格分隔): 未分类


1 MySQL基础

1.1 MySQL安装

MSI安装/zip安装

1.2 MySQL配置

  1. MySQL配置向导
    MySQL server/bin/MySQLInstanceConfig.exe

  2. MySQL目录结构

  • bin目录,存储可执行文件

  • data目录,存储数据文件

  • docs,文档

  • include目录,存储包含的头文件

  • lib目录,存储库文件

  • share目录,错误消息和字符集文件

  1. MySQL的配置选项

  • 修改编码方式

1.3 MySQL启动与停止

  1. 启动服务

  2. 命令行
    net start mysql

1.4 登录与退出

mysql参数:

参数 描述
-D,--database=name 打开指定数据库
--delimiter=name 指定分隔符
-h,--host=name 服务器名称
-p,--password[=name] 密码
-P,--port=# 端口号
--prompt=name 设置提示符
-u,--user=name 用户名
-V,--version 输出版本信息并退出

退出命令:exit,quit,\q

1.5 修改提示符

  1. 连接客户端时,通过--prompt 提示符修改

  2. 连接上客户端后,通过prompt 提示符命令修改

参数 描述
\D 完整的日期
\d 当前数据库
\h 服务器名称
\u 当前用户

1.6 常用命令及语法规范

  • SELECT VERSION();

  • SELECT NOW();

  • SELECT USER();

关键字与函数名称全部大写

数据库名称、表名称、字段名称全部小写
SQL语句必须以分号结尾

1.7 操作数据库

  1. 创建数据库

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name

花括号必选,竖线选择,中括号可选

  1. 查看当前服务器下的数据库

SHOW {DATABASES | SCHEMAS} [LIKE 'pattern' | WHERE expr]
  1. 修改数据库

ALTER {DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name
  1. 删除数据库

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name

2 数据类型与数据表操作

2.1 数据类型

2.1.1 整型

数据类型 存储范围 字节
TINYINT $-2^7到2^7-1或0到2^7-1$ 1
SMALLINT $-2^{15}到2^{15}-1或0到2^{16}$ 2
MEDIUMINT $-2^{23}到2^{23}-1或0到2^{24}-1$ 3
INT $-2^{23}到2^{31}-1或0到2^{32}-1$ 4
BIGINT $-2^{63}到2^{63}-1或0到2^{64}-1$ 8

2.1.2 浮点型

数据类型 存储范围
FLOAT[(M,D)] M是数字总位数,D是小数点后的位数。38次数量级
DOUBLE[(M,D)] 308次数量级

2.2 数据表

2.2.1 创建数据表

打开数据库

USE 数据库名称;

创建数据表

CREATE TABLE [IF NOT EXISTS] table_name (
column_name data_type,
...
)

2.2.2 查看数据表

SHOW TABLES [FROM db_name]
[LIKE 'pattern' | WHERE expr]

查看数据表结构

SHOW COLUMNS FROM tbl_name

2.2.3 记录的插入与查找

插入记录

INSERT [INTO] tbl_name [(col_name,...)] VALUES(val,...)

查找

SELECT expr,... FROM tbl_name

2.2.4 空值与非空

NULL 字段值可以为空
NOT NULL 字段值禁止为空

2.2.5 自动编号

AUTO_INCREMENT
自动编号,且必须与主键组合使用
默认情况下,起始值为1,增量为1
主键约束,每张表只能存在一个主键,主键保证记录的唯一性,主键自动为NOT NULL

2.2.6 初涉唯一约束

UNIQUE KEY
唯一约束的字段可以为空值,每张数据表可以存在多个唯一约束

2.2.7 初涉默认约束

默认值
当插入记录时,如果没有明确为字段赋值,则自动赋予默认值

3 约束以及修改数据表

3.1 外键约束的要求解析

3.1.1 约束:

  1. 约束保证数据的完整性和一致性;

  2. 约束分为表级约束和列级约束;

  3. 约束类型包括:

    `NOT NULL`非空约束
    `PRIMARY KEY`主键
    `UNIQUE KEY`唯一约束
    `DEFAULT`默认约束
    `FOREIGN KEY`外键约束
    

3.1.2 外键约束FOREIGN KEY

保证数据一致性、完整性
实现一对一或一对多关系
外键约束的要求:

  1. 父表和子表必须使用相同的存储引擎,而且禁止使用临时表。

  2. 数据表的存储引擎只能为InnoDB

  3. 外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。

  4. 外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

编辑数据表的默认存储引擎
MySQL配置文件my.ini
default-storage-engine=INNODB

3.2 外键约束的参照操作

外检约束的参照操作

  1. CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行;

  2. SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL

  3. RESTRICT:拒绝对父表的删除或更新操作;

  4. NO ACTION:标准SQL关键字,在MySQL中与RESTRICT相同。

表级约束与列级约束
对一个数据列建立的约束,称为列级约束。
对多个数据列建立的约束,称为表级约束。
列级约束既可以在列定义时声明,也可以在定义后声明。
表级约束只能在列定义后声明。

3.3 修改数据表

3.3.1 添加/删除列

添加单列

ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST |AFTER col_name]

删除列

ALTER TABLE tbl_name DROP [COLUMN] col_name

3.3.2 添加约束

添加主键约束

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...)

添加唯一约束

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)

添加外键约束

ALTER TABLE tbl_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) reference_definition

添加/删除默认约束

ALTER TABLE tbl_name ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}

3.3.3 删除约束

删除主键约束

ALTER TABLE tbl_name DROP PRIMARY KEY

删除唯一约束

ALTER TABLE tbl_name DROP {INDEX|KEY} index_name;

删除外键约束

ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol

3.3.4 修改列定义和更名数据表

修改列定义

ALTER TABLE tbl_name MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name}

修改列名称

ALTER TABLE tbl_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST | AFTER col_name]

数据表更名
方法一

ALTER TABLE tbl_name RENAME[TO|AS] new_tbl_name

方法二

RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2]...

4 操作数据表中的记录

4.1 INSERT语句

插入记录

INSERT [INTO] tbl_name [(col_name,...)] {VALUES | VALUE} ({expr | DEFAULT},...),(...),...