关键字不一定使用大写,一般是便于区分内容

  1. 数据库操作

创建数据库

1
CREATE DATABASE `demo`;

反引号主要是用于防止创建的名称和关键字重复导致报错,如database

创建之后可以用show检查是否已经生成

1
SHOW DATABASE;

删除数据库

1
DROP DATABASE `demo`;

使用数据库

1
USE `demo`;
  1. 表格操作

先了解一下有哪些数据类型

int decimal(m,n) varchar(n) blob date timestamp
整数 小数 m代表总共几位数,n代表小数点部分占几位数 字符串 n代表存放多少字节 图片 影像 档案 ‘YYYY-MM-DD’ 日期 ‘YYYY-MM-DD HH:MM:SS’ 记录时间

创建表格

1
2
3
4
5
CREATE TABLE `student`(
`student_id` INT PRIMARY KEY,
`name` VARCHAR(20),
`major` VARCHAR(20)
);

每行执行语句后加上逗号分隔开,在主键字段后加上PRIMARY KEY设置主键

1
2
3
4
5
6
CREATE TABLE `student`(
`student_id` INT,
`name` VARCHAR(20),
`major` VARCHAR(20),
PRIMARY KEY(`student_id`)
);

或者在最后加上 PRIMARY KEY(主键名称)

限制

1
2
3
4
5
6
7
8
CREATE TABLE `student`(
`student_id` INT AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`gender` VARCHAR(5) DEFAULT `wuzhuang`,
`major` VARCHAR(20) UNIQUE,
`score` INT,
PRIMARY KEY(`student_id`)
);

AUTO_INCREMENT:会自动由1开始增加,减少手动输入带来的失误(一般用于设计主键),插入数据时也可以不用填入

NOT NULL:该属性的值不能为空

DEFAULT:设置预设值,若没有填写就会按预设值填入

UNIQUE:该属性的值是唯一的(不能出现与该值重复的)

外键设置

假设创建student表格之前已经创建了这样一个表格

1
2
3
4
5
CREATE TABLE `teacher`(
`teacher_id` INT PRIMARY KEY,
`teacher_name` VARCHAR(20),
`class` VARCHAR(20)
);

现在创建student表格要再增加一项任课老师id并设置为外键

1
2
3
4
5
6
7
8
9
CREATE TABLE `student`(
`student_id` INT AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`gender` VARCHAR(5) DEFAULT `wuzhuang`,
`major` VARCHAR(20) UNIQUE,
`score` INT,
`teacher_id` INT,
FOREIGN KEY (`teacher_id`) REFERENCES `teacher`(`teacher_id`) ON DELETE SET NULL
);

或者在原有的student基础上直接添加外键

1
2
3
4
ALTER TABLE `student`
ADD FOREIGN KEY(`teacher_id`)
REFERENCES `teacher`(`teacher_id`)
ON DELETE SET NULL;

ON DELETE SET NULL:当主键被删除时,表中对应外键值为NULL

ON DELETE CASCADE:当主表中的记录被删除时,从表中所有引用该主键的记录也会被自动删除

查看表格属性

1
DESCRIBE `student`;

注意表的查看跟数据库不太一样:表使用的是describe,数据库用的是show

删除表格

1
DROP TABLE `student`;

新建属性

1
2
ALTER TABLE `student` 
ADD gpa DECIMAL(3,2);

删除属性

1
2
ALTER TABLE `student`
DROP COLUMN gpa;
  1. 数据的增删改查

增加表中数据

1
INSERT INTO `student` VALUE(1,`ano`,`吉他`);

括号中的顺序按照上面创建表的属性的顺序一致

1
INSERT INTO `student`(`name`,`major`,`student_id`) VALUE('riki','架子鼓',2);

或者在表名称后加上需要存储的属性,在VALUE后按相应顺序写入存储数据

(非主键部分可以不录入,相当于null)

1
INSERT INTO `student`(`name`,`student_id`) VALUE('soyo',3);

tips:如果新增数据有是外键的属性,需要提前插入外键对应表格属性的元素,否则对应不上会出现报错

检查表中录入数据

1
SELECT * FROM `student`;

*代表的是搜索全部

1
SELECT `name`,`major` FROM `student`;

只展示表中name和major中的数据

1
2
SELECT * FROM `student`
ORDER BY `score`;

将表中的顺序按照score升序排序,如果要降序排序的话需要在score后加上DESC(没有写时预设为ASC,由低到高排序)

1
2
SELECT * FROM `student`
ORDER BY `score`,`student_id`;

先按照score排序,如果分数相同的话再按id排序

1
2
3
SELECT * FROM `student`
ORDER BY `score`
LIMIT 2;

限制只展示前两笔数据

1
2
SELECT * FROM `student`
WHERE `major` = '架子鼓' AND `major` = '主唱';

WHERE条件查询在查找中也可以使用,也可以跟上面的几种用法混用

tips:不等于在sql中的符号为<>

1
2
SELECT * FROM `student`
WHERE `major` IN('架子鼓','主唱');

效果跟上面一样,只会显示major为架子鼓或主唱的学生信息,不用写太多个OR避免误差

修改数据

1
2
3
UPDATE `student`
SET `major` = `主唱`
WHERE `name` = `ano`;

UPDATE后接要进行修改的表格,SET选择需要修改的属性信息,WHERE选择修改的条件(如修改哪位学生,修改哪个id的属性)

如果没有增加修改的条件,会将表中的全部属性修改

1
2
3
UPDATE `student`
SET `name` = 'tomorin',`major` = '主唱'
WHERE `name` = 'ano';

修改的属性不止一个时需要用逗号隔开

1
2
3
UPDATE `student`
SET `major` = '主唱'
WHERE `student_id` = 1 OR `student_id` = 2;

条件有多个时可以用OR或AND连接

删除数据

1
2
DELETE FROM `student`
WHERE `student_id` = 1;

直接删除了id为1的整排数据。如果有多个条件也可以使用OR或AND连接