mysql数据库ddl语言_MySQL基础教程(3)数据库基本知识与DDL语句

一、MySQL语言的分类

SQL是结构化查询语言的英文单词缩写,已经是关系型数据库的标准。主要用于存取、查询、更新、管理数据库系统,SQL语言通常分为三种类型:

数据库定义语言(DDL):库、表、索引的创建语句、删除与修改语句,如CREATE、DROP、ALTER

数据库操纵语言(DML):增删查改语句,如INSERT、UPDATE、DELETE、SELECT(也有把SELECT定义为DQL的)

数据库控制语言(DCL):控制用户权限的语句,如GRANT、REVOKE

二、MySQL数据库DDL语句介绍

1、database的创建、查看与删除

MySQL的数据都是存放在每个库中的各个表里,建库时最好指定好字符集,库名是无法修改的。

mysql > create database NEWDATABASE1 default charset utf8mb4; #创建名为NEWDATABASE1,数据库名区分大小写

mysql > create database NEWDATABASE2 if not exists; #如果指定的数据库不存在才进行创建

mysql > show databases; #显示所有数据库

mysql > use NEWDATABASE1 #进入指定数据库

mysql > drop database NEWDATABASE2; #删除指定数据库

mysql > drop database NEWDATABASE2 if exists #如果指定的库存在才进行删除

2、table的创建查看与删除

建表时需要注意以下规范:

· 建表语句最好带上库名

· 表名最好都是小写,避免跨平台不兼容

· 建表语句必须设置存储引擎和字符集

· 每个表必须要有主键

· 每个列尽量都设置非空NOT NULL,因为在做比较运算时,会对NULL值做特殊处理,会影响性能

· 每个列都加上注释

· 表的每列也称为字段,各个字段的属性可以是不同的,要为每个字段选择合适的数据类型

建表语句示例:

# 建议对每列字段名都加上反引号,防止关键词问题;并且指定默认字符集和校对规则

create table school.student1 (

`id` int not null auto_increment primary key COMMENT 'ID', #字段名为id,类型为int,不能为空,自增,唯一主键

`name` varchar(10) NOT NULL COMMENT '姓名', #字段名为name,varchar类型,长度为10,数据超过10个字符就无法插入

`sex` enum('m','f') NOT NULL COMMENT '性别',

`age` tinyint UNSIGNED NOT NULL DEFAULT 18 COMMENT '年龄';) ENGINE = innodb DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

create table student2 like student1 #复制表1的结构到新表2

create table student3 select * from student1 #复制表1的表结构和数据到新表3

show tables; 查看当前库中的所有表格

show create table table_name \G #查看建表所用语句

3、使用alter语句修改表本身的属性,需要注意的是alter操作会锁表,执行alter语句期间所有修改类的命令无法正常进行

#增加列

alter table test_table add test_col varchar(10)

alter table t1 add column location varchar(20) not null after name; #在name列后面加新的一列,名称为location

#删除列

alter table test_table drop test_col

#重命名列,将test_col修改为new_test_col

alter table test_table change test_col new_test_col varchar(10)

#修改列的属性

alter table test_table modify test_col varchar(20)

#更改表存储引擎

alter table t8 engine=InnoDB

4、使用truncate语句截断表,也就是清空表,但是不会记录删除的语句。通常还配合optimize回收表空间,否则只是让这些数据页可复用,却不会释放磁盘空间,原因可以参见《MySQL基础教程(10)InnoDB存储引擎、Redo log与Undo log》的相关介绍

mysql > truncate table student;

mysql > optimize table student;

5、查看表的详细结构,包括每行数据是否可以为空、是否有约束条件、默认值等信息

DESC 表名;

你可能感兴趣的:(mysql数据库ddl语言)