sql小筆記(增刪改查——新增列、修改表名、列的欄位型別等)

CNOLZP發表於2020-09-28

個人小結,隨機更新
只瞭解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;

其他:
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()中不寫列名。



關鍵字: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衝突實現覆蓋(更新),由於是覆蓋,其他欄位會變為空】


關鍵字: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

相關文章