mysql 基本操作記錄語句

來源:互聯網
上載者:User

 

以下以資料庫”ceshi”為例

1、串連資料庫

mysql -u username -p password

2、建立/刪除資料庫

建立:create database ceshi;

刪除:drop database ceshi;

3、建立/刪除資料表

建立:create table students (sid int(10) auto_increment primary key,name varchar(255),course varchar(255),score int(10)) ;

刪除:drop table students;

設定資料表編碼:alter table `students` default character SET utf8 collate utf8_general_ci;

4、插入資料

    單條插入 :insert into students (name,course,score) values(value1,value2,value3);
    多條插入:insert into students (name,course,score) select value1[0],value1[1],value1[2] union select value2[0] ,value2[1],value2[2] union……
    從另外的一張表中讀取多條資料添加到新表中:insert into students(col1,col2,col3) select a,b,c from tableA ;
    從其他的多張表中讀取資料添加到新表中:insert ioto tableName(col1,col2,col3)  select a,b,c from tableA where a=1  union all select a,b,c from tableB where a=2            上邊代碼中的union all如果換成union,則相同記錄只插入一次,不會重複插入。
    上邊代碼中的into都可以省略!

5、order by語句

select * from students order by score (asc);    從低往高排,預設,asc可省去

select * from students order by score desc;      從高往低排

6、group by語句

select * from students group by course;       查詢資料按課程分組,只顯示查詢到的第一條

select * from students group by course order by socre;         order by 必須在 group by之後,group by 比order by先執行,order by不會對group by 內部進行排序,如果group by後只有一條記錄,那麼order by 將無效。要查出group by中最大的或最小的某一欄位使用 max或min函數。


--====================簡單的查增刪改===========

  --查看學生表的全部資料

  select * from studio

  --插入一個新的學生資訊

  insert into studio(st_name,st_sex,st_age,st_add,st_tel) values("黃蘭淇",0,36,'南充','13943943334')

  --查看class全部資料

  select * from class

  --向class表增加兩條條資料

  insert into class(cl_class,cl_coding,cl_o_time,cl_remark) values('新電實訓班','GXA-ncs-001','2008-03-11','都是很優秀的朋友')

  insert into class(cl_class,cl_coding,cl_o_time) values('阿壩師專實訓班','GXA-ABSZ-001','2008-03-11')

  --更新一條的資料 條件的重要性

  update class set cl_remark='真的是不錯' where cl_id=5

  --刪除一條資料 條件的重要性

  delete from class where cl_id=7

  --修改欄位標題

  select cl_id as '班級主鍵',cl_class as '班級名稱' from class

  select 名字=st_name from studio

  --使用文字串

  select '名字是:',st_name from studio

  --=============條件稍微複雜點的查增刪改==============

  --主要涉及到 or and not between in like > < = !> !< != <> () <= >= is null is not null

  --查詢cl_id 大於 1 的所有資訊

  select * from class where cl_id>1

  --使用 or

  select * from class where cl_id<>10 or cl_class='百傑一班'

  --使用and

  select * from class where cl_id<>10 and cl_class='百傑一班'

  --使用like 和 %

  select * from class where cl_class like '百傑%'

  select * from class where cl_remark like '%上午%'

  --使用 between

  select * from class where cl_id between 3 and 5

  --使用 between 配合上 not

  select * from class where cl_id not between 3 and 5

  --使用 is not null

  select * from class where cl_remark is not null

  --使用 in

  select * from class where cl_class in('千星一班','百傑二班')

  --=================使用數學運算子======================

  --主要涉及到 + = *

  --查詢Java相關課程分別要上多少周 按照每周5天,每天6節課來計算

  select '結果'=co_num/5/6 from course where co_name in ('Java基礎','Java項目入門')

  --==================使用彙總函數 ========================

  --涉及到COUNT SUM AVG MAX MIN

  --查詢課時數小於50的課程一共有多少門

  select count(*) from course where co_num<50

  --查詢所有課程一共多少課時

  select sum(co_num) from course

  --計算全部課時費,假設每節課50塊錢

  select sum(co_num)*50 from course

  --查詢課時最少的課程

  select min(co_num) from course

  --查詢課時最多的課程

  select max(co_num) from course

  --查詢平均每門課多少課時

  select avg(co_num) from course

 

聚集合函式:
最大值:max()       最小值 min()    平均值avg()
求和:   sum()        匯總: count ()
如:求每個部門的基本工資平均值
select 部門,avg(基本工資)  as 部門基本工資 from 員工表 group by 部門
顯示平均基本工資大於3000的部門
Select  部門,avg(基本工資) from 員工表 group 部門 where avg(基本工資)>3000
此句錯誤。SQL規定在分組中使用條件不能用 Where 而是用 having
Select  部門,avg(基本工資) from 員工表 group by  部門 having avg(基本工資)>3000

八、多表查詢:
一個資料庫中的多個表,存在一定的聯絡,怎麼樣正常的顯示這麼表的資訊?
現在有三個表:
yg
Name  sex  age 
宋洋  男   20 
馬冬旭 女   40 
 Gs
Name   title      date       單位
宋洋   AD詳解 2006-11-10  清華大學
馬冬旭 linux    2005-01-01   人民大學
 dz
單位     地址
清華大學  五道口
人民大學   黃莊

第一種方法稱為:交叉串連,在SQL SERVER中又稱為笛卡爾乘積
但是要注意的預設產生的記錄總數是兩表記錄之積
select * from yg,gs;
select * from yg,gs where yg.name=gs.name;
這才是我們想要的記錄
第二種方法是用join串連:
內串連
select * from yg join gs on yg.name=gs.name
左外串連
右外串連
但沒有全外串連

九、聯合:
除了串連,mysql4。0以上的版本還支援UNION運算子,它用來把多個select查詢號的輸出串連成一個單獨的結果集。大多數情況下,這個運算子用來把查詢產生的結果集添加到不同的表,同時建立包括所有結果的一個單獨表。比如面試的時候問你,有兩個表,欄位資訊一樣,讓你用一條語句把兩個表的資訊組合為一個單獨的表!
為了說明UNION運算子的使用方法,我們舉一個例子:現在有兩個表,分別存放的是男同學資訊和女同學資訊,如果用一個語句將所有同學的資訊顯示出來!
mysql> select * from nan;
+--------+-------+
| name   | score |
+--------+-------+
| 彭聰留 |    80 |
| 費優優 |    81 |
| 曲權   |    82 |
+--------+-------+
3 rows in set (0.00 sec) mysql> select * from nv;
+------+-------+
| name | score |
+------+-------+
| 彭紅 |    80 |
| 費紅 |    81 |
| 曲紅 |    82 |
+------+-------+
3 rows in set (0.00 sec)
mysql> select * from nan union select * from nv;
+--------+-------+
| name   | score |
+--------+-------+
| 彭聰留 |    80 |
| 費優優 |    81 |
| 曲權   |    82 |
| 彭紅   |    80 |
| 費紅   |    81 |
| 曲紅   |    82 |
+--------+-------+
6 rows in set (0.00 sec)
那如果有三個表怎麼辦?也是一樣的操作!
但注意的是如果兩個表的某條記錄資訊完全一致,則只顯示為一條;如果想顯示全部記錄則在union後 加 all
mysql> select * from nan union all  select * from nv;
如果面試官又問你,如果想把顯示的資訊儲存到一個表中怎麼辦?
mysql> create table 表名 select 語句;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.