sql小笔记(增删改查——新增列、修改表名、列的字段类型等)

本文详细介绍了SQL中的表操作,包括创建、删除、修改表及列,以及数据的增删改查。还涉及了对表的注释、视图的创建、分页查询、时间计算等高级用法。此外,讲解了如何使用LIKE、IS NULL等条件进行查询,并提供了多条实用的SQL语句示例。
摘要由CSDN通过智能技术生成

个人小结,随机更新
只了解sql知识点并不一定能灵活使用,可以参照sql习题:SQL习题及解答
[
以下内容区分为对表的增删改查对数据的增删改查
对表:
增(创建表)、删(删除表)
改(修改表名、修改列名、修改列的数据类型)
对数据:
增(数据插入)、删(删除数据、清空数据)
改(修改数据)、查(查询数据)
]

对表的增删改查

增:新增表、列
关键字:create
基本语句:create table table_name ( id varchar2(4),name varchar2(20) );

--基本建表语句
CREATE TABLE `employees` (
`emp_no` int(11) NOT NULL,
`birth_date` date NOT NULL,
`first_name` varchar(14) NOT NULL,
`last_name` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
-- 增加列
alter table table_name add new_column datatype;
alter table stu add grade varchar default 'null' not null; --给stu表添加一个grade列,不为空默认值为null

其他:
1、根据已有表,建表。

create table tea as select * from teacher where 1=2; --创建一张列和数据类型都与teacher表相同的空表
create table stu_bk as select * from stu; --创建一个与表stu相同的stu_bk表。(常用于表的备份)
--同理,只要as后的select语句能获取一张表,则都能创建这样的表
create table bk as select stu.id,stu.name,tea.course from student stu,teacher tea;

2、给表和列添加注释

COMMENT ON table student IS '学生信息表,有学号、姓名、班级';
select * from user_tab_comments; -- user_tab_comments是一张视图,含有table_name、table_type、comments三列。
COMMENT ON COLUMN stu.name is '学生的名字';
select * from user_col_comments; --user_col_comments是一张视图,含有table_name、column_name、comments三列。

删:删除表、列
关键字:drop
基本语句:

drop table table_name; -- 删除表。
alter table table_name drop column column_name; -- 删除列。

改:修改表名、列名、数据类型
关键字:alteralter .. modifyalter .. rename to ..
基本语句:(修改表名、修改字段类型)

alter table table_name rename to new_table_name; --将表table_name改名为new_table_name。
alter table table_name rename column old_column_name to new_column_name; --修改列名。
alter table table_name modify id varchar2(100); --将列名为id的数据类型改为varchar2(100)。

注意:
修改字段类型时,同类型扩张有效、缩小字段长度需注意数据本身;不同数据类型修改时表中数据需为空。
如:char(1)可以修改为varchar2(2);varchar2(40)可以修改为varchar2(10),但数据本身长度大于10时,修改失败;date修改为varchar2(20),由于数据类型不同不能生效,但当列数据为空时可以生效。



关键字:select
介绍系统中的几张视图

select * from all_tables; --all_tables 可查询当前用户的权限表。
select * from USER_TAB_COMMENTS; --USER_TAB_COMMENTS 可查看表的注释。
select * from user_col_comments; --user_col_comments 可查看表中列的注释

仅对数据进行的增删改查


关键字:insert
基本语句:insert into table_name(column1,column2,...) values(data1,data2,...)

insert into stu(id,name,grade) values(1,'张三',87);
insert into stu(id,name,grade) values(2,'tom',90);
insert into stu(id,name,class_id) values(3,'jack',87),
(4,'mark',92),
(5,'李四',78),
...;

注意:
1、一般valuevalues通用,但values应用更广,多行插入时value却稍快。
2、values()中数据包含所有列时,一般table_name()中不写列名。

== ==
批量插入:table_name2中查询到的数据插入到table_name中。

insert into table_name
select * from table_name2;


关键字:deletetruncate
基本语句:
1、按条件删除:delete from table_name where id = 2;

delete from table_name; --清空表。需commit,可以回滚。
delete from table_name where id > 2 and name like '%k%'; --选择性删除:删除id大于2且name中含有k的数据。

2、清空表,不可回滚:truncate table table_name;



关键字:updatereplace
基本语句:update table_name set column_name ..

UPDATE STU SET GRADE = 100 WHERE ID = 10; --将学生表中id为10的学生成绩修改为100。需commit。
update stu set replace(name,'jack','tom') where id = 2; --将id为2的学生,姓名从jack改为tom。
REPLACE INTO stu VALUES (1, 'tom'); --插入一条数据,id为1,姓名为tom,其他字段为空。【在sqlite中,该语句会因主键id冲突实现覆盖(更新),由于是覆盖,其他字段会变为空】

修改字段中部分字符:
将指定列中的|改为/。如世界|挺大==>世界/挺大

update table_name set column_name = replace(column_name,'|','/') --where id > ... 添加条件,指定修改范围


关键字:select
基本语句:select .. from ..

select * from student; --查找student表的所有数据。

其他关键字:
where:条件查询关键字
like:模糊检索,'%%'%表示任意,_表示单个任意字符。
is null / is not nullisis not后只能接null
min / max:最大最小值
length:字符长度
order by:排序,默认升序asc;降序为desc。
substr(str,start,n):截取子串,从str字符串的第start字符开始,取n个字符。


视图
视图的特点:不能修改

分页查询
关键字:limitoffset

-- LIMIT 后的数字代表返回几条记录,OFFSET 后的数字代表从第几条记录开始返回(第一条记录序号为0),也可理解为跳过多少条记录后开始返回。
select * from stu limit 4 offset 8; -- 从第8条记录起(包含第8条),返回4条记录
-- LIMIT X,Y :Y代表返回几条记录,X代表从第几条记录开始返回(第一条记录序号为0),切勿记反。
select * from stu limit 4,7; -- 从第7条记录起(包含第7条),返回4条记录

更新
关键字:update .. set ..replace into

在这里插入代码片

--oracle 两个时间月份差:
select months_between(to_date('2021-10-10','yyyy-mm-dd'),to_date('2021-08-18','yyyy-mm-dd')) from dual;

oracle 月份加减

add_months(to_date('200401','yyyymm'),-2 )

--原文链接:https://blog.csdn.net/wenjinglian/article/details/84168872

持续随机更新...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值