1. 基础知识
- 数据库(DATABSE)—表(TABLE)—列(COLUMN)+行(ROW)
- 数据库名——表名——列名。
- 数据库中行称为记录,列称为字段。
- 语句后一定要加分号
;
- 核心是 增删改查
- 不能有空行
参考资料:阿里云天池 SQL入门与实践
2. 基本操作命令
2.1 对数据库进行操作
2.1.1 创建数据库
CREATE DATABASE <数据库名>;
--示例
CREATE DATABASE shop;
2.1.2 删除数据库
DROP DATABASE <数据库名>;
--示例
DROP DATABASE shop;
2.1.3 激活(打开)数据库
USE <数据库名>;
--示例
USE shop;
2.2 对表进行操作
2.2.1 创建表
CREATE TABLE <表名>(
<列名1> <数据类型> <对列的约束>,
<列名2> <数据类型> <对列的约束>
);
--示例
CREATE TABLE product(
product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
sale_price INTEGER,
purchase_price INTEGER,
regist_date DATE,
PRIMARY KEY(product_id)
);
- 不同数据库中的表可能重名,因此对表的操作只能在激活数据库后进行
(Error Code: 1046. No database selected Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar)
- 创建表时需要指出表中有哪些列(表头),不能创建一个没有任何列的空表
(Error Code: 4028. A table must have at least one visible column)
- 列的数据类型必须指出,约束可以不指出
2.2.2 删除表
DROP TABLE <表名>;
--示例
DROP TABLE product;
- 由于数据库可能和表重名,因此使用
CREATE
和DROP
时要指出是DATABASE
还是TABLE
- 实际可能对多张表进行操作,所以激活数据库后不再激活
USE
表,而是使用FROM
打开表
清空表的内容
TRUNCATE TABLE table_name
- 相比
drop
、delete
,truncate
用来清除数据时,速度最快。
2.2.3 对表进行修改
(1)添加新的一列
ALTER TABLE <表名> ADD COLUMN <列名> <数据类型> <对列的约束>;
--示例
ALTER TABLE product ADD COLUMN product_name_pinyin VARCHAR(100);
- 加入的列不能与当前表中的列重名
Error Code: 1060. Duplicate column name ‘product_id’
(2)删除已存在的列
ALTER TABLE <表名> DROP COLUMN <列名>;
--示例
ALTER TABLE product DROP COLUMN product_name_pinyin
(3)向表中插入新的记录
INSERT INTO <表名> (列1, 列2, 列3, ……) VALUES (值1, 值2, 值3, ……);
--示例
INSERT INTO product VALUES
('0002', '打孔器', '办公用品', 500, 320, '2009-09-11'),
('0003', '运动T恤', '衣服', 4000, 2800, NULL),
('0004', '菜刀', '厨房用具', 3000, 2800, '2009-09-20');
- 记录为空用
NULL
表示 - 不能在
NOT NULL
列 插入NULL
值 - 查看对表中各列的设置(列名、列的数据类型、列的约束、列的默认值)
SHOW COLUMNS FROM <表名>;
--示例
SHOW COLUMNS FROM product;
(4)更新/修改已经存在的记录
UPDATE <表名>
SET <列名> = <表达式>;
--示例
UPDATE product
SET regist_date = '2009-10-10';