SQL語句的分類:
DDL: 數據定義語言
create / drop / alter
DML:數據操作語句
insert / delete /update / truncate
DQL: 數據查詢語言:
select / show
mysql基礎
1)mysql存儲結構: 數據庫 -> 表 -> 數據 sql語句
2)管理數據庫:
增加: create database 數據庫 default character utf8;
刪除: drop database 數據庫;
修改: alter database 數據庫 default character gbk;
查詢: show databases / show create database 數據庫;
修改數據庫的編碼 : alter database 數據庫名稱 character set utf8
查看數據庫的編碼 : show varchar like'character_set_database'
3) 管理表:
選擇數據庫:use 數據庫;
增加: create table 表(字段名1 字段類型,字段名2 字段類型......);
刪除: drop table 表;
修改:
添加字段: alter table 表 add [column] 字段名 字段類型;
刪除字段: alter table 表 drop [column] 字段名;
修改字段類型: alter table 表 modify 字段名 新的字段類型;
修改字段名稱 : alter table 表 change 舊字段名 新字段名 字段類型;
修改表名稱: alter table 表 rename [to] 新表名;
查詢:
show tables / desc student;
4) 管理數據:
增加: insert into 表(字段1,字段2,。。。) values(值1,值2.。。。。);
刪除: delete from 表 where 條件;
TRUNCATE TABLE 表名稱;(不可回滾)
修改: update 表 set 字段1=值1,字段2=值2...... where 條件;
查詢:
4.1)所有字段: select * from 表;
4.2)指定字段: select 字段1,字段2.... from 表;
4.3)指定別名: select 字段1 as 別名 from 表;
4.4 )合併列: select (字段1+字段2) from 表;
4.5)去重: select distinct 字段 from 表;
4.6)條件查詢:
a)邏輯條件 :and(與) or(或)
select * from 表 where 條件1 and/or 條件2
b)比較條件: > < >= <= = <> between and(在。。。之間)
select * from 表 where servlet>=90;
c)判空條件:
判斷null: is null / is not null
判斷空字符串: ='' / <>''
d)模糊條件: like
%: 替換任意個字符
_: 替換一個字符
4.7 )分頁查詢:limit 起始行,查詢行數
起始行從0開始
4.8) 排序: order by 字段 asc/desc
asc: 正序,順序
desc:反序,倒序
4.9) 分組查詢:group by 字段
4.10): 分組後篩選: having 條件
mysql加強
1)數據約束(表約束)
默認值: default 默認值
非空: not null
唯一: unique
主鍵: primary key (非空+唯一)
自增長: auto_increment
外鍵: foreign key 約束兩種表
例子:
ALTER TABLE food ADD CONSTRAINT fk_food_foodType_id FOREIGN KEY(foodType_id) REFERENCES foodType(id);
2)關聯查詢(多表查詢)
2.1 交叉連接(產生笛卡爾積:原因:連接條件不足夠) 表數量-1
2.2 內連接查詢: inner join
只有滿足連接條件的數據纔會顯示!!!
2.3 左【外】連接查詢:left [outer] join
左表的數據必須全部顯示,用左表去匹配右表的數據,如果右表有符號條件的數據則顯示符
合條件的數據;如果不符合條件,則顯示null。
2.4 右【外】連接查詢: right [outer] join
右表的數據必須全部顯示,用右表去匹配左表的數據,如果左表有符號條件的數據則顯示符
合條件的數據;如果不符合條件,則顯示null。
2.5 自連接查詢
3)存儲過程
-- 創建存儲過程語法
delimeter 結束符號
create procedure 名稱(IN/OUT/INOUT 參數名稱 參數類型)
begin
帶邏輯的sql語句
end 結束符號
--調用存儲過程
CALL 存儲過程名稱(實際參數);