mysql筆記二之資料增刪改查
-- 資料增刪改查(curd)
1. -- 增加 insert
-- 全列插入 值和表的欄位的順序一一對應
-- insert [into] 表名 values(...)
-- [] 在sql語法中表示可有可無和
-- 和表的建立的欄位的順序 一一對應 一個都不能夠少
-- 主鍵欄位需要通過一些特殊的值來佔位(0, NULL, Default)
-- 列舉: 列舉值從1開始(1,2,3,4) 和原始值(男)
+--------+-------------------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+-------------------------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(10) | NO | | NULL | |
| age | tinyint(3) unsigned | YES | | 0 | |
| high | decimal(5,2) | YES | | 0.00 | |
| gender | enum('男','女','中性','保密') | YES | | NULL | |
| cls_id | int(10) unsigned | YES | | 0 | |
+--------+-------------------------------------+------+-----+---------+----------------+
insert into students values (0,"小喬",40,180,1,1);
insert into students values (NULL,"曹操",40,180,1,2);
insert into students values (NULL,"劉備",35,180,"男",2);
# 錯誤insert into students values (NULL,"張飛",35,180,"不知道",2);
# 錯誤insert into students values (NULL,"張飛",35,180, 6,2);
-- 指定列插入
-- insert into 表名(列1,...) values(值1,...)
-- values 也可以是 value
insert into students (name, gender, cls_id) values ("周瑜", 1, 1);
-- 多行插入 批量插入
-- insert into 表名(列1,...) values (值1,...),(值1,...),...
insert into students (name, gender, cls_id) values ("劉備", 1, 2), ("諸葛亮", 1, 2),("張飛", 1, 2);
2. -- 修改
-- where 可以不加 但是此時是全表更新
-- update 表名 set 列1=值1,列2=值2... where 條件
update students set gender = 1;
update students set gender = 1 where id = 4;
3. -- 刪除
python : if id == 4 sql 表示是否相等 通過一個 =
-- 物理刪除
-- DELETE FROM tbname [where 條件判斷]
delete from students; -- 整表刪除 mysql
delete from students where id = 4;
-- 邏輯刪除 給每一條資料新增一個標記, 標記是否被刪除 0 表示沒有被刪除 1 表示被刪除
1. 修改表結構 新增一個標記 欄位
alter table students add is_delete bit default 0;
2. 更新需要邏輯刪除的資料
4. -- 查詢基本使用
-- 查詢所有列
-- select * from 表名;
-- 查詢classes 表中所有的資料
select * from classes;
-- 指定欄位查詢
-- sql 中表示相等 使用 = 而不是 ==
-- 指定條件查詢
-- 查詢指定列
-- 欄位的順序
-- 可以使用as為列或表指定別名
-- 查詢
-- 查詢所有欄位
-- select * from 表名;
select * from students;
-- 源生的寫法
select students.* from students;
select python_test_1.students.* from students;
-- 如果一個sql語句中只有一個數據表的時候 此時表名可以省略,如果有多個數據表就不建議省略
-- 正在使用某一個數據庫 並且該資料庫中存在對應的資料表 就可以將資料庫名省略掉
-- 查詢指定欄位
-- select 列1,列2,... from 表名;
select name,age,gender from students;
select age,name,gender from students;
-- 使用 as 給欄位起別名
-- select 欄位 as 名字.... from 表名;
select name as 名字,age as 年齡,gender as 性別 from students;
select name as '名字',age as '年齡',gender as '性別' from students;
-- select 表名.欄位 .... from 表名;
select students.age,students.name,students.gender from students;
-- 在當前sql語句中students 叫做s
# 錯誤select students.age,students.name,students.gender from students as s;
-- 可以通過 as 給表起別名
-- select 別名.欄位 .... from 表名 as 別名;
select s.age,s.name,s.gender from students as s;
-- 消除重複行
-- distinct 欄位
-- 查詢班級學生的性別
select gender from students;
-- 查詢班級有多少種性別
select distinct gender from students;
-- id 和 gender 看做一個整體來去重
select distinct id,gender from students;