Mysql总结
1.数据库的操作
1.1 显示当前数据库
SHOW DATABASES;
示例:
1.2 创建数据库
CREATE DATABASE test1;
示例:
//如果系统没有 test2 的数据库,
//则创建一个名叫 test2 的数据库,如果有则不创建
CREATE DATABASE IF NOT EXISTS test2;
//如果系统没有 db_test 的数据库,
//则创建一个使用utf8mb4字符集的 db_test 数据库,如果有则不创建
CREATE DATABASE IF NOT EXISTS db_test CHARACTER SET utf8mb4;
1.3 使用数据库
use test1;
示例:
1.4 删除数据库
DROP DATABASE [IF EXISTS] test1;
示例:
2. 常用数据类型
2.1 数值类型
数据类型 | 大小 |
---|---|
BIT[ (M) ] | M指定位数,默认为1 |
TINYINT | 1字节 |
SMALLINT | 2字节 |
INT | 4字节 |
BIGINT | 8字节 |
FLOAT(M,D) | 4字节(单精度,M指定长度,D指定小数位数。会发生精度丢失) |
DOUBLE(M,D) | 8字节 |
DECIMAL(M,D) | M/D最大值+2(双精度,M指定长度,D表示小数点位数。精确数值) |
NUMERIC(M,D) | M/D最大值+2 (和DECIMAL一样) |
2.2 字符串类型
数值类型 | 大小 | 说明 |
---|---|---|
VARCHAR(SIZE) | 0-65,535字节 | 可变长度字符串 |
TEXT | 0-65,535字节 | 长文本数据 |
MEDIUMTEXT | 0-16 777 215字节 | 中等长度文本数据 |
BLOB | 0-65,535字节 | 二进制形式的长文本数据 |
2.3 日期类型
数据类型 | 大小 | 说明 |
---|---|---|
DATETIME | 8字节 | 范围从1000到9999年,不会进行时区的检索及转换。 |
TIMESTAMP | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换。 |
3. 表的操作
需要操作数据库中的表时,要先使用该数据库
use test
3.1 查看表结构
desc new1
示例:
Field:字段名字
Type:字段类型
Null: 是否允许为空
Key: 索引类型
Default:默认值
Extra: 扩充
3.2 创建表
//语法:
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
);
示例:
可以使用comment增加字段说明:
CREATE TABLE new2(
id int,
name varchar(20) comment '姓名',
password varchar(50) comment '密码'
);
3.3 删除表
//删除表new1
drop table new1;
//如果存在new1表,则删除
drop table if exists new1;
4. 表的增删改查
4.1 增加(INSERT)
单行数据+全列插入:
//values 数量必须和定义表的列的数量及顺序一致
insert into new2 values(1,'jack','123456');
多行数据+指定列插入
insert into new2(id,name,password) values
(2,'li','555555'),
(3,'mic','888888');
4.2 查询(SELECT)
//创建考试成绩表
DROP TABLE IF EXISTS exam_result;
CREATE TABLE exam_result (
id INT,
name VARCHAR(20),
chinese DECIMAL(3,1),
math DECIMAL(3,1),
english DECIMAL(3,1)
);
全列查询:
// 通常情况下不建议使用 * 进行全列查询
// 1. 查询的列越多,意味着需要传输的数据量越大;
// 2. 可能会影响到索引的使用。
select * from exam_result;
指定列查询:
// 指定列的顺序不需要按定义表的顺序来
SELECT id, name, english FROM exam_result;
查询字段为表达式:
// 表达式不包含字段
SELECT id, name, 10 FROM exam_result;
// 表达式包含一个字段
SELECT id, name, english + 10 FROM exam_result;
// 表达式包含多个字段
SELECT id, name, chinese + math + english FROM exam_result;
4.3 去重(DISTINCT)
SELECT DISTINCT math FROM exam_result;
4.4 排序(ORDER BY)
//升序
select id,math from exam_result order by math ;
//降序
select id,math from exam_result order by math desc;