MYSQL学习笔记-1
相关专业术语
数据库: 数据库是一些关联表的集合。
数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
列: 一列(数据元素) 包含了相同的数据, 例如邮政编码的数据。
行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
外键:外键用于关联两个表。
复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
表头(header): 每一列的名称;
列(col): 具有相同数据类型的数据的集合;
行(row): 每一行用来描述某条记录的具体信息;
值(value): 行的具体信息, 每个值必须与该列的数据类型相同;
键(key): 键的值在当前列中具有唯一性。
MYSQL数据库操作
- mysql -u root -p
输入正确的密码后,将连接到数据库服务 - exit
退出数据库管理系统
MYSQL数据类型
合理定义数据表中各字段的数据类型,对数据库的性能优化是非常重要的。
MySQL支持多种类型,大致可以分为三类:数值、日期/时间、字符串/字符
数值类型 | 字节数 | 用途 |
---|---|---|
TINYINT | 1 | 小整数值 |
SMALLINT | 2 | 大整数值 |
MEDIUMINT | 3 | 大整数值 |
INT或INTEGER | 4 | 大整数值 |
BIGINT | 8 | 极大整数值 |
FLOAT | 4 | 单精度浮点数值 |
DOUBLE | 8 | 双精度浮点数值 |
DECIMAL | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | 小数值 |
时间类型 | 字节数 | 用途 | 格式 |
---|---|---|---|
DATE | 3 | 日期值 | YYYY-MM-DD |
TIME | 3 | 时间值或持续时间 | HH:MM:SS |
YEAR | 1 | 年份值 | YYYY |
DATETIME | 8 | 混合日期和时间值 | YYYY-MM-DD HH:MM:SS |
TIMESTAMP | 4 | 混合日期和时间值,时间戳 | YYYYMMDD HHMMSS |
字符串类型 | 字节数 | 用途 |
---|---|---|
CHAR(n) | 0-255 | 定长字符串 |
VARCHAR(n) | 0-64K | 变长字符串 |
TINYBLOB | 0-255 | 不超过 255 个字符的二进制字符串 |
TINYTEXT | 0-255 | 短文本字符串 |
BLOB | 0-64K | 二进制形式的长文本数据 |
TEXT | 0-64K | 长文本数据 |
MEDIUMBLOB | 0-16MB | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16MB | 中等长度文本数据 |
LONGBLOB | 0-4GB | 二进制形式的极大文本数据 |
LONGTEXT | 0-4GB | 极大文本数据 |
备注:
1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以 char 类型存储的字符串末尾不能有空格,varchar 不限于此。
2.char(n) 固定长度,char(4) 不管是存入几个字符,都将占用 4 个字节,varchar 是存入的实际字符数 +1 个字节(n<=255)或2个字节(n>255),所以 varchar(4),存入 3 个字符将占用 4 个字节。
3.char 类型的字符串检索速度要比 varchar 类型的快。
4.varchar 可指定 n,text 不能指定,内部存储 varchar 是存入的实际字符数 +1 个字节(n<=255)或 2 个字节(n>255),text 是实际字符数 +2 个字节。
5.text 类型不能有默认值。
6.varchar 可直接创建索引,text 创建索引要指定前多少个字符。varchar 查询速度快于 text, 在都创建索引的情况下,text 的索引似乎不起作用。
MySQL关键字 | 含义 |
---|---|
NULL | 数据列可包含NULL值 |
NOT NULL | 数据列不允许包含NULL值 |
DEFAULT | 默认值 |
PRIMARY KEY | 主键 |
AUTO_INCREMENT | 自动递增,适用于整数类型 |
UNSIGNED | 无符号 |
CHARACTER SET name | 指定一个字符集 |
常用SQL语句
- USE mydb
选择要操作的数据库,使用该命令后所有sql命令都只针对该数据库。 - SHOW DATABASES
列表显示数据库管理系统中的所有数据库。 - SHOW TABLES
列表显示当前数据库中的所有数据表。 - SHOW COLUMNS FROM mytable
显示数据表的属性,属性类型,主键信息 ,是否为 NULL,默认值等其他信息。 - SHOW INDEX FROM mytable
显示数据表的详细索引信息,包括PRIMARY KEY(主键)。 - SHOW TABLE STATUS FROM mydb [LIKE ‘pattern’]
将输出Mysql数据库管理系统的性能及统计信息。 - CREATE DATABASE mydb
创建数据库(注:用户需要有对应的权限) - DROP DATABASE mydb
删除数据库(注:用户需要有对应的权限) - SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N]
[ OFFSET M]
查询表中数据 - INSERT INTO table_name ( field1, field2,…fieldN )
VALUES ( value1, value2,…valueN );
向表中某些列插入数据 - INSERT INTO table_name
VALUES ( value1, value2,…valueN );
向表中所有列插入数据(自增主键的列填null或0,可以自增)