寫在前面:
貪心報了好幾個班,沒有時間實際操作了,所以這篇部落格就是一些知識點的貼上,後期會單獨出乙個部落格寫mysql班所有專案的**,請見諒。
2. 用sql語句建立表
3. 用sql語句向表中新增資料
4.用sql語句刪除表
5. 用sql語句修改表
二. 表聯結
2. inner join
3. left join
4. cross join
5. 自連線
6. union
7.以上各種方式的區別
create table table_name (column_name column_type);
insert into table_name (column1,column2...)
values (value1,value2,...);
insert into table_name (column1,column2...)
values (value1,value2,...),
(value1,value2,...)
insert into table_1
select c1, c2, from table_2;
刪除操作很簡單,但是一定要確實是否需要使用where子句,否則整表將被刪除。
drop table table_name;
delete from table_name;
或者delete * from table_name;
truncate table table_name
drop:刪除表資料和表本身。真正意義上的刪除表,操作前一定要小心。
delete:刪除一行或者多行資料,不刪除表本身。
truncate:僅刪除表內資料,不刪除表本身。
alter table table_name rename column old_column_name to new_column_name;
update table_name set column1=value1,column2=value2,...
where some_column=some_value;
delete from table_name where some_column=some_value;
如需刪除表中的列,請使用下面的語法(請注意,某些資料庫系統不允許這種在資料庫表中刪除列的方式):
alter table table_name drop column column_name
alter table 表名 add column 列名 varchar(20) not null;--插入在最後一列
alter table 表名 add column 列名 varchar(20) not null after column1;--插在column1列後面
alter table 表名 add column 列名 varchar(20) not null first;--插入到第一列
insert into table_name values (value1,value2,value3,...);
查詢資料時,如果表名很長,使用起來不方便,此時,就可以為表取乙個別名,用這個別名來代替表的名稱
select * from 表名 [as] 別名;
--注意,為表指定別名,as關鍵字可以省略不寫
在查詢資料時,為了使顯示的查詢結果更加直觀,可以為字段取乙個別名 。
select 欄位名 [as] 別名 [,欄位名 [as] 別名,……] from 表名;
--注意,為字段指定別名,as關鍵字可以省略不寫
inner join(內連線,或等值連線):獲取兩個表中字段匹配關係的記錄。
select * from tablea inner join tableb on tablea.name = tableb.name;
mysql的inner join 也可以省略 inner 使用 join,效果一樣。mysql left join 與 join 有所不同。 mysql left join 會讀取左邊資料表的全部資料,即便右邊表無對應資料。如果右表中沒有匹配,則結果為 null。
select * from tablea left outer join tableb on tablea.name = tableb.name;
cross join 把錶a和表b的資料進行乙個n*m的組合,即笛卡爾積。
select * from tablea cross join tableb ;
笛卡爾(descartes)乘積又叫直積。假設集合a=,集合b=,則兩個集合的笛卡爾積為。可以擴充套件到多個集合的情況。類似的例子有,如果a表示某學校學生的集合,b表示該學校所有課程的集合,則a與b的笛卡爾積表示所有可能的選課情況。實際上,在 mysql 中(僅限於 mysql) cross join 與 inner join 的表現是一樣的,在不指定 on 條件得到的結果都是笛卡爾積,反之取得兩個表完全匹配的結果。
inner join 與 cross join 可以省略 inner 或 cross 關鍵字,因此下面的 sql 效果是一樣的
... from table1 inner join table2
... from table1 cross join table2
... from table1 join table2
自連線就是乙個表和它自身進行連線,是多表連線的特殊情況。
在自連線查詢中,要先在from字句中為表分別定義兩個不同的別名,然後使用這兩個別名寫出乙個連線條件,條件比較在同乙個表中的情況。
select distinct c1.couno 課程編號, c1.couname 課程名稱, c1.kind 課程類別,c1.departno 系部編號
from course c1 join course c2 on c1.kind=c2.kind
and c1.departno!=c2.departno order by c1.couno;
mysql union 操作符用於連線兩個以上的 select 語句的結果組合到乙個結果集合中。多個 select 語句會刪除重複的資料
select expression1, expression2, ... expression_n
from tables
[where conditions]
union [all | distinct]
select expression1, expression2, ... expression_n
from tables
[where conditions];
/*引數
expression1, expression2, ... expression_n: 要檢索的列。
tables: 要檢索的資料表。
where conditions: 可選, 檢索條件。
distinct: 可選,刪除結果集中重複的資料。預設情況下 union 操作符已經刪除了重複資料,所以 distinct 修飾符對結果沒啥影響。
all: 可選,返回所有結果集,包含重複資料。
*/
**-inner-join、left-join、right-join、full-outer-join、union、union-all的區別/ 第三次作業
2 12有600 mb 兆位元組 的資料,需要從南京傳送到北京。一種方法是將資料寫到磁碟上,然後託人乘火車這 些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率為2.4kb s 傳送此資料。試比較這兩種方法的優劣。若資訊傳送速率為33.6kb s,其結果又如何?解 當傳送速率為2.4k...
第三次作業
1 有600mb 兆位元組 的資料,需要從南京傳送到北京 一種方法是將資料寫到磁碟上,然後託人乘火車將這些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率為2.4kb s 傳送此資料,試比較這兩種方法的優劣。若資訊傳送的速率為33.6kb s,其結果又如何?解 假定連續傳送且不出錯。若...
第三次作業
p67 2 12 有600mb的資料,需要從南京傳送到北京。一種方法是將資料寫到磁碟上,然後託人乘火車將這些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率是2.4kbps 傳送此資料。試比較這兩種方法的優劣。若資訊傳送速率為33.6kbps,其結果又如何?解 1 t 600 1024...