数据库操作语言DDL

DDL定义和使用数据库

定义库

  1. 语法
CREATE DATABASE 数据库名;

例:

create database xdn;
  1. 数据库名要求
  • 区分大小写
  • 唯一性
  • 不能使用关键字,如create、select
  • 不能单独使用数字和特殊符号,如“-”
  • 正常的:用拼音或单词即可

选择/进入数据库

  1. 选择数据库
USE 数据库名;
  1. 调用函数,查询当前库
SELECT database();

删除数据库

DROP DATABASE 数据库名;

系统中的位置

/var/lib/mysql #数据库的实体所在位置

DDL定义数据表案例

案例1

  1. 创建库
create database haha;
  • 查看数据库
show databases;
  1. 使用数据库
use haha
  • 查看在哪个库
select database();
  1. 创建表
create table t1 (id int);
  • 查看创建的表
show tables;
  1. 插入数据
insert into t1 values (3);
  • 查看所有数据
select * from t1;
  1. 删除表
drop table t1;

案例2

  1. 创两列的表格-序号和姓名
    语法
创建 表格 表名t2 (第一列名id 数字类型,第二列名name 字符类型(长度));
create table t2 (id int,name varchar(20));
  1. 查看表结构
描述 表t2;
desc t2;
  1. 插入数据
插入 到 表t2 值 (第一列信息,第二列信息);
INSERT INTO t2 VALUES (1,"xiaodunan");
  1. 查看所有数据
select * from t2;

实例3

  1. 创建表
create table 表名(字段名1 类型,字段名2 类型,字段名3 类型);

示例

create database school;
use school;
create table student1(id int,name varchar(20),sex enum('m','f'),age int);
  1. 表中插入数据
insert into student1 values(1,'xiaodunan','f',18);
insert into student1 values(2,'jiaxzeng','m',23);
insert into student1 values(1,'yuxliu','f',17);
  1. 查看表内容
select * from student1;

完整性约束

  1. 目的
  • 由于生活中需要避免重名的情况,所以数据库中某列使用完整性约束来限定此类要求。
  • 用于保证数据的完整性和一致性。
  1. 约束类型
  • PRIMARY KEY (PK)
    标识该字段为该表的主键,可以唯一的标识记录,不可以为空
  • FOREIGN KEY (FK)
    标识该字段为该表的外键,实现表与表(父表主键/子表1外键/子表2外键)之间的关联
  • UNIQUE KEY(UK)
    标识该字段的值是唯一的,可以为空,一个表中可以有多个UNIQUE KEY
  • AUTO_INCREMENT
    标识该字段的值自动增长(整数类型,而且为主键)
  • DEFAULT
    为该字段设置默认值
  • NOT NULL
    标识该字段不能为空
  • UNSIGNED
  • ZEROFILL
  1. 约束类型测试
  • 默认值、控制: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;
posted @ 2024-06-10 17:34  小肚腩吖  阅读(4)  评论(0编辑  收藏  举报