目录
MySQL操作数据库
查看,选择数据库
use db1;-- 切换到某个数据库并使用
show databases;-- 显示当前全部数据库
show tables;-- 显示当前数据库中所有表
select * from t1;-- 选取表中指定、全部列
describe t1; -- 显示表的所有内容(外键等)
创建、删除数据库或者表
-- 对数据库:
create database db1; -- 创建数据库
drop database db1;-- 删除数据库
create table t1(id int auto_increment primary key,
name char(10),
class int not null default 1) engine = innodb;-- 创建表
drop table t1;-- 删除表
delete from t1; -- 清空表(保持自增
truncate from t1; -- 清空表(归零
-- innodb: 原子性操作 myisam:非原子性操作
-- auto_increment:自增
-- primary key: 表示约束,不能重复且不为空
插入、删除数据
insert into t1(id,name) values (1,'小明'); -- 将特定数据插入表
delete from t1 where id < 6;-- 删除数据
update t1 set age = 18; -- 修改age列全部行为18
update t1 set age = 18 where age = 17;-- 限制仅修改age = 17的
数据类型
数字:
整数
(unsigned/signed) bigint 表示数字最多
int 中等
tinyint 最少
小数
float,double:double更准确,但都不准
decimal永远精准(底层为字符串)
举例
create table t1(
num decimal(10,5)
); -- 前一位表示总位数,后面表示小数点后位数
字符串:
char(10)
varchar(10)
char定长好查找,varchar变长节省空间,先存char后存varchar
text,mediumtext,longtext
时间:
DATE
TIME
YEAR
DATETIME 最重要
TIMESTAMP
其他
enum 枚举
set 集合
BLOB TEXT 长串文字结构
外键
可以理解为和其他表的索引,方便将复杂且重复的表项用数字表示
举例
Table: subject
Create Table: CREATE TABLE `subject` (
`id` int NOT NULL AUTO_INCREMENT,
`title` char(15) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
Table: t1
Create Table: CREATE TABLE `t1` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`subject` int DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `s_id` (`subject`),
CONSTRAINT `s_id` FOREIGN KEY (`subject`) REFERENCES `subject` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=34 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
外键用foreign key表示,这里将subject 的学科和t1中的数字关联,由此之后填表无需输入学科名称,只需插入数字即可