库与表的操作
2021-01-04 本文已影响0人
Yazh
一、数据库相关操作
SELECT VERSION(); -- 查看版本
SELECT USER(); -- 查看当前用户
SHOW DATABASES; -- 查看所有库
USE world; -- 使用 world 库
SELECT DATABASE(); -- 查看当前库
SHOW TABLES; -- 查看当前数据库下所有的表
CREATE DATABASE[IF NOT EXISTS] world; -- 创建库
DROP DATABASE [IF EXISTS] world; -- 删除库
二、数据表相关操作
数据表 table : 数据库中表名唯一,由一个或多个列(column)组成,表中数据按行存储。
DESC table_name; -- 查看表的数据类型
SHOW COLUMNS FROM table_name;
1. 创建表
CREATE TABLE [IF NOT EXISTS] tablename
(字段名 字段类型 【字段约束】
id int NOT NULL AUTO_INCREMENT,
col1 int NOT NULL DEFAULT 1,
col2 CHAR(20) NULL,
PRIMARY KEY(id) );
- AUTO_INCREMENT: 每个表只允许一个AUTO_INCREMENT列,而且必须被索引
- 使用INSERT增加一行时,该列自动增量
- IF NOT EXISTS:用以判断当前数据库是否存在同名表
1. 常见约束
- NOT NULL 非空:用于限制该字段为必填项
- DEFAULT 默认:用于限制该字段没有显式插入值,则直接显式默认值
- PRIMARY KEY 用于限制该字段值不能重复,设置为主键列的字段默认不能为空【一个表只能有一个主键,当然可以是组合主键】
- UNIQUE 唯一:用于限制该字段值不能重复
-
CHECK 检查:用于限制该字段值必须满足指定条件
CHECK(age BETWEEN 1 AND 100) -
FOREIGN KEY 外键:用于限制两个表的关系,要求外键列的值必须来自于主表的关联列
要求:
①主表的关联列和从表的关联列的类型必须一致,意思一样,名称无要求
②主表的关联列要求必须是主键
CONSTRAINT <约束名> FOREIGN KEY <字段名> REFERENCES <表名>(列名)
2. 数据类型
- 整型
TYNYINT
SMALLINT
INT
BIGINT - 浮点型
FLOAT(m, n)
DOUBLE(m, n)
DECIMAL(m, n)
m 和 n 可选 - 字符型
CHAR CHAR(n): n 可选
VARCHAR(n): n 必选,n表示最多字符个数
TEXT - 日期型
DATE
TIME
DATETIME
TIMESTAMP - BLOB
存储图片数据
2. 插入数据
Mysql并不关心列的名字,仅关心列的位置,只要顺序对应就可以
INSERT INTO table1 (col1, col2, col3)
VALUES(value1, value2, value3); -- 插入完整的行
INSERT INTO table1(col1, col2, col3)
VALUES(value1, value2, value3), (value1_, value2_, value3_); -- 插入多行
INSERT INTO table1(col1, col2, col3)
SELECT col1, col2, col3 FROM table1; -- 插入检索数据
3. 更新表
尽量避免使用ALTER TABLE,在更改之前先对数据进行一次备份
ALTER TABLE stuinfo RENAME TO students; -- 修改表名
ALTER TABLE students ADD COLUMN borndate TIMESTAMP NOT NULL; -- 添加字段
ALTER TABLE students CHANGE COLUMN borndate birthday DATETIME NULL; -- 修改字段名
ALTER TABLE students MODIFY COLUMN birthday TIMESTAMP ; -- 修改字段类型
ALTER TABLE students DROP COLUMN birthday; -- 删除字段
ALTER TABLE students ADD CONSTRAINT <约束名> FOREIGN KEY <字段名> REFERENCES <表名>(列名)
ALTER TABLE students ADD PRIMARY KEY(字段名) -- 添加约束
4. 复制表
CREATE TABLE newTable2 LIKE major; -- 仅表结构
CREATE TABLE newTable3 SELECT * FROM girls.`beauty`; -- 表结构与数据
5. 删除表
DROP TABLE [IF EXISTS] table1;
6. 更新与删除数据
不要省略WHERE字段!
否则会更新表中全部的值!
UPDATE table1 SET col1 = value1, col2= value2 WHERE condition -- 更新数据
DELETE FROM table1 WHERE condition -- 删除数据