mysql的进阶学习--基础篇--SQL的DDL和DML

什么是关系型数据库

概念: 建立在关系模型基础之上, 由多张相互连接的二维表组成的数据库.
特点:

  • 使用表存储数据, 格式统一, 便于维护.
  • 使用sql语言操作, 使用方便, 标准统一.

数据模型:
用户 --> 登陆 --> 数据库管理系统 --> 使用sql语言 --> 操作该管理系统中的数据库.

SQL的通用语法

  1. SQL语句可以单行或者多行书写, 以分号结尾;
  2. SQL语句可以使用空格/缩进来增强语句的可读性;
  3. Mysql的Sql语句不区分大小写, 关键字建议使用大写;
  4. 注释:
    • 单行注释: -- 注释内容 / # 注释内容 ( MySQL特有 )
    • 多行注释: /*注释内容*/

SQL语句的分类

主要是分成四类

  • DDL: 数据定义语言, 用来定义数据库对象(库\表\字段);
  • DML: 数据操作语言, 用来对表中的数据进行增改查(针对表对象);
  • DQL: 数据查询语言, 用来查询数据表中的记录(针对表对象);
  • DCL: 数据控制语言, 用来创建数据库用户, 控制数据库的访问权限.

DDL

库对象

1. 查询

查询全部:
show databases;
查询当前数据库:
select database();

2. 创建

create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];

3. 删除

drop database [if exists] 数据库名;

4. 使用

use 数据库名;

表对象

1. 查询

查询当前数据库所有表:
show tables;
查询表结构:
desc 表名;
查询指定的表的建表语句:
show create table 表名;

2. 创建

基本语句:

create table 表名(
	字段1 字段1类型 [comment '字段注释'],
	字段2 字段2类型 [comment '字段注释'],
	...
	字段n 字段n类型 [comment '字段注释']
)[comment 表注释];

mysql中的数据类型:
数值类型, 字符串类型, 日期时间类型

类型大小描述额外描述
tinyint1byte相当于java中的byte
smallint2byte相当于java中的short
int或者integer4byte相当于java中的int
bigint8byte相当于java中的long
float4byte单精度
double8byte双精度
dectmal不限依赖于精度和标度的值, 能精确的表示小数
char0~255 byte定长字符串例如char(10), 最大10个字符, 小也要10个字符的空间, 其余的用空格补齐, 性能好但是有可能会浪费空间
varchar0~65535 byte变长字符串性能相对不好, 但是不会浪费空间
tinyblob0~255 byte不超过255个字符的二进制数据
tinytext0~255 byte短文本数据
blob0~65535 byte二进制形式的长文本数据
text0~65535 byte长文本数据
mediumblob0~16 777 215 byte二进制形式的中等长度文本数据
mediumtext0~16 777 215 byte中等长度文本数据
longblob0~4 294 967 295 byte二进制形式的极大长度文本数据
longtext0~4 294 967 295 byte极大长度文本数据
date3 byteyyyy-MM-DD
time3 byteHH:MM:SS
year1 byteYYYY1901~2155
datetime8 byteyyyy-MM-DD HH:MM:SS
timestamp4 byteyyyy-MM-DD HH:MM:SS时间戳 1970-01-01 00:00:01~2038-01-19 03:14:07

3. 修改

修改数据类型
alter table 表名 modify 字段名 新的数据类型;
修改字段名和字段类型
alter table 表名 change 旧的字段名 新的字段名 类型 [comment 注释][约束];
删除字段:
alter table 表名 drop 字段名;
修改表名:
alter table 表名 rename to 新表名;
添加字段:
ALTER TABLE 表名 ADD 新字段名 字段类型;

4. 删除

drop table [if exists]表名; 这种方法注意,速度最快, 数据和表结构都会被清除;
truncate table [if exists]表名; 这种方法就是只删除表的数据但是表的结构将会被保存;

DML

1. 插入(insert)

给指定的字段添加数据
insert into 表名(字段名1,字段名2,...) values (值1,值2,...);
批量添加数据
insert into 表名(字段名1,字段名2,...) values (值1,值2,...), (值1,值2,...),(值1,值2,...);

  • 插入的数据要和指定的字段一一对应;
  • 字符串和日期数据应该在引号中;
  • 插入的数据大小应该在字段的规定范围内;

2. 更新(update)

update 表名 set 字段名1=值1,字段名2=值2,...[where 条件];

  • 修改语句的条件可以有也可以没有, 如果没有 ,将会修改整个表的所有数据.

3. 删除(delete)

删除将是针对表对象中的行数据(元组)
delete from 表名 [where 条件];

  • delete语句中的where可以有也可以没有, 没有将删除表中的全部数据;
  • delete语句操作的最小单位是元组, 如果要删除某一个字段数据应该使用(update);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值