目录:
1.创建逻辑库
- 创建逻辑库
CREATE DATABASE逻辑库名称
; - 显示所有的逻辑库名称
SHOW DATABASES; - 删除指定逻辑库
DROP DATABASE逻辑库名称
;
2.创建数据表
CREATE TABLE 数据表 (
列名1 数据类型 [约束] [COMMENT 注释],
列名1 数据类型 [约束] [COMMENT 注释],
…
) [COMMENT 注释];
//示例
CREATE TABLE student(
id INT UNSIGNED PRIMARY KEY,
name VARCHAR(20) NOT NULL,
sex CHAR(1) NOT NULL,
birthday DATE NOT NULL,
tel CHAR(11) NOT NULL,
remark VARCHAR(200)
);
3.操作数据表
- 插入语句
INSERT INTO student VALUES (1,"张三","男","2021-10-1","15905032806","法外狂徒张三");
- 添加字段
格式: ALTER TABLE表名称
ADD列1 数据类型 [约束] [COMMENT 注释]
,
ADD列1 数据类型 [约束] [COMMENT 注释]
,
…;
ALTER TABLE student
ADD address VARCHAR(200) NOT NULL,
ADD home_tel CHAR(11) NOT NULL;
- 删除字段
格式: ALTER TABLE表名称
DROP列1
,
DROP列1
,
…;
ALTER TABLE student
DROP home_tel,
DROP home_address;
- 修改字段类型和约束
格式: ALTER TABLE表名称
MODIFY列1 数据类型 [约束] [COMMENT 注释]
,
MODIFY列1 数据类型 [约束] [COMMENT 注释]
,
…;
ALTER TABLE student
MODIFY home_tel VARCHAR(20) NOT NULL;
- 修改字段名称
格式: ALTER TABLE表名称
CHANGE列1 新列名1 数据类型 [约束] [COMMENT 注释]
,
CHANGE列1 新列名1 数据类型 [约束] [COMMENT 注释]
,
…;
ALTER TABLE student
CHANGE address home_address VARCHAR(200) NOT NULL;
-
添加 删除索引
添加索引
CREATE INDEX索引名称
ON表名(字段)
;
ALTER TABLE表名
ADD INDEX[索引名(字段)]
;查询某张表设置了哪些索引
SHOW INDEX FROM表名
;
删除某列索引
DROP INDEX索引名称
ON表名
;
//添加
CREATE INDEX idx_type ON t_message(type);
ALTER TABLE t_message ADD INDEX idx_type(type);
//显示
SHOW INDEX FROM t_message;
//删除
DROP INDEX idx_type ON t_message;
- 数据表其他操作
//查询当前逻辑空间数据表名字
SHOW tables;
//查询表格具体情况
DESC student;
//查询某张表 建表语句
SHOW CREATE TABLE student;
//删除表格
DROP TABLE student;
4.数据类型
- Number
类型 | 大小 | 范围(SIGNED/UNSIGNED) | 说明 |
---|---|---|---|
TINYINT | 1 字节 | -128~127 / 0~255 | 小整数 |
SMALLINT | 2 字节 | -32768~32767 / 0~65535 | 普通整数 |
MEDIUMINT | 3 字节 | -8388608~8388607 / 0~16777215 | 普通整数 |
INT | 4 字节 | -2147483648~2147483647 / 0~4294967295 | 较大整数 |
BIGINT | 8 字节 | -9223372036854775808~9223372036854775807 / 0~18446744073709551615 | 大整数 |
FLOAT | 4 字节 | - | 单精度浮点数 |
DOUBLE | 8 字节 | - | 单精度浮点数 |
DECIMAL | -------- | 作为字符串存储的 DOUBLE 类型 | DECIMAL(10,2) |
- TEXT
类型 | 大小 | 说明 |
---|---|---|
CHAR | 1-255字符 | 固定长度字符串 |
VARCHAR | 1-65535字符 | 不固定长度字符串 |
TEXT | 1-65535字符 | 不确定长度字符串 |
MEDIUMTEXT | 1-16,777,215字符 | 不确定长度字符串 |
LONGTEXT | 1- 4,294,967,295字符 | 不确定长度字符串 |
- DATE
类型 | 大小 | 说明 |
---|---|---|
DATE | 3字节 | 日期 格式:YYYY-MM-DD 注释:支持的范围是从 ‘1000-01-01’ 到 ‘999912-31’ |
TIME | 3字节 | 时间 格式:HH:MM:SS 注释:支持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’ |
YEAR | 1字节 | 2 位或 4 位格式的年 注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值:70 到 69,表示从 1970 到 2069。 |
DATETIME | 8字节 | *日期和时间的组合 格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’ |
TIMESTAMP | 4字节 | 时间戳。TIMESTAMP 值使用 Unix 纪元(‘1970-01-01 00:00:00’ UTC) 至今的秒数来存储。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC |
5.数据库操作语言
5.1数据库基本查询
- 基本查询语句是有
SELECT
和FROM
关键字组成
// * 返回所有字段
SELECT * FROM t_message;
//返回指定字段
SELECT context,type FROM t_message;
- 分页查询
SELECT…FROM… LIMIT起始位置,偏移量
;
SELECT * FROM t_message LIMIT 0,5;
- 排序查询
SELECT … FROM … ORDER BY列名[ASC|DESC]
;
ASC: 升序(默认)
DESC: 降序
如果排列字段相同,默认按住键排序
SELECT * FROM t_message ORDER BY salary DESC;
- 去除重复记录
SELECT DISTINCT字段
FROM表名
只能查询一个字段,多个字段不生效.
SELECT DISTINCT job FROM t_message;
job
android
java
c++
kotlin
5.2数据库条件查询
查询一种或几种条件的记录,使用WHERE字句来筛选.
SELECT…FROM…WHERE 条件[AND|OR] 条件...
;
SELECT * FROM t_message WHERE job="android" AND salary>20;
id content type create_time salary job
1 测试 通报 2021-12-10 16:27:55 200 android
3 李四 通报 2021-12-18 10:23:32 900 android
SELECT * FROM t_message WHERE content REGEXP "[a-zA-Z]";
id content type create_time salary job
8 momo 公告 2022-01-09 14:01:16 1800 kotlin
比较运算
表达式 | 意义 | 例子 |
---|---|---|
IS NULL | 为空 | comm IS NULL |
IS NOT NULL | 不为空 | comm IS NOT NULL |
BETWEEEN AND | 范围 | salary BETWEEN 100 AND 900 |
LIKE | 模糊查询 | ename LIKE"A%" |
REGEXP | 正则表达式 | ename REGEXP “a-zA-Z{4}” |
5.3聚合函数
聚合函数可以对数据求和,求最大值最小值,求平均值等.
1)AVG() 平均值
统计非空值的平均值,非数字类型统计结果为0
SELECT AVG(salary) From t_message;
AVG(salary)
1014.2857
2)SUM() 求和
SUM()只能用于数字类型,字符类型的统计结果为0,日期类型统计毫秒值相加
SELECT SUM(salary) FROM t_message;
SUM(salary)
7100
3)MAX() 最大值 - MIN()最小值
SELECT MAX(salary) From t_message WHERE job="Android";
MAX(salary)
1500
SELECT MAX(salary) From t_message WHERE job="Android" AND salary IN(200,900);
MAX(salary)
900
4)COUNT()
COUNT(*)用于包含空值的记录数,COUNT(列名)用于获得包含非空值记录
SELECT COUNT(*),COUNT(job) FROM t_message;
COUNT(*) COUNT(job)
7 7