【MySQL基础之DDL】数据库、表、字段

 SQL语句的分类:

  DDL:Data Definition Language  数据定义语言,用来定义数据库对象(数据库,表,字段)

  DML:Data Manipulation Language 数据操作语言,用来对数据库表中的数据进行增删改

  DQL:Data Query Language 数据查询语言,用来查询数据库表中的记录

  DCL:Data Control Language 数据控制语言,用来创建数据库用户、控制数据库的访问权限

 

 

# SQL语句不区分大小写,但是为了后期的实际使用,建议关键字都使用大写。

# 每一条语句结尾需要使用;分号结束。

# 语句中的空格,可以是一个,也可以是多个空格,多个空格也会当成一个空格,不影响使用。

 # 单行注释可以用两个横杠 -- 或一个井号 # 表示,多行注释时,使用 /*  和  */ 来表示。

# Mysql服务启动命令:

 

 

DDL - 数据库操作

查询:
查询所有数据库 SHOW DATABASES; 
查询当前数据库 SELECT DATABASE();
 
创建:
CREATE DATABASE [ IF NOT EXISTS ] 数据库名称 [ DEFAULT CHARSET 字符集 ] [ COLLATE 排序规则 ] ;  # 方括号部分表示可带可不带的可选属性关键词,实际中无方括号符合。
 
删除:
DROP DATABASE [ IF EXISTS ] 数据库名字 ;
 
使用:
USE 数据库名称;

 

DDL - 数据库操作·练习

#### 显示所有数据库

【练习】显示Mysq数据库服务器里面的所有数据库:

SHOW  DATABASES ; 

说明:这里是显示所有的数据库,而不是哪一个数据库,所以这里的 database 是用的其复数形式 databases ,也就是后面多一个s字母,这里主要记住 database 这个单词是数据库的意思。

初次安装完成后,使用该语句显示全部数据库时,会显示出四个数据库:information_schema  、 mysql   、 performance_schema  、 sys   这四个数据库为Mysql 软件自带的数据库。

单词 :show [ʃəʊ] 显示;展示

 

#### 创建一个数据库

【练习】在数据库服务器里面创建一个叫 test 的数据库:

CREATE  DATABASE  test ;

说明:在Idea里面,创建数据库也可以用 create schema test; 效果是一样的,也就是,在idea里面,可以将 schema 这个单词也当成是 database 一样的意思,这里主要记住 create 这个单词是创建的意思。

单词 create  [kri'eɪt] 创建; 创造 ;创作 

 

#### 创建一个已经存在的数据库,会发生什么?

【练习】再创建一个叫 test 的数据库,这个是已经存在的数据库,看看创建时会发生什么?

CREATE  DATABASE  test ;

CREATE  DATABASE  test ;

说明:由于第一条创建了一个叫 test 数据库,第二条再创建一个叫 test 的数据库时,系统就会报错。

报错信息为:Can't create database 'kuozhen'; database exists  (无法创建数据库“kuozhen” ,数据库存在)

 

#### 创建一个数据库,如果不存在就创建

【练习】创建一个数据库,如果不存在同名的数据库则创建(存在同名数据库则不执行):

CREATE  DATABASE  test ;

CREATE  DATABASE   IF  NOT  EXISETS  test ;  

在创建语句中加入 if not exisets 这个可选项语句时,如果这个数据库已经存在,系统就不报错了,如果数据库不存在就正常创建。

单词 exists  [ɪɡ'zɪst]  存在,生存,活着 。

 

【练习】创建一个叫 text 的数据库,并指定数据库的字符集为utf8mb4,语句如下:

CREATE  DATABASE  text  DEFAULT  CHARSET  utf8mb4 ;

说明,因为UTF-8字符集默认是三个字节,但是我们有的字是占4个字节的,所以一般需要指定为 utf8mb4 以获得更好的兼容性,这个utf8mb4字符集是4字节的。

单词:default  [dɪ'fɔːlt]  默认;默认(值) 

 

####  删除数据库

【练习】删除Mysql数据库服务器里面我们刚才创建的 test 的数据库:

DROP  DATABASE  test ;

单词:drop [drɒp] 减少;降低;

 

 

【练习】刚才我们已经删除了 test 数据库,如果再次执行删除 test 数据库,会发生什么?

DROP  DATABASE  test ;

说明:会报错。当删除一个不存在的数据库时,系统会报错。

 

【练习】删除数据库服务器里面某一个数据库,如果存在就删除, 如果不存在就不管,也不用报错提示:

DROP  DATABASE  IF  EXISETS  ppp ;

说明:if exisets 表示如果存在就删除的意思。

 

#### 使用数据库

【练习】使用 use 切换到 test 数据库

USE  test ;

说明:使用某个数据库,可以理解为 切换到 / 进入到 某个数据库的意思,相当于Linux系统中的 cd 命令,我们要使用(进入)哪个数据库,就 use 哪个就可以了。

单词:use  [juːs] 使用

 

 

#### 显示当前所在数据库

【练习】使用 us 切换到某个数据库里面后,再使用 select 查看所处的数据库:

USE  test ;

SELECT  DATABASE();

说明:select database() 这句语句,相当于Linux系统中的 pwd命令,显示当前所处的目录一样,database() 是一个函数,后面带有一个括号,不能忘记了。

单词:select [sɪ'lekt]  挑选;精选的;被挑选出来的

 

 

DDL - 表操作

使用表操作的前提是,需要使用use进入到某一个数据库里面后才能使用。

显示当前数据库里的所

【练习】进入test数据库

#进入test数据库表
USE test;#进入到 test 

【练习】进入一个叫test的数据库,然后显示这个数据库的表结构

USE test;
SHOW table;# 显示当前数据库的表结构,如果数据库里面是空的,也就是说里面没有表结构,则系统会提示:Emtpy set

创建表

CREATE TABLE name ( 
 字段1 字段1的类型 [COMMENT 字段1的注释],  
 字段2 字段2的类型 [COMMENT 字段2的注释],  
 字段3 字段3的类型 [COMMENT 字段3的注释],  
 ……  
 字段n 字段n的类型 [COMMENT 字段n的注释]  
) [COMMENT 表注释];

# 方括号部分(COMMENT属性)为可选项.

说明:括号内的最后一条,没有逗号。
COMMENT 是可选参数.

【练习1】创建一个学生信息表,表名student,四个字段分别为:id、姓名、年龄、性别,请创建时指定适合字段的数据类型。

CREATE TABLE student (
   id int ,
   name varchar(50) ,
   age int ,
   sex varthar(1) 
) ;

【练习2】创建一个学生信息表,请把表和字段带上注释。

CREATE TABLE student (
  id int comment ‘编号’,
  name varchar(50) comment ‘姓名’,
  age int comment ‘年龄’,
  sex varthar(1) comment ‘性别’
) comment ‘学生基本信息表’ ;

 

 

 

 

 

 

 

数据类型

 MySQL中的数据类型有很多,主要分为三类: 数值类型、字符串类型、日期时间类型。

 

常用的数值类 数据类型

 

数据类型 描述 占用字节大小 有符合范围(SIGNED) 无符号范围(UNSIGNED)
TINYINT 极小·整数值 1 byte (-128,127) (0~255)
SMALLINT 小·整数值 2 byte (-32768,32767) (0~65535)
MEDIUMINT 中等大小·整数值 3 byte (-8388608,8388607) (0~16777215)
INT \ INTEGER 大整数值 4 byte (-2147483648,) (0~4294967295)
BIGINT 极大整数值 8 byte ()  
FLOAT 单精度浮点数值 4 byte ()  
DOUBLE 双单精度浮点数值 8 byte ()  
DECIMAL 小数值(精确定点数)   依赖M(精度)和D(标度)的值 依赖M(精度)和D(标度)的值

TINYINT 关键字 是单词 tiny + int 的组合,表示极小的整数单词:Tiny [ˈtaɪni] 极小的 。
SMALLINT 关键字 是单词 small + int 的组合,表示小的整数单词:Small [smɔːl] 小型的,小号的 。
MEDIUMINT  关键字 是单词 medium + int 的组合,表示中等大小的整数单词: medium [ˈmiːdiəm]  中等的,中号的。 

 

【练习】定义年龄字段,适合使用那种数据类型呢?

 INT数据类型 和 TINYINT 都可以,但是int占了4个字节,比价浪费内存空间,可以用 tinyint 数据类型,而且年龄是没有负数的,所以我们可以使用无符号的,具体为:age tinyint unsigned;

 

 

  

【练习】在数据库里面新建一张学生信息表,表名字 student_info 建表时使用comment带上注释。 

学生信息表包含以下字段,要求使用合理的数据类型和字符长度:

1、编号(名称 id,纯数字)
2、学号(名称 student_id_number,字符串类型,限制长度10位内)
3、学生姓名(名称 name,字符串类型,限制长度3位以内)
4、性别(名称 sex,仅需储存一个汉字,男或女,长度1位)
5、年龄(名称 age,整数数值型类型,正常学生期年龄一般不会超过100岁,不能是负数)
6、身高(名称 height  [haɪt],单位米,浮点数值数据类型,总3位,小数点2位)
6、体重(名称 weight  [weɪt],单位Kg,浮点数值数据类型,总3位,小数点1位)
6、身份证号码(名称 id_card,二代身份证号码都是18位,部分号码中有X字符) 
7、入学日期(名称 Admission_Date,年月日)
8、分数(名称 scores [skɔːz]  成绩, 得分 。浮点数值数据类型,总分100,总3位,小数点1位)

找出下面代码中的错误:

create table (
  id  int  comment '编号' ,
  Student_id_Number  warchar(10)  comment '学号' ,
  Name  warchar(3)  comment '姓名' ,
  Sex  char(1)  comment '性别' ,
  Age  tinyint  comment '年龄' ,
  Height  warchar  double(3,2)   comment '身高' ,
  Weight  warchar  double(3,1)  comment '体重' ,
  ID_card  warchar(18)   comment '身份证号码' ,
  Admission_Date   date   comment '入学日期' ,
  scores  double(4 ,1)   comment '成绩' 
)  comment '学生信息表' ;

说明:
在使用数字的时候,需要区分,是用 数值型 还是 字符串类型,
比如身份证号码,虽然是数字,但是不能用数值,而应该用字符串
如果使用字符串,需要指定长度范围,有定长和动长两种,定长就是输不输满,都是占据设置的位数。动长就是,在限定的位数内,用多少算多少,更省储存空间。如果超过指定的长度,会报错。
如果使用数值型,整数型不用指定,但是浮点数的,需要指定总位数,以及小数点位数。

上面的代码错误有:没有表名、warchar关键字错误。

正确如下:

create table student001(
  id  int  comment '编号' ,
  Student_id_Number  varchar(10)  comment '学号' ,
  Name  varchar(3)  comment '姓名' ,
  Sex  char(1)  comment '性别' ,
  Age  tinyint  comment '年龄' ,
  Height  double(3,2)   comment '身高' ,
  Weight  double(3,1)  comment '体重' ,
  ID_card  varchar(18)   comment '身份证号码' ,
  Admission_Date  date   comment '入学日期' ,
  scores  double(4 ,1)   comment '成绩' 
)  comment '学生信息表' ;

 

【12】查看当前数据库里面的表【 语句:show  tables;】
SHOW TABLES ;


【08】查看表的内容(表结构)重点! 【 语句:desc  表名;】
DESC student001;

【08】查看建表语句

 

 【08】给表里面增加字段 【 语句:alter  table  表名 add  字段名 数据类型(长度) [注释];】
ALTER  TABLE  student001  ADD  nickname  varchar(10) COMMENT '昵称' ;
单词:alter [ˈɔːltə(r)]  更改;改变;修改

 

【08】查看表的内容(表结构)重点! 【 语句:desc  表名;】
DESC student001;

 

 

 修改字段

修改字段有两种:修改字段的数据类型,以及修改字段名称和类型

1,仅修改字段的数据类型:
alter table 表名 modify 字段名 新的数据类型(长度) ;

2,修改字段名称和类型
alter table 表名 change 旧字段名  新字段名  数据类型(长度) [注释] [约束] ;

【练习】修改 student001 表里面的 height 字段名称,将其改为 shengao
ALTER  TABLE student001 CHANGE  height  shengao  double(3,2) COMMENT '身高' ;
DESC student001; # 修改后再查看下表内容

 

 删除字段

alter table 表名 drop 字段名;

【练习】删除stuent001表里面的  weight  字段
ALTER  TABLE  student001  DROP  weight  ;  # 删除weight字段
DESC student001; # 字段删除后再查看下表的内容

 

修改表名(重命名)

alter table 表名 renam  to 新表名;

【练习】修改 stuent001表名为 stu001 字段
ALTER TABLE  student001  RENAME  TO  stu001;
DESC student001; # 修改表名后再查看下表的内容,此时需要使用新表名才能查看了
SHOW  TABLES ;  # 查看下数据库的表列表,原来的表名称 student001 已经变成 stu001了;
DESC stu001; # 此时需要使用新表名才能查看表内容了

 

删除表

删除指定表

drop  table [ if exists ]  表名 ;
加上  if exists  可选项表示,如果指定表存在就删除指定表,如果指定的表不存就不删了(不报错)。

 

 

删除指定表,并重新创建该表(很少用这个)

truncate table 表名;

会删除表后,再重新创建一个同名的空表(相当于清空了表里面的内容)

 

posted @ 2024-01-29 17:50  kuozhen  阅读(150)  评论(3)    收藏  举报