DDL
数据定义语言。定义不同的数据库、表、视图、索 引等数据库对象,还可以用来创建、删除、修改数据库和数据表的结构
主要的语句关键字包括 CREATE 、 DROP 、 ALTER 等
库的管理
//查看所有的数据库show databases;//切换数据库use 数据库名;//库的创建create database [if not exists] 库名;//更改库的字符集alter database 库名 character set utf-8;//库的删除drop database [if exists] 库名;
表的管理
//查看库中的所有表show tables;//查看表结构语法desc 表名;//查看表的详细创建信息 **show create table 表名称\G//创建表 必须指定列名(或字段名),数据类型,长度create table [if not exists] 表名{列名 类型 [约束] [默认值],列名 类型 [约束] [默认值],...列名 类型 [约束] [默认值],}#表的复制 **//仅仅复制表的结构create table 新表名 like 目标表;//复制表的结构加数据create table 新表名select * from 目标表;//只复制部分数据create table 新表名select 查询语句;//仅仅复制某些字段create table 新表名select 查询语句(需要的字段)where 0; //添加一个不成立的条件 复制的表内就没有数据eg:create table copy1select id,name from authorwhere 0;
表的修改
//修改列名alter table 表名 change column 列名 新列名 新列名类型;//修改列的类型或约束alter table 表名 modify column 列名 要修改的列类型;//添加新列alter table 表名 add cloumn 列名 列类型;//删除列alter table 表名 drop column 列名;//修改表名alter table 表名 rename to 新表名;#表的删除drop table [if exists] 表名;
常见的数据类型
数值型(整型,小数)、字符型(char,varchar,text,blob)、日期型
#整型特点:1 如果不设置无符号或有符号,默认是有符号eg:无符号设置就是在表定义时,类型的后面加上 unsigned2 如果不设置长度,会有默认的长度 显示宽度与类型可以存储的值范围无关长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用eg: id int(7) zerofill //搭配后默认无符号#小数 M:代表整数部位+小数部位 D:代表小数部位如果超出范围,则插入临界值;M和D可以省略1 浮点型float(M,D)double(M,D)2 定点型 //要求精度时选用 如货币运算等dec(M,D)*decimal(M,D)
#字符型 M:最大的字符数char(M):固定长度的字符 M默认为1varchar(M):可变长度的字符eg: sex char; //只有两种可能的固定字符name varchar(20); //可变长度的字符
#日期型 日期的值必须用 ``datetime:保存日期和时间*timestamp:保存日期和时间 //范围1970-2038 且受时区的影响
约束可靠性
一种限制,保证数据的准确性和可靠性
#六大约束NOT NULL:非空,用于保证该字段的值不能为空DEFAULT:默认,用于保证该字段有默认值PRIMARY KEY:用于保证该字段具有唯一性,且非空UNIQUE:唯一,用于保证该字段具有唯一性,可以为空CHECK:检查约束 [mysql不支持] eg:年龄范围FOREGIN KEY:外键,用于限制两个表的关系,保证该字段的值必须来源于主表的关联值在从表添加外键约束,用于引用主表某列的值注:约束的添加分类列级约束:除了外键约束都支持表级约束:除了非空 默认 其它的都支持eg:外键约束一般放在表级,其它的放在列级CREATE TABLE stuinfo (id INT PRIMARY KEY,name VARCHAR ( 20 ) NOT NULL,gender CHAR ( 1 ),seat INT UNIQUE,age INT DEFAULT 18,majorId INT ,CONSTRAINT fk_studinfo_major FOREIGN KEY(majorId) REFERENCES major(id));注:主表的关联列必须是一个key(一般是主键或唯一键)比如:上面这个majorId关联major表内的id字段,id字段必须是一个主键或唯一键 偶尔是外键#查看表内的约束SELECT * FROM information_schema.table_constraints WHERE table_name = '表名';
#修改表时添加约束alter table 表名 modify column 列名 列类型 约束; //列级约束alter table 表名 add constraint 约束类型; //表级约束eg://添加非空alter table stuinfo modify column stuname varchar(20) not null;//添加外键alter table stuinfo add constraint fk_studinfo_majorforeign key(majorid) reference major(id);
#修改表时删除约束//删除非空alter table stuinfo modify column stuname varchar(20) null;//删除默认约束alter table stuinfo modify column age int; //让它不默认就行了//删除主键alter table stuinfo drop primary key;//删除唯一alter table stuinfo drop index 唯一键名;//删除外键alter table stuinfo drop foreign key 外键名;
标识列(自增长列)
可以不用手动的插入值,系统提供默认的序列值
auto_increment;//特点:1 标识列不一定和主键搭配 但必须和一个key搭配2 一个表内至多有一个标识列3 标识列类型必须是数值型4 标识列可以设置步长和手动改变起始值#修改表时设置标识列alter table 表名 modify column 列名 列类型 auto_increment;//删除标识列 只需要不添加它就行了
