自己做專案時,主要是表單的提交,所以對資料庫的操作有所了解。但是面試時問起時,發現自己掌握不牢,而且掌握的都太基本了,故在此將面試中涉及到的和基本的sql操作一起整理一下。所有的sql操作我按照以下分類進行整理:
(1)運算元據庫
create database test;建立資料庫test
drop database test;刪除資料庫test
use test;使用資料庫test
show databases;顯示所有的資料庫
(2)運算元據表
create table test (
username vachar(100),
passwd varchar,
);指定列和列的資料型別建立表
create table new_table like old_table;//從已有表建立新錶
create table new_table as select col1,col2,...,coln from old_table definition only;用舊表的特定列建立新錶
drop table test;刪除表test
alter table test add column user_*** int;給表test增加一列user_***並指定資料型別
alter table test add primary key(username);給表test新增主鍵為username
alter table test drop primary key(username);刪除表的主鍵
對資料記錄的操作有基本和高階之分,以下是基本的操作:
(3)查詢資料記錄
select * from table_name where arr_1 = value;*表示選出所有列
select * from table_name where arr_1 between value1 and value2;
select * from table_name where arr_1 like '%value%';like %value%表示只要含有value字串就行
select username, passwd from test;從表test中選出指定列
select distinct username from test;從表test中選出username列並去重
select * from table_name where col_1 = 'value1' and(or) col_2 = 'value2';雙重條件,若多重可加括號
select name, age from person order by name, age;//從person表中選出name和age兩列,按字母順序顯示name,以數字順序顯示age
select name, age from person order by name desc, age asc;//從person表中選出name和age兩列,按字母順序顯示name,以數字順序顯示age
select col_1, col_2 from old_table as new_table;從表old_table中取出兩列形成新的表new_table
(4)更新資料記錄
update table_name set col_1 = new_value where col_2 = value2
update test set passwd = 'newpasswd' where username = 'hbj';更新username為hbj的密碼為passwd
(5)增加資料條目
insert into table_name values (value1, value2,....);插入所有值
insert into table_name (col_1, col_2,...) values (value1, value2,....);
insert into lab (name, officer) values ('ngirc', 'cqxu');特定列值插入
(6)刪除資料條目
delete * from table_name;刪除所有列
delete from table_name where col_1='value1';刪除特定列
以下是幾個常用的高階操作:
1.select top number|percent col_1 from table_name:select top 2 * from test;限制了顯示的條目數
2.selet col_1 from table_name where col_2 in (value1,value2,...);col_2有多選項
3.select col_1 as name_1, col_2 as name_2 from table_name;給表取個別名
4.select new1.col_1, new2.col_3, new2.col_7 from table1 as new1, table2 as new2 where new1.col_5 = 'value5' and new2.col_7 = 'value7' ;此語句也可用5來寫
5.select persons.lastname, persons.firstname, orders.orderno from persons inner join orders on persons.id_p=orders.id_p order by persons.lastname;適用於兩個表有共享鍵的情形,也可用4來寫
6.select column_name(s) from table_name1 left join table_name2 on table_name1.column_name = table_name2.column_name;返回table_name1中所有的行即使table_name2中沒有匹配的行。
7.select column_name(s) from table_name1 left join table_name2 on table_name1.column_name = table_name2.column_name;跟6恰好相反;join的作用只是將選出的部分鄰接在一起。
8.select col_1 from table_name1 union select col_2 from table_name2;將兩個表中選出的資料融合到一起
很好的參考資料:
sql常用語句
use myoa select from delete from department where departmentid 1 insert department departmentid,departmentname values 1,技術部 update department set depa...
sql常用語句
在sqlserver,簡單的組合sp spaceused和sp msforeachtable這兩個儲存過程,可以方便的統計出使用者 資料表的大小,包括記錄總數和空間占用情況,非常實用,在sqlserver2k和sqlserver2005中都測試通過。1.exec sp spaceused 表名 sq...
sql常用語句
第一種 行列互換思想,外層group by,使用case when then 我有乙個表,有兩個字段 收費專案 唯一值 收費金額。我想用sql按收費專案不同生成不同的字段,對應值是金額。如 房租 100 水電費 50 雜費 50 生成後的格式是 房租 水電費 雜費 100 50 50 請問,如何寫這...