MySQL 数据库的操作主要包括:
MySQL 数据库操作方式:
数据库命名的规则:
MySQL 数据库操作语句:
创建数据库:CREATE DATABASE 数据库名;
找数据库位置:SHOW VARIABLES LIKE ‘datadir’;
选择数据库:USE 数据库名;
修改数据库的 MySQL 语句:
ALTER DATABASE [数据库名] [DEFAULT] CHARACTER SET <字符集>| [DEFAULT] COLLATE <比较规则>;
example:
ALTER DATABASE test DEFAULT CHARACTER SET gb2312;
查看数据库:SHOW DATABASES;
删除数据库:DROP DATABASE 数据库名;
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
TINYINT | 1 字节 | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2 字节 | (-32 768,32 767) | (0,65 535) | 大整数值 |
MEDIUMINT | 3 字节 | (-8 388 608,8 388 607) | (0,16 777 215) | 大整数值 |
INT 或 INTEGER | 4 字节 | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) | 大整数值 |
BIGINT | 8 字节 | (-9223372036854775808, 9223372036854775 807) |
(0,18 446 744 073709 551 615) | 极大整数值 |
例如:定义年龄字段 age 为无符号数:
age tinyint unsigned
类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
---|---|---|---|---|
FLOAT | 4 字节 | -3.402 823 466 E+38 ~-1.175 494 351 E-38 |
0 和 1.175 494 351 E-38 ~3.402 823 466 E+38 |
单精度浮点数值 |
DOUBLE | 8 字节 | -1.797 693 134 862 315 7 E+308 ~-2.225 073 858 507 201 4 E-308) |
0 和 2.225 073 858 507 201 4 E-308 ~1.797 693 134 862 315 7E+308 |
双精度浮点数值 |
DECIMAL | DECIMAL(length, precision) | length 决定小数的最大位数 precision 用于设置小数位数 |
length 定小数的最大位数 precision 用于设置小数位数 |
小数值 |
精确小数类型 decimal
decimal(length, precision) 用于表示精度确定(小数点后数字的位数确定)的小数类型,length 决定该小数的最大位数,precision 用于设置精度(小数点后数字的位数)。
例如:
decimal (5,2) 表示小数取值范围:-999.99~999.99
decimal (5,0) 表示: -99999~99999 的整数。
类型 | 大小 | 范围 | 格式 | 用途 |
---|---|---|---|---|
DATE | 3 | ‘1000-01-01’~’9999-12-31’ | YYYY-MM-DD | 日期值 |
TIME | 3 | '-838:59:59‘~‘838:59:59’ | HH:MM:SS | 时间值或持续时间 |
YEAR | 1 | ‘1901’~’2155’ | YYYY | 年份值 |
DATETIME | 8 | ‘1000-01-01 00:00:00’ ~’9999-12-31 23:59:59’ |
YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | ‘1970-01-01 00:00:00’~’2038’ | YYYY-MM-DD HH:MM:SS | 混合日期和时间值,时间戳 |
类型 | 大小 | 用途 |
---|---|---|
CHAR(n) | 0-255字节 | 定长字符串 |
VARCHAR(n) | 0-65535 字节 | 变长字符串 |
TINYTEXT | 0-255字节 | 短文本字符串 |
TEXT | 0-65 535字节 | 长文本数据 |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 |
LONGTEXT | 0-4 294 967 295字节 | 极大文本数据 |
字符串类型在数据外观上使用单引号括起来,如 Teacher_name = ‘潘多拉’
类型 | 最大值 | 说明 |
---|---|---|
Enum (“value1”, “value2”, …) | 65535 | 该类型的列只可以容纳所列值之一或为 NULL |
Set (“value1”, “value2”, …) | 64 | 该类型的列可以容纳一组值或为 NULL |
example:
Gender enum(‘男’, '女)
Interest set(‘唱歌’, ‘游泳’, '网球’)
类型 | 大小 | 用途 |
---|---|---|
Binary(n) | 0-255字节 | 较短的二进制 |
VARBinary(n) | 0-65535 字节 | 较长的二进制 |
Bit(n) | 0-64字节 | 短二进制 |
TINYBLOB | 0-255字节 | 较短的二进制 |
BLOB | 0-65 535字节 | 图片、声音等文件 |
MEDIUMBLOB | 0-16 777 215字节 | 图片、声音、视频等文件 |
LONGBLOB | 0-4 294 967 295字节 | 图片、声音、视频等文件 |
选择合适的数据类型 , 能节省储存空间 ,提升计算性能。
执行脚本:source E:\sql\test.sql
MySql三种注释写法:
#code
/* code */
-- code
create table 表名(
字段名1 数据类型 [约束条件],
字段名2 数据类型 [约束条件],
…
[其他约束条件],
[其他约束条件]
)其他选项;
CREATE TABLE department(
Department_id char(3) NOT NULL PRIMARY KEY COMMENT ‘学院编号’,
Department_name varchar(10) NOT NULL COMMENT ‘学院名称’
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
SQL语句关键字说明:
方式一:DESCRIBE/DESC 表名
方式二:SHOW CREATE TABLE 表名
查看数据列表命令:show tables;
drop table 表名;
如果表之间存在外键约束关系,应先删除外键约束条件,再删除表,或者先删子表,再删父表。
包括修改字段相关信息,约束条件,其他选项
ALTER TABLE 表名 alter_spec [, alter_spec ...];
alter_spec定义要修改的内容,其常见语法片段如下:
ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name] --添加新字段
| ADD [CONSTRAINT [symbol]] PRIMARY KEY (index_col_name,...) --添加主键
| ADD [CONSTRAINT [symbol]]UNIQUE (index_col_name,...) --添加唯一索引
| ADD [CONSTRAINT [symbol]] FOREIGN KEY (index_col_name,...)
reference (index_col_name,...) --添加外键
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} --修改默认值
| CHANGE [COLUMN] old_col_name new_col_name column_definition --修改字段名及数据类型
| MODIFY [COLUMN] col_name column_definition --修改字段类型
| DROP [COLUMN] col_name --删除字段
| DROP PRIMARY KEY --删除主键
| DROP INDEX index_name --删除索引名称
| DROP FOREIGN KEY fk_symbol --删除外键
| table_options --更改表的其它选项
查看完整命令:Help alter table;
向表添加新字段:
删除字段:
example:
修改表的字段名及数据类型:
只修改表字段数据类型:
example:
默认情况下,从 1 开始递增,步长为 1。自增型字段必须为整形,建议设为主键设置自增型字段:
注:只有 int 类型且为 primary key 才可以使用 auto_increment.
example:
数据完整性包括
添加主键、外键、唯一性约束条件:
主键约束(primary key):确保表中每一行记录是唯一的,一个表只能有一个主键,主键的值不能重复而且不能为空(null)。
添加主键:
删除主键约束的语法格式:
example:
外键约束(foreign KEY):用于保证外键字段值与父表中主键字段值的一致性,外键字段值要么是 NULL,要么是父表中主键字段值的复制。
添加外键:
删除外键:
example:
外键约束级联选项参数说明
参数名称 | 功能描述 |
---|---|
cascade | 父表记录的删除(delete)或修改(update)操作,会自动删除或修改子表中与之对应的记录 |
set null | 父表记录的删除(delete)或修改(update)操作,会将子表中与之对应记录的外键自动设置为 null 值 |
no action | 父表记录的删除(delete)或修改(update)操作,如果子表存在与之对应的记录,那么删除或修改操作将失败 |
restrict | 与 no action 功能相同,是默认设置,也是最安全的设置 |
example:
唯一性约束(unique):用于保证表中某个字段的值不重复且值能为空( null),一个表可以定义多个唯一性约束。
添加唯一性约束:
删除唯一性约束:
example:
非空约束(not null):用于保证表中某个字段的值不能取 null 值。
添加非空约束:
默认值约束(default):用于指定一个字段的默认值。插入记录时,如果没有给该字段赋值,数据库系统会自动为这个字段插入默认值。
添加默认值约束:
删除默认值约束:
example:
alter table 表名 engine=新的存储引擎类型
alter table 表名 default charset=新的字符集
alter table 表名 auto_increment=新的初始值
alter table 表名 pack_keys=新的压缩类型
表记录操作包括:插入记录,修改记录,删除记录,查询记录
example:
语法格式一:INSERT INTO 表名[(字段列表)] VALUES(值列表)
插入一条记录,只对部分字段赋值
插入一条记录,对所有字段都赋值
一次插入多条记录
MySQL特殊字符序列
每个字符序列以反斜线符号“\”开头,且字符大小写敏感,转义成对应的字符
MySQL中的特殊字符序列 | 转义后的字符 |
---|---|
\" | 双引号(") |
\’ | 单引号(‘) |
\\ | 反斜杠(\) |
\n | 换行符 |
\r | 回车符 |
\t | 制表符 |
\0 | ASCII 0(NUL) |
\b | 退格符 |
\_ | _ |
\% | % |
语法格式二:insert into 目标表名[(字段列表1)] select (字段列表2) from 源表 where 条件表达式
该语句向表中插入从另一个或多个表查询的结果集。
replace 命令:
replace 与 insert 的区别:使用 replace 向表插入新记录时,如果新记录的主键值或者唯一性约束的字段值与已有记录相同,则先删除已有记录,然后再插入新记录(注意:已有记录删除时也不能违背外键约束条件)。
插入有约束的数据
向默认值约束字段插入数据时,字段值可以使用 default 关键字,表示插入的是该字段的默认值。
表之间存在外键约束时,外键的值要么是 null,要么是父表中主键字段的值。
向 auto_increment 字段插入数据时,建议插入 NULL 值,此时将向自增型字段插入下一个编号。
example:
语法格式:
update 表名 set 字段名1=值1,字段名2=值2,…… ,字段名n=值n [where 条件表达式];
其中,set 子句指定了要修改的字段以及该字段修改后的值。where 子句指定了表中需要修改的记录。若省略了 where,则修改表中的所有记录。
example:
语法格式:
delete from 表名 [where 条件表达式];
说明:如果没有指定 where 条件,将删除所有的记录;如果指定了 where 条件,将按照指定的条件进行删除。
从多表中删除有外键约束的记录时,外键级联规则选项设置为 cascade 。
清空某个表,使用 truncate 语句,语法格式如下:
truncate [table] 表名;
说明:truncate table用于完全清空一个表。清空记录的表如果是父表,truncate命令将永远执行失败。
example: