SQL得最核心就是增刪改查
一個后端開發,在工作中,最常見的場景就是CRUD。
插入數據
insert into student values (1,'zhangsan');
指定列插入數據
??????? 同時多個列明之間使用逗號,來分割
insert into student (name) values ('zhaoliu');
?這個黑框是客戶端,通過SQL語句對服務器中的數據進行改變,服務器再返回效果。
為什么說select * 是一個非常危險的操作?
如果該表中的數據特別多,select * 一瞬間服務器訪問,瘋狂的訪問硬盤,導致一瞬間服務器,硬盤的帶寬和網卡的帶寬都吃滿了。如果服務器還在給其他
這一種訪問方式,其實查看的是臨時數據;同時臨時表中的數據和原始表中的數據,不一定完全一致。
SQL字段查詢的時候,可以對其進行起別名,列明、表明 都可起名別,使用as關鍵字,但是查詢到的結果也是臨時。
?按照列名升序排序
編程當中,= 為復制,但是在SQL語言中 表示比較相等。
MYSQL在查詢語句中,查詢的列名起別名后,在where子句當中不可使用,否則報錯。
?看似在MYSQL設計中,完全可以讓where子句,能夠識別出別名,但是現在mysql一直沒有支持。
站在sql的執行順序上,也能一定程度的解釋上述現象。
select語句執行順序:
??????? 1.遍歷到某個指定的行
??????? 2.帶入條件篩選
??????? 3.條件為true,被篩選成功之后,再計算select列明這里的表達式。
模糊查詢
select * from exam_result where name like '%孫%';
?空值查詢
??????? 如果直接查詢 xxx = NULL ,這種結果值為false,無法篩選出
??????? 我們使用? xxx? <=> NULL 或者 xxx is NULL 的方法來查詢結果
?limit限制顯示信息
這句代碼的意思,一次查詢最多顯示4條記錄。
select * from exam_result limit 4;
SQL中的delete刪除語句,是按照行數據來刪除的, 無法來按照列刪除
鍵值設置
?not null 不允許空值?
unique 唯一不允許存在兩行數據,在這個指定列上重復