DDL语句 数据库定义语言:数据库、表、视图、索引、存储过程
数据库服务器、数据库、表、记录、字段、类型、约束
DDL(库)
1.定义库
创建业务数据库:
语法---CREATE DATABASE 数据库名;
要求:
唯一性;不能使用关键字如create、select;不能单独使用数字和特殊符号“如-”
2.查看数据库:show database;
3.选择/进入数据库
USE 数据库名;
SELECT database(); //调用函数,查询当前库
4.删除数据库
DROP TABATASE 数据库名;
5.系统中的位置
/usr/local/mysql/data/ 源码安装
/var/lib/mysql/ RPM安装
数据类型
**1.数值类型**
整数类型 INT(TINYINT SMALLINT MEDIUMINT BIGINT)
浮点型 FLOAT DOUBLE
定点数类型 DEC
位类型 BIT
**2.字符串类型**
CHAR系列 CHAR、VARCHAR
TEXT系列 TEXT
BLOB系列 BLOB
BINARY系列 BINARY VARBINARY
枚举类型 ENUM
集合类型 SET
**3.时间和日期类型**
DATE TIME DATETIME TIMESTAMP YEAR
DDL(表)
目的:表是数据库存储数据的基本单位,有若干字段组成,主要用来存储数据记录。
创建表----create table 表名(字段名 类型 约束条件);
查看所有表----show tables;
查看表结构----desc 表名;
show create table 表名 \G;
表中插入内容----insert into 表名(字段1,字段2...)values(字段值列表....);
----insert into 表名 values();
查看表内容----select * from 表名
修改表名----alter table 表名 rename 新表名;
添加字段----alter table 表名 add 字段名 类型 约束条件
after 字段//添加在字段之后
first //添加到最前面
删除字段----alter table 表名 drop 字段;
删除主键----删除主键时,要先清理掉自动增长
a. alter table 表名 modify 字段 类型 约束条件;
b. alter table 表名 drop primary key;
如果没有自增长约束,直接使用----alter table 表名 drop primary key;
修改字段类型modify----mysql> alter table student10
-> modify age tinyint not null default 22; //注意保留原有的约束条件
mysql> alter table student10
-> modify id int not null primary key ; //修改字段类型、约束、主键
或者使用add增加单列主键
mysql> alter table student1
-> add primary key(id);
增加约束(针对已有的主键增加auto_increment)----mysql> alter table 表名
modify id int not null
???
auto_increment;
增加复合主键----mysql> alter table 表名 add primary key(字段1,字段2);
修改存储引擎----mysql> alter table 表名 engine=innodb;
//engine=myisam|memory|....
//innodb提供事物支持及主外键高级功能
//MyISAM不支持事物处理,强调高性能。
//memory仅内存
删除表---drop table 表名;
复制表:
复制表结构+记录 (key不会复制: 主键、外键和索引)
mysql> create table new_service select * from service;
mysql> create table t4 like employees;
只复制表的结构
mysql> create table new1_service select * from service where 1=2; //条件为假,查不到任何记录
完整性约束
目的:用于保证数据的完整性和一致性
约束类型
PRIMARY KEY(PK) 标识该字段为表的主键,可以唯一的标识记录,不可以为空
FOREIGN KEY(FK) 标识该字段为表的外键,实现表与表(父表主键/子表外键)之间的关联
UNIQUE KEY(UK) 标识该字段的值是唯一的,可以为空,一个表可以有多个唯一约束
AUTO_INCREMENT 标识该字段的值自动增长(整数类型,而且为主键)
DEFAULT 为该字段设置默认值
NOT NULL 该字段不能为空
UNSIGNED 无符号
ZEROFILL 使用0填充