SQL终端基本语句(DDL+DML)

本文介绍了数据库的DDL语句,包括创建、删除和修改表的操作,以及数据类型如varchar、char、int等的使用。同时,详细讲解了DML语句,如insert插入数据,update更新数据,以及delete和truncate的删除操作,强调了它们的区别和适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(一)DDL语句

建表属于DDL语句,DDL:create、drop、alter…

(1)create建表语法:

建表语句如下:

create table 表名(
		字段名1 数据类型,
		字段名2 数据类型, 
		字段名3 数据类型,
		...);

(2)数据类型

常见的数据类型:

varchar:可变长度字符串,最长255,可以实际的数据长度动态分配空间,可节省资源。
   char:定长字符串,最长255,不管实际数据长度,直接分配固定指定空间存储数据,使用不恰当可能会导致空间浪费。
		 但是char相对于varchar效率更高,因为不必处理空间。
		 所以一般固定长度的都选char,例如:身份证号、性别等
    int:数字中的整型。
 bigint:数字中的长整型。
  float:单精度浮点型数据。
 double:双精度浮点型数据。
datatime:长日期类型。
   data:短日期类型。
   clob:字符大对象,超过255字符的都要用,最多可以存储4G的字符串,一般可以存储一些说明、文章。
   blob:二进制大对象,专门用来存储图片、声音、视频等媒体数据。往blob插入数据时需要IO流。

①创建表

创建一个宿舍表room(宿舍号r_id、人数num、姓名name、学号t_id):

create table room(
			r_id varchar(10),
			num char(6),
			name varchar(10),
			t_id bigint);

创建成功,观察其结构:
在这里插入图片描述
当然对表的查询结果也可以快速建表:

create table 表2 as select * from 表1;

②删除表

语法:

drop table 表名;

但是需要注意的是当删除的表不存在时,便会报错。
那么可以这样写:

drop table 表名 if exists;//如果这张表存在的话,删除

(二)DML语句

(1)insert ()插入语句

①insert into tables() values();

insert基本语法格式:

insert into表名(字段名1,字段名2,字段名3) values(1,2,3);

注意:字段和值要在数量和数据类型上都相对应,且当没有给字段写入值时默认值为NULL。
案例:对表room进行数据插入。

insert into room(r_id,num,name,t_id) values(541,6,'章健雄',2206210762);

插入成功:
在这里插入图片描述
当然前面表名里的字段也可以省略,但是后面的插入值便必须全部输入。

insert into 表名 values(1,2,3);

案例:

insert into room values(541,3,'蒋文隆',2206210738);

结果:

在这里插入图片描述
一次性插入多条语句:

insert into room3 values
		(541,3,'蒋文隆',2206210738),
		(541,3,'蒋文隆',2206210738);

这里还可以将查询结果插入另一张表,前提是表的字段名必须一致,但是这种方式很少用:

在这里插入图片描述

②default

除了这里进行对空表插入值,也可以在建表时对字段指定默认值(default)。

create table room2(
			r_id varchar(10),
			num char(6) default 6, //default指定默认值
			name varchar(10),
			t_id bigint);

这里能看到num已经被默认为6。
在这里插入图片描述

③format

format数字格式化,基本语法:

format(数字,'格式');

案例:对薪水进行千分位显示.

select ename,format(sal,'$999,999') as sal from emp;

结果:
在这里插入图片描述

④str_to_date

语法格式:

str_to_date('字符串日期',日期格式);

其作用是将字符串转化为日期,即将字符串varchar类型转换为data类型。
先建一个表:

create table t_user(
    -> name varchar(20),
    -> id bigint,
    -> birth date,
    -> sex char(10));

在进行插入:

insert into t_user values('章健雄',2206210762,'1997-01-01',male);

能明显看到这里的birth是date类型的,但传入的’1997-1-1’是字符串类型的,这里便可以进行转化:
mysql日期格式:

%Y 年
%m 月
%d 日
%h 时
%i 分
%s 秒
str_to_date('1997-01-01','%Y-%m-%d')
insert into t_user values(
						'章健雄',
						2206210762,
						str_to_date('1997-01-01','%Y-%m-%d'),
						'男');

插入成功:
在这里插入图片描述

⑤data_format

将日期转换为字符串,将data类型转换为具有一定格式的varchar类型。
语法格式:

data_format(日期类型数据,'日期格式')

但是在mysql中查询时也会自动转换:
在这里插入图片描述
案例:

select name,id,date_format(birth,'%Y/%m/%d') as 'new birth' from t_user;

在这里插入图片描述

⑥date和datetime的区别:

date是短日期,只包含年月日。mysql默认短日期格式:%Y-%m-%d
datetime是长日期,包含年月日时分秒。mysql默认长日期格式:%Y-%m-%d %h:%i:%s
那么在mysql当中怎么获取当前系统时间:now()函数,该函数获取的时间是datetime类型的。
在使用时便直接可以用now()代替某一字段数据。例如:

insert into 表名 values(数据1,数据2,now());

在这里插入图片描述

(2)updata修改语句

语法格式:

update 表名 set 字名1=1,字段名2=2,字段名3=3...where 条件

注意:没有条件限制会导致所有数据全部更新。
案例:将room3的name改为杨启航

update room3 set name = '杨启航' where id = 2206310838;

在这里插入图片描述

(3)delete/truncate/drop删除语句

①delete

语法格式:这里注意delete删除数据,只会清除数据但是数据在硬盘的真实存储空间还在。
优点:支持rollback,后面还可以在恢复数据。
缺点:删除效率低。

delete from 表名 where 条件;

注意:没有条件,整张表的数据会全部删除 !即:

delete from 表名;

案例:删除room3的表中数据

delete from rooms where id = 2206310838;

删除结果:
在这里插入图片描述

②truncate

还有一种快速删表的方法:truncate(属于DDL语句)
这种删除效率比较高,表被一次截断,物理删除。
这种删除缺点:不支持回滚这种
删除优点: 快速。
语法格式:

truncate table 表名;

③drop

这里delete和truncate其实都是删除表中的数据,其实表的结构还在,只有当时用drop语句时才是真正的将表删除:

drop table 表名;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值