一步一步學MySQL----8 簡單資料查詢
8.1 查詢所有欄位資料
現有資料表student,如下:
mysql> create table student(
-> s_id int primary key,
-> s_name varchar(20),
-> s_sex char(2),
-> s_age int
-> );
Query OK, 0 rows affected (0.08 sec)
現在要查詢該表中所有欄位的資料資訊,有如下兩種方法:
方法1:全欄位輸入
mysql> select s_id, s_name, s_sex
, s_age from student; //說明:包含了student表的全部欄位
方法2:“*”的使用
mysql> select * from student;
8.2 查詢指定欄位資料
說明:只要在select後面輸入要查詢的欄位即可。、
例如我們只需要瞭解學生的姓名和年齡,那麼,就可以如下:
mysql> select s_name, s_age from student; //說明:只查詢學生姓名和年齡
8.3 避免重複資料查詢
語法:
select distinct field1, field2, field3, …… from table_name;
例如:現有一張student表,如下:
mysql> select * from student;
現在,我們給這張表增加一個score(分數)欄位,如下:
mysql> alter table student add score int;
Query OK, 5 rows affected (0.43 sec)
Records: 5 Duplicates: 0 Warnings: 0
接下來為每個學生修改各自的分數,如下:
mysql> update student set score=88 where s_name=’LiQiang’;
Query OK, 1 row affected (0.11 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update student set score=90 where s_name=’GaoQing’;
Query OK, 1 row affected (0.15 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update student set score=89 where s_name=’liuZhuang’;
Query OK, 1 row affected (0.07 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update student set score=95 where s_name=’WangMeng’;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> update student set score=90 where s_name=’WuHao’;
Query OK, 1 row affected (0.10 sec)
Rows matched: 1 Changed: 1 Warnings: 0
這樣,我們看到學生GaoQing和WuHao的分數是一樣的,都是90分,此時,我們來查詢一下表中學生的分數
mysql> select score from student; //查詢分數
mysql> select distinct score from student;//去重查詢分數
8.4 實現數學四則運算資料查詢
MySQL支援+、-、*、/、%關係運算符
語法:
Select field1 [as] otherfield1, field2 [as] otherfield2, …… fieldn [as] otherfieldn from table_name;
例如:建立一個數據庫company,在其中新建一張資料表employee,如下:
(1)建立資料庫
mysql> create database company;
(2)選擇資料庫company
mysql> use company;
(3)新建資料表employee
mysql> create table employee(
-> empno int(11),
-> ename varchar(20),
-> job varchar(60),
-> Hiredate date,
-> salary double(10,2),
-> depno int(11)
Query OK, 0 rows affected (0.16 sec)
(4)向employee表中插入資料
mysql> insert into employee(empno, ename, job, Hiredate, salary, depno) values(1001, ‘Smith’, ‘Clerk’, ‘2012-09-20’, 3500.00, 12);
Query OK, 1 row affected (0.12 sec)
mysql> insert into employee(empno, ename, job, Hiredate, salary, depno) values(1002, ‘Allen’, ‘Salesman’, ‘2012-12-06’, 3000.00, 14);
Query OK, 1 row affected (0.16 sec)
mysql> insert into employee(empno, ename, job, Hiredate, salary, depno) values(1003, ‘Mard’, ‘Salesman’, ‘2013-01-15’, 2800.00, 14);
Query OK, 1 row affected (0.06 sec)
mysql> insert into employee(empno, ename, job, Hiredate, salary, depno) values(1004, ‘Jones’, ‘Manager’, ‘2012-05-08’, 7500.00, 10);
Query OK, 1 row affected (0.05 sec)
mysql> insert into employee(empno, ename, job, Hiredate, salary, depno) values(1005, ‘Scott’, ‘HR’, ‘2012-03-28’, 1800.00, 12);
Query OK, 1 row affected (0.17 sec)
mysql> insert into employee(empno, ename, job, Hiredate, salary, depno) values(1006, ‘James’, ‘Product’, ‘2014-10-12’, 4000.00, 12);
Query OK, 1 row affected (0.06 sec)
mysql> insert into employee(empno, ename, job, Hiredate, salary, depno) values(1007, ‘King’, ‘Developer’, ‘2013-06-10’, 4500.00, 12);
Query OK, 1 row affected (0.09 sec)
mysql> insert into employee(empno, ename, job, Hiredate, salary, depno) values(1008, ‘Ford’, ‘Developer’, ‘2014-08-04’, 5000.00, 12);
Query OK, 1 row affected (0.08 sec)
(5)檢視employee表資料
mysql> select * from employee;
下面我們來實現一下四則運算:
我們從employee表中看到每個員工的月薪,如果我們要知道每個員工的年薪怎麼辦?如下:
mysql> select ename, salary*12 from employee;
通過這種查詢,執行結果一眼就可以看到每個員工的年薪了。
或者:
mysql> select ename, salary*12 as yearsalary from employee; //這種更加直觀
8.5 設定顯示格式資料查詢
在MySQL中執行簡單資料查詢時,有時需要設定顯示格式,以方便使用者瀏覽所查詢到的資料。
例如:在上一小節中,要查詢員工的年薪,以固定格式(ename員工的年薪為:salary)顯示查詢到的資料。
我們可以如下執行:
mysql> select concat(ename, ‘員工的年薪為:’, salary*12)yearsalary from employee;