MySQL中DDL和DML

一、SQL作用

	- 是所有关系型数据库的统一操作规范,不同关系型数据库都支持SQL
	
	- 所有的关系型数据库都可以使用SQL
	
	- 不同数据库之间的SQL有一些区别(方言)

SQL语法规范

  • SQL语句可以单行或者多行书写,以;结尾(Navicat中可以不写;)
  • 可以使用空格或者缩进增加语句的可读性
  • MySQL中使用SQL不区分大小写,一般数据库名,表名,列名小写
  • 注释方式
注释语法 说明
– 空格 单行注释
/**/ 多行注释
# MySQL特有的单行注释

SQL分类

数据查询语言(Data Query Language,DQL):

DQL主要用于数据的查询,其基本结构是使用SELECT子句,FROM子句和WHERE子句的组合来查询一条或多条数据。

数据操作语言(Data Manipulation Language,DML):

DML主要用于对数据	增加、修改和删除的操作。

主要包括: INSERT-增加数据;UPDATE-修改数据;DELETE-删除数据。

数据定义语言(Data Definition Language,DDL):

DDL主要用针对是数据库对象(数据库、表、索引、视图)进行创建, 修改和删除操作。

主要包括: CREATE-创建;ALTER-修改;DROP-删除。

数据控制语言(Data Control Language,DCL):

DCL用来授予或回收访问数据库的权限。

主要包括: GRANT-授予用户某种权限;REVOKE-回收授予的某种权限 。

事务控制语言(Transaction Control Language,TCL):

TCL用于数据库的事务管理。

主要包括: START TRANSACTION-开启事务;SET TRANSACTION-设置事务的属性
			COMMIT-提交事务;ROLLBACK-回滚事务 

二、DDL操作

1. DDL操作数据库

1.1 DDL操作数据库案例

 -- 查看所有的数据库
    show databases;
    
    -- 创建数据库
    create database bjsxt01;
    
    -- 删除数据库
    drop database bjsxt01;

2. DDL操作数据库表

2.1 MySQL中常见的数据类型

类型 描述
int 整型
double 浮点型
varchar 字符串型
char(M) 0~255字符 允许长度0~M个字符的定长字符串
date 日期类型,格式为:yyyy-MM-dd
datetlme ‘YYYY-MM-DD HH:MM:SS’ (‘1000-01-01 00:00:00’, ‘9999-12-31 23:59:59’)

2.2 详细数据类型

2.2.1 整数类型
整数类型 大小 表数范围(有符号) 表数范围(无符号) 作用
TINYINT 1字节 (-128,127) (0,255) 小整数值
SMALLINT 2字节 (-32768,32767) (0,65535) 大整数值
MEDIUMINT 3字节 (-8388608,8388607) (0,16777215) 大整数值
INT/INTEGER 4字节 (-214748364,2147483647) (0,4294967295) 大整数值
BIGINT 8字节 (-9233372036854775808,9223372036854775807) (0,18446744073709551615) 极大整数值

​ MySQL支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。显示宽度并不限制可以在列内保存的值的范围.

2.2.2 浮点数类型
浮点数类型 大小 作用
FLOAT 4字节 单精度浮点数值
DOUBLE 8字节 双精度浮点数值

注意事项:
浮点数类型的宽度不会自动扩充,使用时需要指定长度。
如:score double(4,1) 总体长度是4 精度为1位。 decimal (16个字节)

2.2.3 字符串类型
字符串类型 大小 描述
CHAR(M) 0~255字符 允许长度0~M个字符的定长字符串
VARCHAR(M) 0~65535字符 允许长度0~M个字符的变长字符串
BINARY(M) 0~255字节 允许长度0~M个字节的定长二进制字符串
VARBINARY(M) 0~65535字节 允许长度0~M个字节的变长二进制字符串
TINYBLOB 0~255字节 二进制形式的短文本数据(长度为不超过255个字符)
TINYTEXT 0~255字节 短文本数据
BLOB binary large object 二进制形式的长文本数据
TEXT 长文本数据
MEDIUMBLOB 0~16777215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0~16777215字节 中等长度文本数据
LOGNGBLOB 0~4294967295字节 二进制形式的极大文本数据
LONGTEXT 0~4294967295字节 极大文本数据

​ CHAR和VARCHAR类型相似,均用于存于较短的字符串,主要的不同之处在于存储方式。CHAR类型长度固定,VARCHAR类型的长度可变。因为VARCHAR类型能够根据字符串的实际长度来动态改变所占字节的大小,所以在不能明确该字段具体需要多少字符时推荐使用VARCHAR类型,这样可以大大地节约磁盘空间、提高存储效率。
注意事项:
​ CHAR和VARCHAR表示的是字符的个数,而不是字节的个数。

2.2.4 日期和时间类型
类型 格式 取值范围
TIME ‘HH:MM:SS’ (‘-838:59:59’, ‘838:59:59’)
DATE ‘YYYY-MM-DD’ (‘1000-01-01’, ‘9999-12-31’)
YEAR YYYY (1901, 2155), 0000
DATETIME ‘YYYY-MM-DD HH:MM:SS’ (‘1000-01-01 00:00:00’, ‘9999-12-31 23:59:59’)
TIMESTAMP时间戳 ‘YYYY-MM-DD HH:MM:SS’ (‘1970-01-01 00:00:01’ UTC, ‘2038-01-19 03:14:07’ UTC)

TIMESTEMP类型的数据指定方式与DATETIME基本相同,两者不同之处在于以下几点:

  1. 数据的取值范围不同,TIMESTEMP类型的取值范围更小
  2. 如果我们对TIMESTAMP类型的字段没有明确赋值,或是被赋与了NULL值,MySQL会自动将该字段赋值为系统当前的日期与时间
2.3 DDL-创建数据库表

语法:

create table 表名(
	字段1	数据类型,
    字段2 数据类型(长度)
);
-- 注意:最后一个字段不要加逗号,可以给字段的数据类型指定长度

练习1:创建商品分类表

表名:category
表中的字段:
	分类编号:cid,整型
	分类名称:cname,字符串类型,长度为20

SQL实现:

-- 切换到bjsxt01数据库
use bjsxt01;
-- 创建表
create table category(
	cid int,
    cname varchar(20)
);

练习2:创建学生表

表名:student
表中的字段:
	学号:sid,整型
	姓名:sname,字符串类型,长度为10
	性别:sex,字符串类型,长度为1
	年龄:age,整型
	入学日期:createdate,日期类型
	班级:clazz,字符串类型,长度为15
	邮箱:email,字符串类型,长度为25

SQL实现:

create table student(
	sid int,
    sname varchar(10),
    sex char(1),
    age int,
    createdate date,
    clazz varchar(15),
    email varchar(25)
);
2.4 DDL-查看数据库表
-- 显示当前数据库的所有的表
show tables;
-- 显示某个表的结构 desc 表名
desc student;
-- 查看某个表完整的建表语句 show create table 表名
show create table student;
2.5 DDL-删除数据库表
-- 删除当前数据库中的某个表  drop table 表名
drop table student;
2.6 DDL-修改数据库表
2.6.1 修改表名
-- 语法格式:rename table 旧表名 to 新表名;

-- 修改student表名为stu
rename table student 
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薄荷先生。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值