資料庫基礎篇之MySQL(一)
--開啟資料庫
mysql -u 使用者名稱 -p
password:使用者名稱密碼
--建立資料庫並設定編碼格式
create database 庫名 charset 編碼格式
--檢視資料庫
show databases;
--開啟資料庫
use 資料庫的名字;
--開啟資料庫後,顯示庫中的資料表
show tables;
--在開啟的資料庫中建立資料表
--欄位名 欄位型別 約束(可加可不加)
create table teacher(
id integer primary key auto_increment, --主鍵/自增長
name varchar(10) not null, --非空
gender integer not null, --非空
courseid integer default 0, --預設為0
isMaster integer default 0 --預設為0
);
--查詢表的欄位資訊
desc teacher;
--清空資料表
truncate table 表名稱
--新增表字段
alter table teacher add sex bool not null;
--修改表字段
alter table 表名稱 change 欄位名稱 欄位名稱 欄位型別 約束; --修改全部
alter table 表名稱 modify 欄位名稱 欄位型別 約束; --修改欄位名以外部分
--刪除表中某一欄位
alter table 表名稱 drop 欄位名;
--基本的增刪改查:
--在建立好的資料表中插入資料(增)
insert into teacher(name,gender) values("張三",1);
--刪除資料表中不要的資料(刪)
delete from teacher where name="張三";
--修改資料表中的資料(改)
update teacher set name ="李四" where name ="張三”;
--查詢資料表中的資料(查)
select * from teacher where name="張三"; --精確查詢
select * from teacher where name like"張%"; --模糊查詢
--詳細的資料庫查詢語法:
--完整語法
select [select選項] 欄位列表[欄位別名]或* from 資料來源 [where 字句] [group by 字句] [having 字句] [order by 字句] [limit 字句];
--1)[select選項]
select選項包含:all --所有,預設
distinct --去重,針對的是查詢結果的整條記錄而言
select distinct sex,courseid from teacher;
--2)[where字句]
where是唯一一個從磁碟開始拿資料就開始進行判斷的條件,
從磁碟讀取出一條記錄,開始進行where判斷,判斷結果如果成立,
那麼取出結果儲存到記憶體,否則放棄。
select * from teacher where name="張三";
--3)[group by字句]
group by字句主要的作用是分組,從而進行統計操作,而不是為了展示(
展示的時候,只會展示分組記錄的第一條記錄),分組時,一般會結合使用:
count()、max()、min()、avg()、sum()函式
--A:欄位分組
select c_id,count(*),max(height),min(height),avg(height),avg(age) from my_student group by c_id;
sql語句的意思是:my_student表以c_id進行分組,然後顯示分組後的每組的c_id名稱,每組的總數,每組的最高,
最低,平均身高和每組的平均年齡。沒有寫排序規則時預設為升序。
--B:多欄位分組
select c_id,sex,count(*),max(height),min(height),avg(height),sum(age) from my_student group by c_id,sex;
sql語句的意思是:對整個表先按照c_id進行分組,然後在此分組的基礎之上,每組再按照sex進行分組。
--C:多欄位分組(加上顯示每組的某一欄位的所有資料)
select c_id,sex,count(*),max(height),min(height),avg(height),sum(age),GROUP_CONCAT(name) from my_student group by c_id,sex;
sql語句的意思是:GROUP_CONCAT(name),顯示每組name欄位的所有資料
--4)[having 字句]
having的作用類似where,而且having能做幾乎所有where能做的事情,而where卻不能做having能做的
很多事情,主要是因為where只能在磁碟提取資料的時候對資料進行操作;而在記憶體中對資料進行group by
分組之後的結果進行處理,只能通過having
select c_id,count(*),max(height),min(height),avg(height),sum(age) from my_student group by c_id having COUNT(*)>=3;
--5)[order by字句]
對資料進行排序操作,根據某個欄位進行升序或者降序排序.(進行多欄位排序的時候,先根據某一欄位進行排序,
然後在排序好的內部再按照某欄位進行排序)
--A:單個欄位排序
select * from my_student order by c_id;
sql語句的意思是:根據c_id進行排序查詢,預設為升序
--B:多欄位排序
select * from my_student order by c_id,sex;
sql語句的意思是:根據c_id升序排序後(預設的排序方式),再根據sex進行排序
--C:
升序:asc 降序:desc
select * from my_student order by c_id asc;--升序可以不寫
select * from my_student order by c_id desc;
--6)[limit 字句]
限制結果的數量,limit偏移量記錄條數
--A:
select * from my_student limit 2;
sql語句的意思是:查詢後取前兩個
--B:
select * from my_student limit 0,3;
sql語句的意思是:0表示下標,3表示長度