SQL语句——DDL(数据定义语言)语句

一、操作数据库

1.创建数据库    create

# create database 数据库名称;
create database school;

2.选择数据库    use

# use 数据库名称;
use school;

3.查看数据库    show

# show databases;查看所有的数据库
show DATABASES;

注:不要省略“s”

4.删除数据库    drop

# drop database 数据库名称;
drop database school;

二、数据库表的字段类型

1.字符串类型

类型

说明取值范围
char(M)固定字符串M字符
varchar(M)可变字符串变长度
tinytext微型文本串
text文本串(4个G左右大小)

char和varchar比较:

类型特点空间上时间上适用场景
char(M)固定长度浪费存储空间效率高存储不大,速度要求高
varchar(M)可变长度节省存储空间效率低非char的情况

2.数值类型

类型说明
tinyint非常小的数据
smallint较小的数据
mediumint中等大小的数据
int标准整数
bigint较大的整数
float单精度浮点数
double双精度浮点数
decimal字符串形式的浮点数,decimal(m,d):m:总长度,d:小数位数 

3.日期和时间类型

类型说明
datetimeYY-MM-DD hh:mm:ss

NULL类型:

  • 本身没有值
  • MySQL中,0或NULL都意味着假,1意味着真

三、数据库表的相关操作

1.创建数据表 create table

语法结构:

create table 表名(
     字段名  类型  属性,
     字段名  类型  属性,
     ……
     字段名  类型  属性
);

create table student(
	stu_name varchar(10),
	stu_age tinyint,
	stu_birthday datetime,
	stu_id char(18),
	stu_score decimal(4,1)
);

 2.查看表结构

  • 查看表中字段

方式一:desc 表名

desc student;

 

方式二:show create table 表名,出现表后,全选、复制、粘贴,可显示执行语句的具体实现方式

show create table student;

其中:

  • 反引号``:取消特殊性,即`table`也能做表名;
  • DEFAULT NULL:默认为空,可以不写值;
  • DEFAULT CHARSET=utf8mb4:默认字符集utf8mb4;
  • COLLATE=utf8mb4_0800_ai_ci:字符排序;
  • ENGINE=InnoDB:存储引擎,即根据制定好的规则存储数据。
  • 查找所有引擎
show engines;

 数据库存储引擎——InnoDB

  • InnoDB是MySQL的默认事务型引擎,被设计用来处理大量的短期事物,可以确保事物的完整提交和回滚。
  • 需要进行增加、查询、更新和删除操作,应优先选择InnoDB存储引擎。
  • 除特殊原因需选择其他引擎,否则应该考虑InnoDB引擎。
  • 数据文件结构:

                表名.frm存储表结构;

                表名.ibd存储数据和索引以及表结构。

  • InnoDB是为处理巨大数据量的最大性能设计;
  • 相比较MyISAM而言,InnoDB写的效率会差一些,并且占用更多的磁盘空间来保存数据和索引;
  • InnoDB不仅缓存索引还缓存真实数据。

  数据库存储引擎——MyISAM

  • MyISAM提供了大量的特性,如:全文索引、压缩等,但MyISAM不支持事务、行级锁、外键,缺点是崩溃后无法完全恢复;
  • 优势是访问的速度快,但增、删、改速度慢;
  • 数据文件结构:

                表名.frm存储表结构;

                表名.MYD存储数据;

                表名.MYI存储索引。

  • 适用于只读应用或者以读为主的业务;
  • MyISAM只缓存索引。
对比项MyISAMInnoDB
外键不支持支持
事物不支持支持
行表锁表锁,即使操作一条记录也是锁住整个表,不适合高并发操作行锁,操作时只锁某一行,不对其他行有影响,适合高并发操作
缓存只缓存索引,不缓存真实数据不仅缓存索引还缓存真实数据,对内存要求高,而且内存大小对性能有决定性的影响
默认安装YY
默认使用NY
关注点性能:节省资源、消耗少、简单业务事务:并发写。事务、更大资源

3.表结构的修改

alter table 表名 关键词 数据;

  • 修改表名

alter table 旧表名 rename as 新表名

alter table student rename as xuesheng;

将student表的名字改为xuesheng

  • 添加字段

alter table 表名 add 新字段名 类型 属性;

alter table xuesheng add stu_qq varchar(20) comment '这是学生的QQ号';

 为xuesheng表添加新字段stu_qq,并注释“这是学生的QQ号”

  • 删除字段

alter table 表名 drop 字段名;

alter table xuesheng drop stu_qq;

删除字段名stu_qq 

  • 修改字段(覆盖式修改)

1.有一定的默认值,default NULL;

2.如果已经存在具体的数据无法覆盖,要修改要确保数据式可以做隐式转换,不能转换的都不能改,否则就会报错。
如:qq号都是数字时,就可以把varchar(字符串)类型变为int类型;
        varchar(10)可以改为int(10),但int(10)再改为varchar(10)时,就会报错。

 方式一:modify    只能修改数据类型和属性
alter table 表名 modify  字段名 要修改的类型 要修改的属性;
方式二:change    可以修改数据类型、字段名、属性
alter table 表名 change 旧字段名 新字段名 要修改的类型 要修改的属性;

#要添加一个外国人的名字
alter table xuesheng modify  stu_name varchar(100);
#查看表中的具体内容
CREATE TABLE `xuesheng` (
  `stu_name` varchar(100) DEFAULT NULL,
  `stu_birthday` datetime DEFAULT NULL,
  `stu_id` char(18) DEFAULT NULL,
  `stu_score` decimal(4,1) DEFAULT NULL,
  `stu_qq` varchar(20) DEFAULT NULL COMMENT '这是学生的QQ号'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

#将stu_qq字段的字段名改为qq
alter table xuesheng change stu_qq qq varchar(20) comment  '这是qq号';
#查看表中的具体内容
CREATE TABLE `xuesheng` (
  `stu_name` varchar(100) DEFAULT NULL,
  `stu_birthday` datetime DEFAULT NULL,
  `stu_id` char(18) DEFAULT NULL,
  `stu_score` decimal(4,1) DEFAULT NULL,
  `qq` varchar(20) DEFAULT NULL COMMENT '这是qq号'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
  • 删除表 

drop table 表名;

drop table xuesheng;

删除表,不仅会删除表的数据,还有索引,以及表结构。

  • 24
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值