1. 程式人生 > >MySQL學習——查詢語句

MySQL學習——查詢語句

    MySQL查詢語句一般分為單表查詢和多表查詢。

        select......from......

                                    ---單表查詢

MySQL查詢語句 -----                            ---子查詢

                                    多表查詢 ---

                                                             --- 連線查詢

單表查詢

1、查詢語句和條件以及查詢的結果都在同一個表中

        eg:查詢stu表中sto=1的學生的所有資訊

select *from stu where sto =1;

    * 代表的是表中的所有資訊   在查詢語句中 查詢條件都是跟在 where 後。

例題

-- 需求
   -- 1 用create database 命令建立emp_project資料庫
   drop database if exists emp_project;
   create database emp_project;
   -- 2 用create table 命令建立emp表 用insert into語句在emp中新增10條資料
   -- emp表字段如下:
	create table emp(
		e_id  int not null auto_increment primary key,  	-- 員工的編號
		e_name  varchar(10) not null, 	-- 名字
		e_sex   varchar(2) not null,	-- 性別
		e_job   varchar(20) not null,	-- 職位
		e_salary int not null,	-- 薪水
		e_date 	 datetime not null,	-- 入職時間 
		e_age  	int not null	-- 年齡
	);
       
	insert into emp values(1,'張三','男','工程師',3500,'2010-3-4',23);
	insert into emp values(2,'李四','女','軟體師',4500,'2010-3-4',33);
	insert into emp values(3,'王五','男','經理',5500,'2010-3-4',22);
	insert into emp values(4,'趙六','女','部門經理',6500,'2010-3-4',45);
	insert into emp values(5,'張七','男','業務員',7500,'2010-3-4',35);
	insert into emp values(6,'李八','女','總經理',8500,'2010-3-4',29);
	insert into emp values(7,'王9','男','工程師',4500,'2010-3-4',40);
        
   
     
  -- 3 查詢工資範圍在3000-10000之間的員工資訊
	select * from emp where e_salary between 3000 and 10000;
  -- 4 查詢性別為男的員工資訊
	select * from emp where e_sex = '男';
  -- 5 查詢姓李或者姓張的員工資訊
	select * from emp where e_name like '張%' or e_name like '李%';
  -- 6 查詢職位是工程師且工資大於4000的員工資訊。
	select * from emp where e_job = '工程師' and e_salary >4000;
  -- 7 查詢員工年齡小於30或者工資大於5000的員工資訊
	select * from emp where e_age<30 or e_salary >5000;
  -- 8 查詢員工資訊工資從高到低排序
	select * from emp order by e_salary desc;

多表查詢

建表
create table a(
	a_id int not null,
	a_name varchar(10)
);
create table b(
	b_id int not null,
	b_name varchar(10)
);
insert into a values(1,'張三');
insert into a values(2,'李四');
insert into a values(3,'王武');
insert into a values(6,'劉備');

insert into b values(1,'aa');
insert into b values(2,'bb');
insert into b values(3,'cc');
insert into b values(7,'ff');
表 a 表b

連線查詢

1、內連線  inner join ...on...(inner join 可忽略不寫)

符合條件,當需要查詢兩個表之間相同的欄位的資料時,用內連線

    查詢a 表和b表 id相同的人的資料

select * from a inner join b on a_id = b_id;

2、左連線 left join...on...  on後接連線條件

符合條件,查詢以左表為主和右表