【MySQL】数据定义语言DDL
数据定义语言DDL(Data Definition Language)
对象:数据库和表
关键词:create、alter、drop、truncate(删除当前表再新建一个一模一样的表结构)
1、数据库管理
1.1 创建数据库:
# 创建数据库 如果不存在 设置字符集
CREATE DATABASE [IF NOT EXISTS] 库名 [ CHARACTER SET 字符集名];
create database [if not exists] school [character set utf8];
1.2 修改数据库:
# 数据库重命名
RENAME DATABASE 旧库名 TO 新库名;
rename database shcool to new_school;
# 修改数据库字符集
ALTER DATABASE 库名 CHARACTER SET 字符集名;
alter database school character set utf64;
1.3 删除数据库:
# 删除数据库 如果存在
drop database [if exists] school;
1.4 切换数据库:
use school;
2、表管理
2.1 创建表:
create table student(
字段名 字段类型 [约束],
id int(4) primary key auto_increment,
name varchar(20),
score int(3)
);
注意:
-
varchar 类型的长度是可变的,创建表时指定了最大长度,定义时,其最大值可以取 0-65535 之间的任意值,但记录在这个范围内,使用多少分配多少。
-
varchar 类型实际占用空间为字符串的实际长度加 1。这样,可有效节约系统空间。varchar 是 mysql 的特有的数据类型。
-
char 类型的长度是固定的,在创建表时就指定了,其长度可以是 0-255 之间的任意值。虽然 char 占用的空间比较大,但它的处理速度快。
2.2 修改表:
1、添加列
ALTER TABLE 表名 ADD COLUMN 列名 类型 [FIRST|AFTER 字段名];
alter table student add column age varchar(20);
2、修改列的类型或约束
ALTER TABLE 表名 MODIFY COLUMN 列名 新类型 [新约束];
alter table student modify column age int;
3、修改列名
ALTER TABLE 表名 CHANGE COLUMN 旧列名 新列名 类型;
alter table student change column age ages varchar(20);
4、删除列
ALTER TABLE 表名 DROP COLUMN 列名;
alter table student drop column ages;
5、修改表名
ALTER TABLE 表名 RENAME [TO] 新表名;
alter table student rename [to] teacher;
2.3 删除表:
方式一:DROP TABLE [IF EXISTS] 表名;
方式二:TRUNCATE TABLE [IF EXISTS] 表名;
drop table student;
2.4、表的复制:
1、复制表的结构
CREATE TABLE 表名 LIKE 旧表;
2、复制表的某些字段
CREATE TABLE 表名
SELECT 字段1,字段2,... FROM 旧表 WHERE 0;
3、复制表的结构+数据
CREATE TABLE 表名
SELECT 查询列表 FROM 旧表 【WHERE 筛选条件】;
4、复制表的某些字段+数据
CREATE TABLE 表名
SELECT 字段1,字段2,... FROM 旧表 【WHERE 筛选条件】;
2.5 查看数据库里存在的表:
show tables;
2.6 查看生成表的sql语句:
show create table student;
2.7 查看表结构:
desc student;
2.8 查看表里的字段索引:
show index from student;