数据库的操作
创建数据库
- 创建数据库
CREATE DATABASE 数据库名;
- 防止在创建重复的数据库时出错:
IF NOT EXISTS
CREATE DATABASE IF NOT EXISTS 数据库名;
查看所有数据库
SHOW DATABASES;
切换数据库
USE 数据库的名称;
在数据库中看有哪些表
SHOW TABLES;
删除数据库
DROP DATABASE 数据库名;
- 删除数据库如果它存在
DROP DATABASE IF EXISTS 数据库名;
表的操作
DDL
DDL(数据定义语言):用来创建或者删除存储数据用的数据库以及数据库中的表等对象。DDL 包含以下几种指令。
- CREATE:创建数据库和表等对象
- DROP: 删除数据库和表等对象
- ALTER: 修改数据库和表等对象的结构
DML
DML(数据操纵语言):用来查询或者变更表中的记录。DML包含以下几种指令。
- SELECT:查询表中的数据。
- INSERT:向表中插入新数据。
- UPDATE:更新表中的数据。
- DELETE:删除表中的数据。
DCL
DCL(数据控制语言):用来确认或者取消对数据库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限操作数据库中的对象(数据库表等)进行设定。DCL包含以下几种指令。
- COMMIT:确认对数据库中的数据进行的变更。
- ROLLBACK:取消对数据库中的数据进行的变更。
- GRANT:赋予用户操作权限。
- REVOKE:取消用户的操作权限。
各语句基本使用
DDL
CREATE
- 创建
product
表,指定product_id
为主键
CREATE TABLE Product
(product_id CHAR(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
PRIMARY KEY (product_id));
- 建表时给表添加注释
CREATE TABLE 表名
(各个列的信息 ... )
COMMENT '表的注释信息';
- 防止创建重复的表,我们可以加上
IF NOT EXISTS
CREATE TABLE IF NOT EXISTS 表名
(列名 数据类型 [约束]);
- 总结
CREATE TABLE <表名>
(列名 数据类型 [约束],
.
[该表的约束1],[该表的约束2],…)
列的约束信息
注意该内容可以用在创建表和修改表的时候,指定列的属性。
例如创建表时指定DEFAULT 'abc'
是表示该列插入时如果不传值,则以abc
填充。
CREATE TABLE 表名(
first_column INT,
second_column VARCHAR(100) DEFAULT 'abc'
);
1. DEFAULT
在列允许为NULL的前提下,如果插入时没有给其某个字段赋值,则值用NULL
填充。添加了DEFAULT
后,则会以默认值填充。
2. NOT NULL
要求表中的某些列中必须有值,不能存放NULL
CREATE TABLE 表名(
列名 列类型 NOT NULL
);
3. PRIMARY KEY
自带NOT NULL属性
某条记录可以由一个字段确定,该字段可以称为候选键,一个表可以有多个候选键,主键可以由其中的一个候选键或多个结合指定,要注意一个表只能有一个主键,而且其值是唯一的。
CREATE TABLE 表名(
列名 列类型 PRIMARY KEY
);
或者这种用法(可以指定两个候选键为主键)
CREATE TABLE 表名(
列名 列类型,
PRIMARY KEY(列名,列名)
);
4. UNIQUE
UNIQUE可以存放NULL!!反复存放;UNIQUE在一个表中可以指定多次
CREATE TABLE 表名(
列名 列类型 UNIQUE
);
多列组合使用UNIQUE
CREATE TABLE 表名(
列名 列类型,
UNIQUE (列名,列名)
);
5. 外键
在子表中指定外键。 如果A表中的某个列依赖B表中的某个列或者某些列,那么就称A表为子表
,B表为父表
。子表和父表可以使用外键来关联起来。
CREATE TABLE 表名(
列名 类型 REFERENCES 父表名(父表字段)
)
或者
CREATE TABLE 表名(
列名 类型,
CONSTRAINT FOREIGN KEY(子表字段) REFERENCES 父表名(父表字段)
)
注意:【父表】中被子表依赖的【列或者列组合】必须【建立索引】,如果该【列或者列组合】已经是【主键或者有UNIQUE属性】,那么它们也就被默认建立了索引。
6. AUTO_INCREMENT
一个表一个;指定该属性的列需要建立索引;一般拥有AUTO_INCREMENT属性的列都是作为主键的属性
可以为字段类型是整型
或者浮点型
的设置该属性,设置该属性后,该字段在插入的时候可以忽略,因为它会自动增加。
7. 注释
CREATE TABLE 表名(
列名 类型 COMMENT '描述信息'
)
DROP
- 删除
product
表
DROP TABLE Product;
- 防止删除不存在的表,报错,使用
IF EXISTS
DROP TABLE TABLE IF EXISTS 表名;
ALTER
- 【添加列】给
Product
表添加列product_name
,并指定该列的类型是VARCHAR(50)
ALTER TABLE Product ADD COLUMN product_name VARCHAR(50);
- 【添加列到指定的地方】
ALTER TABLE 表名 ADD COLUMN 列名 列的类型 [列的属性] AFTER 指定列名;
- 【添加列到第一列】
ALTER TABLE 表名 ADD COLUMN 列名 列的类型 [列的属性] FIRST;
- 【删除列】
Product
表删除列product_name
ALTER TABLE Product DROP COLUMN product_name;
- 【修改表名】
mysql使用RENAME TABLE
RENAME TABLE 旧表名 to 新表名;
- 【修改列的信息,方式一】
ALTER TABLE 表名 MODIFY 列名 新数据类型 [新属性];
- 【修改列的信息,方式二】
ALTER TABLE 表名 CHANGE 旧列名 新列名 新数据类型 [新属性];
- 修改列的排列位置,将指定列放到第一列
ALTER TABLE 表名 MODIFY 列名 列的类型 列的属性 FIRST;
- 修改列的排列位置,列放到指定列的后边
ALTER TABLE 表名 MODIFY 列名 列的类型 列的属性 AFTER 指定的列名;
查看表的结构
下面三个效果是相同的。
DESCRIBE 表名;
查看表的结构
DESCRIBE 表名;
DESC 表名;
查看表的结构
DESC 表名;
EXPLAIN 表名;
查看表的结构
EXPLAIN 表名;
以上是以表格的形式展示该表的结果,下面可以看该表创建时的sql
SHOW CREATE TABLE 表名;
查看表的结构
SHOW CREATE TABLE 表名;
或者
SHOW CREATE TABLE book\G;
DML
SELECT
- 查询所有
SELECT * FROM <表名>;
- 查询某些列
SELECT <列名> FROM <表名>;
- 查询类别的列,DISTINCT可以将一列中重复的数据去重
SELECT DISTINCT product_type from Product;
- 条件查询
SELECT <列名>,
FROM <表名>
WHERE <条件表达式>;
INSERT
- 核心语句模板
INSERT INTO <表名>
(列1, 列2, 列3, ……)
VALUES
(值1, 值2, 值3, ……),
(值1, 值2, 值3, ……)
;
UPDATE
- 根据条件,进行多列的更新。
UPDATE <表名>
SET <列名> = <表达式>,
SET <列名> = <表达式>
...
WHERE <条件>;
DELETE
- 删除表中所有的内容(不要尝试)
DELETE FROM <表名>;
- 因为删除的操作是一行,可以捆绑条件进行删除
DELETE FROM <表名>
WHERE <条件>;