MySQL基础笔记
标签(空格分隔): 未分类
1 MySQL基础
1.1 MySQL安装
MSI安装/zip安装
1.2 MySQL配置
MySQL配置向导
MySQL server/bin/MySQLInstanceConfig.exe
MySQL目录结构
bin目录,存储可执行文件
data目录,存储数据文件
docs,文档
include目录,存储包含的头文件
lib目录,存储库文件
share目录,错误消息和字符集文件
MySQL的配置选项
修改编码方式
1.3 MySQL启动与停止
启动服务
命令行
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 修改提示符
连接客户端时,通过
--prompt 提示符
修改连接上客户端后,通过
prompt 提示符
命令修改
参数 | 描述 |
---|---|
\D |
完整的日期 |
\d |
当前数据库 |
\h |
服务器名称 |
\u |
当前用户 |
1.6 常用命令及语法规范
SELECT VERSION();
SELECT NOW();
SELECT USER();
关键字与函数名称全部大写
数据库名称、表名称、字段名称全部小写 SQL语句必须以分号结尾
1.7 操作数据库
创建数据库
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name
花括号必选,竖线选择,中括号可选
查看当前服务器下的数据库
SHOW {DATABASES | SCHEMAS} [LIKE 'pattern' | WHERE expr]
修改数据库
ALTER {DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] charset_name
删除数据库
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 约束:
约束保证数据的完整性和一致性;
约束分为表级约束和列级约束;
-
约束类型包括:
`NOT NULL`非空约束 `PRIMARY KEY`主键 `UNIQUE KEY`唯一约束 `DEFAULT`默认约束 `FOREIGN KEY`外键约束
3.1.2 外键约束FOREIGN KEY
保证数据一致性、完整性
实现一对一或一对多关系
外键约束的要求:
父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
数据表的存储引擎只能为
InnoDB
。外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。
编辑数据表的默认存储引擎
MySQL配置文件my.inidefault-storage-engine=INNODB
3.2 外键约束的参照操作
外检约束的参照操作
CASCADE
:从父表删除或更新且自动删除或更新子表中匹配的行;SET NULL
:从父表删除或更新行,并设置子表中的外键列为NULL
。如果使用该选项,必须保证子表列没有指定NOT NULL
;RESTRICT
:拒绝对父表的删除或更新操作;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},...),(...),...