Skip to content

DDL操作

一、数据库操作

1.创建库

sql
# 语法: 
create database [if not exists] 库名 [character set utf8];

2.删除库

sql
# 语法: 
drop database [if exists] 库名;

3.查看所有库

sql
# 语法: 
show databases;

4.使用库

sql
#语法:
use 库名;

5.注意事项

5.1 可以单行,多行书写,每一句SQL的结束标识符是英文分号

5.2 不区分大小写(建议小写)

5.3 一定要写注释

5.4 格式化代码(增加代码可看性)

二、表操作

1.数据类型和约束

1.1数据类型

整数 :int

小数 :decimal(整体的最大长度,小数的长度)

时间 :datetime(年-月-日 时:分:秒) 不限制年月日

​ timestamp (年-月-日 时:分:秒)从1970年01月01日00时00分01秒起

文本 :varchar (文本的长度限制)

1.2数据字段的约束

主键约束:(非空+唯一)既不能没有,也不能重复。 primary key(一个表只能用一次)

非空约束:数据不能没有

唯一约束:数据不能重复

2.建表

sql
# 建表的语法:
create table [if not exists] 表名 (
 列名1    类型    [约束],
 列名2    类型    [约束],
 每一列信息
 )[character set 字符集];

注意:建表用表时用库名.表名

​ qrder是mysql里的关键字,不能直接使用,要么库.表名,要么表名

3.查看表

3.1查看所有表

sql
# 语法:
show tables;

3.2查看指定表结构

sql
# 语法:
desc.表名;

4.删除表

sql
# 语法:
drop table [if exists] 库名.表名;

5.修改表

5.1新增列

sql
# 语法:
alter table 表名 add 列名 类型 [约束];

5.2删除列

sql
# 语法:
alter table 表名 drop 列名;

5.3修改列

sql
# 语法:
alter table 表名 change 旧列名 新列名 类型 [约束];
# 1.可以只改列名、类型、约束中的一个
# 2.修改 = 删除 + 新增

5.4修改表名

sql
# 语法:
rename table 旧表名 to 新表名;

6.表内容的清空

sql
# 语法:
truncate.表名

三、DDL综合练习

sql
# DDL综合练习(设计一个数据库,包含多张业务表)
# 设计一个电商系统数据库(shop_db),包含以下核心功能:
# 1. 用户管理
# 2. 商品分类管理
# 3. 商品信息管理
# 4. 订单管理

# 代码实现
# 创建库shop_db
create database if not exists shop_db;
# 使用库
use shop_db;
# 创建用户表user
create table if not exists user (
  user_id  int primary key,
  username varchar(20),
  password varchar(15),
  email    varchar(30),
  phone    varchar(11)
);
# 创建商品分类表category
create table if not exists category (
  category_id int primary key,
  cname       varchar(20),
  description varchar(10)
);
# 创建商品表product
create table if not exists product (
  product_id   int primary key,
  product_name varchar(10),
  price        decimal(10, 2),
  category_id  int
);
# 创建订单表order1
create table if not exists shop_db.order (
  order_id     int primary key,
  user_id      int,
  total_amount decimal(20, 2),
  status       varchar(3)
);
# 查看所有表
show tables;
# 查看商品表结构
desc shop_db.product;
# 修改表操作
# 为用户表添加真实姓名列 real_name
alter table shop_db.user
  add real_name varchar(20);
# 删除分列表的描述列
alter table shop_db.category
  drop description;
# 重命名订单表
rename table
    shop_db.order to order_info;
# 最终查看所有表
show tables;

DML操作

一、插入数据

1.插入几个字段的一条数据

sql
# 语法:(顺序不能错,值要一一对应)
insert into.表名(字段1,字段2...) values (值1,值2...);

2.插入所有字段的一条数据

sql
# 语法:(顺序不能错,值要一一对应)
insert into.表名 values (值1,值2...);

3.插入多条数据

sql
# 语法:(顺序不能错,值要一一对应)
insert into.表名 values (值1,值2...),
						  (值1,值2...),
						  (值1,值2...);

4.注意事项

a. 主键不能重复,也不能为空

b. 对用的值不能超过约束范围

c. 如果不写字段,必须每一个字段都要传递(值的个数和类型都要对应)

d. 非数字的内容一定要带引号(最好为单引号)

二、修改数据

1.修改一个字段的全部数据

sql
# 语法:
update.表名 set 字段 = 新值;

2.修改某条数据的一个字段

sql
# 语法:
update.表名 set 字段 = 新值 where 条件;

3.修改某些数据的多个字段

sql
# 语法:
update.表名 set 字段1 = 新值1,字段2 = 新值2,... where 条件;

三、删除数据

1.删除表格全部内容

sql
# 语法:
delete from.表名;

2.删除表格指定数据

sql
# 语法:
delete from.表名 where 条件;

3.删除为null的数据(要用is判断,不能用=判断)

sql
delete from 库名.表名 where 字段 is null ; # 删除价格为null的数据

delete from 库名.表名 where 字段 is not null ; # 删除价格不为null的数据