数据库基础-MySql8.0(第一篇)--DDL语句
MySql基础篇
学习目的:
实现数据持久化到本地;
使用完整的管理系统统一管理,可以实现结构化查询,方便管理;
数据库的相关概念
DB:数据库(DataBase)存储数据的容器,它保存了一系列有组织的数据。
DBMS:数据库管理系统(DataBase Management System)又称为数据库软件或数据库产品,用于创建或管理DB。
SQL:结构化查询语言(Structure Query Language)用于和数据库通信的语言,不是某个数据库软件特有的,而是几乎所有的主流数据 库软件通用的语言。
MySql语法规范
-- 单行注释
-- sql语言中不区分大小写
/*
多行注释
*/
/*
DDl:数据定义语言,也是属于sql,只是按照功能划分
*/
数据定义语言DDL
创建删除数据库
-- 创建数据库
CREATE DATABASE IF NOT EXISTS school_db CHARSET utf8
-- 删除数据库
DROP DATABASE school_db
-- 修改数据库字符编码
ALTER DATABASE school_db CHARSET utf8
-- 数据库名一旦给定,不能更改
设计表
在数据库中数据以表为单位来存储
设计表:
表名(存储的信息,一个表存储一类信息)
字段
数据类型,长度
约束
-- 创建表,不添加任何约束
CREATE TABLE t_student(
num INT,
NAME VARCHAR(10),
sex CHAR(1),
birthday DATE,
grade INT,
score DOUBLE(4,1),
mobile CHAR(11),
reg_time DATETIME
);
-- 删除表
DROP TABLE t_student
-- 创建表,添加约束和注释
/*
约束:
主键约束:一个表中只能有一个主键,不能为空,不能重复
唯一约束:一个表中可以有多个重复,可以为空
不能为空:可以有多个重复
AUTO_INCREMENT 主键自动增长,数据类型必须为整数
*/
CREATE TABLE t_student(
num INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键',
NAME VARCHAR(10) NOT NULL COMMENT '姓名',
sex CHAR(1) CHECK(sex='女' OR sex='男') COMMENT '性别',
birthday DATE COMMENT '生日',
grade INT COMMENT '班级',
score DOUBLE(4,1) CHECK(score>=0 AND score <=100) COMMENT '成绩',
mobile CHAR(11) UNIQUE COMMENT '手机号',
reg_time DATETIME COMMENT '注册时间'
);
-- 创建表,不添加任何约束,通过ddl语句,修改表结构
CREATE TABLE t_student(
num INT,
NAME VARCHAR(10),
sex CHAR(1),
birthday DATE,
grade INT,
score DOUBLE(4,1),
mobile CHAR(11),
reg_time DATETIME
)
-- 添加主键约束
-- ALTER TABLE 表名 ADD PRIMARY KEY(列名)
ALTER TABLE t_student ADD PRIMARY KEY(num)
-- 删除主键约束
-- ALTER TABLE 表名 DROP PRIMARY KEY
ALTER TABLE t_student DROP PRIMARY KEY
-- 设置自动增长
-- ALTER TABLE 表名 MODIFY 列名 类型 AUTO_INCREMENT
ALTER TABLE t_student MODIFY num INT AUTO_INCREMENT
-- 删除自动增长
-- ALTER TABLE users MODIFY 列名 类型 ;
ALTER TABLE t_student MODIFY num INT
-- 设置不能为空
-- ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL;
ALTER TABLE t_student MODIFY NAME VARCHAR(10) NOT NULL
-- 设置可以为空
-- ALTER TABLE 表名 MODIFY 列名 类型 NULL;
ALTER TABLE t_student MODIFY NAME VARCHAR(10) NULL
-- 添加唯一约束
-- ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名)
ALTER TABLE t_student ADD CONSTRAINT mobile_unique UNIQUE(mobile)
-- 通过约束名删除约束
-- ALTER TABLE 表名 DROP INDEX 约束名;
ALTER TABLE t_student DROP INDEX mobile_unique
-- 添加检查约束
-- ALTER TABLE 表名 ADD CONSTRAINT 约束名 CHECK(条件)
ALTER TABLE t_student ADD CONSTRAINT score_check CHECK(score>=0 AND score<=100)
-- 删除check约束
-- ALTER TABLE 表名 DROP CHECK 约束名;
ALTER TABLE t_student DROP CHECK score_check
-- 添加列
-- ALTER TABLE 表名 ADD 列名 数据类型
ALTER TABLE t_student ADD address VARCHAR(50) NOT NULL
-- 删除列
-- ALTER TABLE 表名 DROP 列名
ALTER TABLE t_student DROP address
-- 在第一列添加列
-- ALTER TABLE 表名 ADD 列名 数据类型 FIRST
ALTER TABLE t_student ADD address VARCHAR(50) FIRST
-- 在指定列后添加列
-- ALTER TABLE 表名 ADD 列名 数据类型 AFTER 列名
ALTER TABLE t_student ADD address VARCHAR(50) AFTER mobile
-- 修改列名
-- ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型
ALTER TABLE t_student CHANGE mobile phone VARCHAR(11)
-- 修改列的数据类型
-- ALTER TABLE 表名 MODIFY 列名 新数据类型
ALTER TABLE t_student MODIFY address VARCHAR(40)
-- 表结构修改语法
-- alter table 表名 add/drop/change/modify(修改)
-- 删除表
DROP TABLE t_student
-- 修改表名
-- RENAME TABLE 旧表名 TO 新表名
RENAME TABLE t_student TO student
-- 复制表结构
-- CREATE TABLE 新表名 LIKE 被复制表名;
CREATE TABLE stu LIKE student