sql操作資料庫(1)–>DDL、DML、DQL
- 2021 年 1 月 4 日
- 筆記
SQL 操作資料庫
概念:結構化查詢語言 Structured Quary Language
作用:
1.是一種資料庫的查詢的標準,對所有的資料庫都支援
2.不同的資料庫SQL語句可能有點不同 (方言),mysql oracle DB2
sql語句分類
1.DDL:操作資料庫、表 數據定義語言 Data Definition Language
2.DML:增刪改表中的記錄 數據操作語言 Data Manipulation Language
3.DQL: 查詢表中的記錄 數據查詢語言 Data Query language
4.DCL:管理用戶與授權 數據控制語言 Data Control language
DDL 語言
1.操作資料庫 CRUD操作
1.創建資料庫 方式有很多種: C —create
-
create database 資料庫名;
-
create database if not exists 資料庫名;// 創建的時候先判斷資料庫是否存在
-
create database 資料庫名 character set 編碼字符集;// 創建資料庫的指定編碼字符集
-- 分號 一般是sql語句的結束標誌
create DATABASE java31;
-- 創建資料庫的第二種方式 create database if not exists 資料庫名;
create database if not EXISTS apartment;
-- 創建資料庫的第三種方式 create database 資料庫名 character set 編碼字符集;
create database school character set utf8;
-- 三者組合到一起表達
create database if not EXISTS college character set utf8;
2. 查詢 r —>retrieve
-
查詢當前資料庫伺服器的所有的資料庫
show databases; -
查詢某個資料庫的編碼字符集:查詢某個創建的資料庫的編碼字符集
show create database 資料庫名稱;
3.修改 u–>update
- 修改資料庫的編碼字符集
alter database 資料庫名稱 character set 編碼字符集;
-- alter database 資料庫名稱 character set 編碼字符集;
alter database college character set gbk;
4. 刪除 d –>delete drop
-
刪除資料庫
drop database 資料庫名稱; -
判斷資料庫是否存在,如果存在刪除掉
drop database if exists 資料庫名稱;
-- drop database if exists 資料庫名稱;
drop database if EXISTS school;
- 操作表
1. 創建表 C –> create
-
語法:
create table 表名(
列名1 數據類型,
列名2 數據類型,
。。。。。。。
);
-
數據類型
-
整數類型 tinyint(微整形) 8位 smallint(小整形)16位 mediumint(中整形)24位 int(integer) 整形32位
-
小數類型 double 8個位元組 float 4個位元組
-
日期類型 date (年月日) time (時分秒) datetime (年月日時分秒) timestamp 時間戳 年月日時分秒
-
時間戳,如果該欄位為時間戳類型,沒有賦值或者該欄位值為null,則默認使用系統當前的時間自動賦值。一般情況一張表中只能有一個欄位使用時間戳數據類型。
- 字元串類型 char(固定長度的字元串) varchar(可變長度的字元串) 使用幾個字元就占幾個
- 二進位類型 tinyblob(允許0~255個位元組) big large blob(允許0~65535個位元組) longblob(非常大)
- 文本類型 tinytext (允許長度為0~255個位元組) text(允許0~65535個位元組) longtext(非常大)
2. 查看錶 查詢 retrieve
-
show tables 查看當前使用的資料庫下面的所有的表
-
desc 表名; 描述該表的結構
-
查看創建的表 show create table 表名;—->查看該表創建使用到的sql語句
-
快速創建一個表結構相同的表 create table 新表名 like 舊錶名;
3. 修改 update
-
修改表名 alter
alter table 舊錶名 rename to 新表名; -
修改表的字符集
alter table 表名 character set 編碼字符集; -
添加一列欄位 add
alter table 表名 add 列名 數據類型; -
刪除一列 drop
alter table 表名 drop 列名; -
修改列名 數據類型
- change alter table 表名 change 舊列名 新列名 新數據類型;
- modify alter table 表名 modify 列名 新數據類型;
4. 刪除 delete
-
刪除表 drop table 表名;
-
刪除判斷表是否存在 drop table if exists 表名;
大多數情況下我們是直接藉助於圖形化管理工具 Navicat直接操作。
DML 增刪改資料庫中的表的數據
-
添加數據:
-
語法:
-
insert into 表名(列名1,列名2,……列名n) values(值1,值2,……值n);
-
注意事項:
-
列名和後面值的類型要保持一致。
-
如果表名後面沒有指定列名,默認為給該表中的所有的列添加對應的值。注意依然是有順序的。
insert into 表名 values(值1,值2,……值n);
-
除了數字類型外(int,double),其他類型一律要使用引號(單引號和雙引號都可以)引起來。
-
-
-
-
刪除數據:
-
語法: delete
delete from 表名 [where 條件];
-
注意事項:
-
如果後面不跟條件 ,則刪除整張表的數據
-
刪除表的所有的記錄 delete from student / truncate table 表名;(底層是先把表刪除掉,然後再創建一張一模一樣的表)
-
如果條件中的欄位值有重複的,凡是符合條件的都刪除。
-
-
-
修改數據:update
-
語法:
update 表名 set 列名1 = 替換值1, 列名2 =替換值2,…..列名n = 替換值n [where 條件];
-
注意:
- 如果不帶條件,則會修改表中的所有記錄
-
DQL 查詢表中的記錄 select …. from …..
-
語法
select 需要查詢的資訊(列名1,列名2,…….列名n) / * from 表名 [where 條件];
完善下:
select
欄位列表 from
表名列表 where
條件列表 group by
分組欄位having 分組之後的條件
limit
分頁限定 -
去重查詢 distinct
-
使用關鍵字 distinct 去掉重複的記錄
-
語法格式: select distinct 欄位名 from 表名;
例如:
-- 查詢本班同學都來自於哪些地方法? select distinct address from student;
-
-
查詢的結果值可以參與數學運算
-
ifnull表達式 ifnull(表達式1,表達式2)
表達式1: 代表那個欄位需要判斷是否為null
表達式2:如果該欄位值為null 後面的進行替換
-
起別名操作
語法 as 也可以省略不寫
表名 as 新的名字 查詢出來的欄位資訊 as 新名字
當你查詢同一張表,並且進行多次查詢的時候可以使用起別名來實現
-
對指定列進行別名操作: select 列名1 as 新名字,列名2 as 新名字,….. from 表名;
-
對錶和列同時進行別名操作: select 列名1 as 新名字,列名2 as 新名字,….. from 表名 as 新表名;
如:對學生表進行操作:查詢學生表的姓名和年齡;
select s.age as 年齡, s.name as 姓名 from student as s; -- as關鍵字可以省略不寫。
注意:
起別名 只是在sql語句中方便查詢使用的,並不會對數據原來的文件起到任何影響
-