数据库操作语言DDL
DDL定义和使用数据库
定义库
- 语法
CREATE DATABASE 数据库名;
例:
create database xdn;
- 数据库名要求
- 区分大小写
- 唯一性
- 不能使用关键字,如create、select
- 不能单独使用数字和特殊符号,如“-”
- 正常的:用拼音或单词即可
选择/进入数据库
- 选择数据库
USE 数据库名;
- 调用函数,查询当前库
SELECT database();
删除数据库
DROP DATABASE 数据库名;
系统中的位置
/var/lib/mysql #数据库的实体所在位置
DDL定义数据表案例
案例1
- 创建库
create database haha;
- 查看数据库
show databases;
- 使用数据库
use haha
- 查看在哪个库
select database();
- 创建表
create table t1 (id int);
- 查看创建的表
show tables;
- 插入数据
insert into t1 values (3);
- 查看所有数据
select * from t1;
- 删除表
drop table t1;
案例2
- 创两列的表格-序号和姓名
语法
创建 表格 表名t2 (第一列名id 数字类型,第二列名name 字符类型(长度));
create table t2 (id int,name varchar(20));
- 查看表结构
描述 表t2;
desc t2;
- 插入数据
插入 到 表t2 值 (第一列信息,第二列信息);
INSERT INTO t2 VALUES (1,"xiaodunan");
- 查看所有数据
select * from t2;
实例3
- 创建表
create table 表名(字段名1 类型,字段名2 类型,字段名3 类型);
示例
create database school;
use school;
create table student1(id int,name varchar(20),sex enum('m','f'),age int);
- 表中插入数据
insert into student1 values(1,'xiaodunan','f',18);
insert into student1 values(2,'jiaxzeng','m',23);
insert into student1 values(1,'yuxliu','f',17);
- 查看表内容
select * from student1;
完整性约束
- 目的
- 由于生活中需要避免重名的情况,所以数据库中某列使用完整性约束来限定此类要求。
- 用于保证数据的完整性和一致性。
- 约束类型
- PRIMARY KEY (PK)
标识该字段为该表的主键,可以唯一的标识记录,不可以为空 - FOREIGN KEY (FK)
标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联 - UNIQUE KEY(UK)
标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY - AUTO_INCREMENT
标识该字段的值自动增长(整数类型,而且为主键) - DEFAULT
为该字段设置默认值 - NOT NULL
标识该字段不能为空 - UNSIGNED
- ZEROFILL
- 约束类型测试
- 默认值、控制:DEFAULT、NOT NULL
(1)创建表
create table student4(
id int not null,
name varchar(50) not null,
sex enum('m','f') default 'm',
age int(3) unsigned default 18 not null,
hobby set('music','dance','book') default 'book'
);
(2)查看表结构
desc student4;
(3)插入数据
insert into student4 values(1,'jack','m',26,'book');
insert into student4 (id,name) values(2,'tom');
(4)插入非法数据
insert into student4 (id) values(2);
insert into student4 values(2,'zjx','w',30,'football');
- 设置主键约束 PRIMARY KEY
不允许重复,且不允许NULL
(1)创建表
create table student6(
id int primary key auto_increment not null,
name varchar(50) not null,
sex enum('male','female') not null,
age int not null default 18
);
(2)查询表结构
desc student6;
(3)插入数据
insert into student6 values(1,'xdn','female',20);
insert into student6 (name,sex,age) values ('zjx','male',26);
insert into student6 (name,sex) values ('zyy','male');
(4)查询表内容
select * from student6;
(5)插入非法数据
insert into student6 values (1,'lyx','female',18);
- 设置唯一约束 UNIQUE
(1)创建表
create table department (
dept_id int,
dept_name varchar(30) unique,
comment varchar(50)
);
或
create table department (
dept_id int,
dept_name varchar(30) ,
comment varchar(50),
unique (dept_id)
);
(2)查询表结构
desc department
(3)插入数据
insert into department values (1,'zhangsan','yyy');
(4)查询表数据
select * from department;
(5)插入非法数据
insert into department values (2,'zhangsan','ddd')
- 设置外键约束 FOREIGN KEY
(1)创建父表
create table employees(
name varchar(50) not null,
mail varchar(40),
primary key (name)
);
(2)创建子表
create table payroll(
id int not null auto_increment,
name varchar(50) not null,
payroll float(10,2) not null,
primary key (id),
foreign key (name) references employees(name) on update cascade on delete cascade
);
(3)查询表结构
desc employees;
desc payroll;
(4)插入测试数据
insert into employees values ('zhangsan','zhangsan@126.com');
insert into payroll values (1,'zhangsan',20000.23);
(5)查询表数据
select * from employees;
select * from payroll;
(6)父表更新,观察子表变化
update employees set name='zhangsansan' where name='zhangsan';
select * from employees;
select * from payroll;
(7)父表删除,观察子表变化
delete from employees where name='zhangsansan';
select * from employees;
select * from payroll;