1. 程式人生 > >資料庫常用基本操作

資料庫常用基本操作

啟動資料庫 sudo service mysql start 停止資料庫 sudo service mysql stop 重啟資料庫 sudo service mysql restart 檢視所有資料庫 show databases; 建立一個數據庫 create database 資料庫名 charset=utf8; 檢視資料庫的建立語句 show create database 資料名; 使用資料庫 use 資料庫名; 檢視資料庫版本 select version(); 檢視當前時間 select now(); 檢視當前使用資料庫名稱 select database(); 刪除資料庫 drop database *;全部刪除
drop database 資料庫名;刪除指定資料庫 資料庫表資料型別
  • 整數 int、bit
  • 小數 decimal 表示浮點數,如decimal(5,2)表示共存5位,小數佔2位
  • 字串 char、varchar
  • 日期時間 date(年月日)time(時間)datetime(年月日時間)
  • 列舉型別 enum 
  • 主鍵primary key:物理上儲存順序
  • 非空not null:此欄位不允許寫空值
  • 預設default:預設值
  • 自增auto_increment
建立表結構 create table students(id int unsigned auto_increment primary key not null,
    name varchar(10) not null,age int not null,high decimal(5,2),gender enum(’男’,’女’)); 修改欄位-新增欄位birthday date alter table students add birthday date; 修改欄位-修改欄位屬性,不重新命名birthday datetime not null alter table students modify birthday datetime not null; 修改欄位-修改欄位名稱,重新命名birth date not null alter table students change birthday birth date not null;
修改欄位-刪除欄位drop alter table students drop birthday; 刪除表 drop table 表名; 查看錶的建立語句 show create table 表名; 查看錶欄位 desc 表名; 資料的增刪改查 增加
  1. insert into 表名 values(值1,值2...);注:有幾列values中就有幾個值
  2. insert into 表名(列1,列2...) values(值1,值2...);
  3. insert into 表名 values(值1,值2...),(值1,值2...),(值1,值2...),…;
查詢所有欄位 select * from 表名; 查詢指定欄位 select 列1,列2 from 表名; 使用as給欄位重新命名 select 欄位名 as 重新命名 from 表名; 消除重複行 select distinct 列1,... from 表名; 條件查詢 select * from 表名 where 條件;
  • where後面支援多種運算子,進行條件的處理:1、比較運算子2、邏輯運算子3、模糊查詢4、範圍查詢5、空判斷
比較運算子 大於>、小於<、等於=、大於等於>=、小於等於<=、不等於!=或<> 查詢id大於3的所有學生 select * from students where id<3; 查詢編號不大於4的學生 select * from students where id<=4; 查詢姓名不是”黃蓉“的學生 select * from students where name!=“黃蓉”; 查詢沒有被刪除的學生 select * from students where is_delete=0; 邏輯運算子 and、or、not 查詢編號大於3的女同學 select * from students where id>3 and gender=0; 查詢編號小於4或沒有被刪除的同學 select * from students where id<4 or is_delete=0; 模糊查詢 like、%表示任意多個字元、_表示一個任意字元 查詢姓黃的學生 select * from students where name like “黃%”; 查詢姓黃且名只有一個字的學生 select * from students where name like “黃_”; 查詢姓黃或者叫靖的學生 select * from students where name like “黃%” or name like “%靖”; 範圍查詢 in表示在一個非連續的範圍內、between...and...表示在一個連續的範圍內 查詢編號1、3或者8的學生 select * from students where id in(1,3,8); 查詢編號3至8的學生 select * from students where id between 3 and 8; 查詢編號3至8的男生 select * from students where (id between 3 and 8) and gender=1; 空判斷 注意null和’’是不同的 判空is null 查詢沒有填寫身高的學生 select * from students where height is null; 判非空is not null 查詢寫了身高的學生 select * from students where height is not null; 查詢填寫了身高的男生 select * from students where height is not null and gender=1; 修改資料 update 表名 set 列1=值1,列2=值2,...; 刪除資料 delete from 表名 where 條件; 排序 asc升序/desc降序(不寫預設是asc) select * from 表名 order by 列1 asc|desc,列2 asc|desc …; 聚合函式 count(*) 表示總行數,括號中寫*與列名結果是相同的 max(列) 表示求此列的最大值 min(列) 表示求此列的最小值 sum(列) 表示求此列的和 avg(列) 表示求此列的平均值 group by 分組 將查詢結果按照1個或多個欄位進行分組,欄位相同的為一組 可用於單個欄位分組,也可用於多個欄位分組,注意與distinct的區別,後者只能做去重 group by + group_concat() group_concat(欄位名)可以作為一個輸出欄位使用,表示分組以後,根據分組結果,使用group_concat()來放置每一組的某個欄位的集合 group by + 集合函式 通過集合函式對這某一組欄位的集合進行操作 group by + having 用來指定一些條件來輸出查詢結果,having作用和where一樣,但having只能用於group by group by + with rollup 在最後新增一行,用來記錄當前列裡所有記錄的和 獲取部分行 select * from 表名 limit start,count; 連線查詢 select * from 表1 inner/left/right join 表2 on 表1.列=表2.列; 完整的select語句 select * from 表名 where … group by … having …  order by … limit start,count;