建表、改表、删表、建库、删库
建库 create database 语句
CREATE DATABASE 语句用于创建数据库
语法
1 |
|
示例
1 |
|
建表 create table 语句
CREATE TABLE 语句用于创建数据库中的表
语法
1 |
|
示例
1 |
|
约束
SQL 约束用于规定表中的数据规则
如果存在违反约束的数据行为,行为会被约束终止
约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)
语法
1 |
|
在 SQL 中,我们有如下约束:
NOT NULL - 指示某列不能存储 NULL 值
UNIQUE - 保证某列的每行必须有唯一的值
PRIMARY KEY - NOT NULL 和 UNIQUE 的结合
确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性
CHECK - 保证列中的值符合指定的条件
DEFAULT - 规定没有给列赋值时的默认值
创建索引 create index 语句
CREATE INDEX 语句用于在表中创建索引
在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据
在表中创建索引,以便更加快速高效地查询数据
用户无法看到索引,它们只能被用来加速搜索/查询
注释:
更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间
这是由于索引本身也需要更新
因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引
语法
1 |
|
示例
1 |
|
撤销索引、撤销表以及撤销数据库
通过使用 DROP 语句,可以轻松地删除索引、表和数据库
DROP INDEX 语句
删除索引
1 |
|
DROP TABLE 语句
删除表
1 |
|
DROP DATABASE 语句
删除数据库
1 |
|
TRUNCATE TABLE 语句
删除表内的数据,但并不删除表本身
1 |
|
修改表 ALTER TABLE 语句
ALTER TABLE 语句用于在已有的表中添加、删除或修改列
语法
1 |
|
自增 AUTO INCREMENT 字段
Auto-increment 会在新记录插入表中时生成一个唯一的数字
如:自动地创建主键字段的值
语法
1 |
|
默认地,AUTO_INCREMENT 的开始值是 1,每条新记录递增 1
改变初始值
1 |
|
视图(Views)
放在前面
- 视图总是显示最新的数据!每当用户查询视图时,数据库引擎通过使用视图的 SQL 语句重建数据
视图是可视化的表
是基于 SQL 语句的结果集的可视化的表
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段
可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,也可以呈现数据,就像这些数据来自于某个单一的表一样
语法
创建视图 create view
1 |
|
更新视图 create or replace view
1 |
|
撤销视图
1 |
|
注意:
视图总是显示最新的数据!每当用户查询视图时,数据库引擎通过使用视图的 SQL 语句重建数据
视图的作用:
视图隐藏了底层的表结构,简化了数据访问操作,客户端不再需要知道底层表的结构及其之间的关系
视图提供了一个统一访问数据的接口(即可以允许用户通过视图访问数据的安全机制,而不授予用户直接访问底层表的权限)
从而加强了安全性,使用户只能看到视图所显示的数据
视图还可以被嵌套,一个视图中可以嵌套另一个视图
表复制
完整的复制MySQL数据表(包括表结构以及数据)
分三步
使用 SHOW CREATE TABLE 命令获取创建数据表(CREATE TABLE) 语句,该语句包含了原数据表的结构,索引等
复制第一步命令显示的SQL语句,修改数据表名,并执行SQL语句,通过以上命令 将完全的复制数据表结构
使用 INSERT INTO … SELECT 语句复制表的内容