Mysql 第三次作業

2021-09-16 20:34:12 字數 4196 閱讀 3841

寫在前面:

貪心報了好幾個班,沒有時間實際操作了,所以這篇部落格就是一些知識點的貼上,後期會單獨出乙個部落格寫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...