操作数据表中的记录
insert:插入記錄
INSERT [INTO] table_name [(column_name,...)] {VALUES/VALUE} ({expr/DEFAULT},...),(...),...;
/**
insert+表名+set +(字段=‘’,字段=‘’)
root@127.0.0.1 t2>CREATE TABLE user(-> id SMALLINT UNSIGNED PRIMARY KEY NOT NULL); Query OK, 0 rows affected (0.21 sec)root@127.0.0.1 t2>INSERT user VALUES(1); Query OK, 1 row affected (0.26 sec)root@127.0.0.1 t2>SELECT * FROM user; +----+ | id | +----+ | 1 | +----+ 1 row in set (0.00 sec)我們在插入數據的時候我們也可以插入表達式和函數值:
root@127.0.0.1 t2>INSERT user VALUES(3+5); Query OK, 1 row affected (0.16 sec)root@127.0.0.1 t2>SELECT * FROM user; +----+ | id | +----+ | 1 | | 8 | +----+ 2 rows in set (0.00 sec)我們在插入數據的時候如果我們遇到了auto_increment我們可以輸入null來使它自動的輸入增加一個值,我們也可以輸入一個default來出現相同的功能,default除了這些功能之外,還有可以還原我們自愛create的時候輸入的default值。
root@127.0.0.1 t2>CREATE TABLE user3(-> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,-> age TINYINT UNSIGNED DEFAULT 10); Query OK, 0 rows affected (0.19 sec)root@127.0.0.1 t2>INSERT user3 VALUES(DEFAULT,1); Query OK, 1 row affected (0.16 sec)root@127.0.0.1 t2>SELECT * FROM user3; +----+------+ | id | age | +----+------+ | 1 | 1 | +----+------+ 1 row in set (0.00 sec)root@127.0.0.1 t2>INSERT user3 VALUES(NULL,DEFAULT); Query OK, 1 row affected (0.13 sec)root@127.0.0.1 t2>SELECT * FROM user3; +----+------+ | id | age | +----+------+ | 1 | 1 | | 2 | 10 | +----+------+ 2 rows in set (0.00 sec)我們在給數據進行賦值的時候我們可以進行多重的賦值來展現我們提高我們的賦值效率。
root@127.0.0.1 t2>INSERT user3 VALUES(NULL,DEFAULT),(NULL,5); Query OK, 2 rows affected (0.14 sec) Records: 2 Duplicates: 0 Warnings: 0root@127.0.0.1 t2>SELECT * FROM user3; +----+------+ | id | age | +----+------+ | 1 | 1 | | 2 | 10 | | 3 | 10 | | 4 | 5 | +----+------+ 4 rows in set (0.00 sec)?
————————————————————————————————————————————————
插入記錄INSSERT SET—SELECT:
插入記錄insert insert-set insert-select
第一種:
insert tb_name [column_name]values(...)[,(...),(....)];--比較常用,可以一次性插入多條記錄,并且可以輸入表達式甚至是函數,但是無法進行子查詢。
第二種:
insert tb_name set column_name={exprdefault};--可以進行子查詢,但是只能插入一條記錄。
第三種:
insert table_name [(colname...)] select語句.....--這種方法就是把查詢到的一個表結果插入到另一個指定數據表中。
——————————————————————————————————————————————————————
單表更新UPDATE:
更新記錄:
update+表名+set 字段變化;(更新全部)
update+表名+set 字段變化 where ....;(更新某個條件下的)
——————————————————————————————————————————————————
單表刪除記錄DELETE:
刪除記錄:
delete from +表名 where +條件
注意事項:當我們刪除原來的id之后,再次添加新的id,那么新的id號碼一定是現有的最大id號加1,而不管原來的id序列是否連續不連續!
root@127.0.0.1 t2>DELETE FROM user3 WHERE id = 5; Query OK, 1 row affected (0.15 sec)root@127.0.0.1 t2>SELECT * FROM user3; +----+------+ | id | age | +----+------+ | 1 | 6 | | 2 | 20 | | 3 | 15 | | 4 | 15 | +----+------+ 4 rows in set (0.00 sec)————————————————————————————————————
查詢表達方式解析:
查詢表達式解析select 語法: SELECT select_expr [,select expr2...] 只查找某一個函數或表達式 [ FROM table_references 查詢表名 [WHERE where_conditon] 查詢條件 [GROUP BY {col_nameposition} [ASCDESC],...] 按某個字段進行分組,相同的只顯示第一個 [HAVING conditon] 分組時,給出顯示條件 [ORDER BY {col_nameexprposition} [ASCDESC],...] 排序 [LIMIT {[offset,]row_countrow_count OFFSET offset}] 限制返回數量 } ps:select * from user group by username having age>18 order by id asc limit 3; 限制返回數量的limit一定要放在最后 查詢表達式:每個表達式表示想要的一列,必須至少有一個多個列之間以英文逗號相隔.星號(*)表示所有的列。tbl_name.*可以表示命名表多的所有的列。查詢表達式可以使用【AS】alias_name為其賦予別名。別名可用于GROUP BY, ORDRE BY或者HAVING子句。我們可以進行單列的查找:
root@127.0.0.1 t2>SELECT id FROM user3; +----+ | id | +----+ | 1 | | 2 | | 3 | | 4 | +----+ 4 rows in set (0.00 sec)我們在查找的時候我們的表達式的順序會影響我們查找時顯示的表達式的順序。
root@127.0.0.1 t2>SELECT age,id FROM user3; +------+----+ | age | id | +------+----+ | 6 | 1 | | 20 | 2 | | 15 | 3 | | 15 | 4 | +------+----+ 4 rows in set (0.00 sec)在我們將來使用多表鏈接的時候哦我們需要使用更嚴謹的寫法:
root@127.0.0.1 t2>SELECT user3.age,user3.id FROM user3; +------+----+ | age | id | +------+----+ | 6 | 1 | | 20 | 2 | | 15 | 3 | | 15 | 4 | +------+----+ 4 rows in set (0.00 sec)我們在使用數據表的時候我們可以給數據表的數據行進行別名的命名:
root@127.0.0.1 t2>SELECT id AS ID; ERROR 1054 (42S22): Unknown column 'id' in 'field list' root@127.0.0.1 t2>SELECT id AS ID from user3; +----+ | ID | +----+ | 1 | | 2 | | 3 | | 4 | +----+ 4 rows in set (0.00 sec)我們在使用命名的時候我們可以不適用as但是這樣會出現錯誤:
root@127.0.0.1 t2>SELECT ID age FROM user3; +-----+ | age | +-----+ | 1 | | 2 | | 3 | | 4 | +-----+ 4 rows in set (0.00 sec)在這里面我們就將這個age當成了id的別名了。
——————————————————————————————————————
where語句進條件的查詢:
WHERE
條件表達式
對記錄進行過濾,如果沒指定WHERE字句,則顯示所有記錄
在WHERE表達式中,可以使用mysql支持的函數貨運算符
——————————————————————————————————————————————
group by語句對查詢的結果進行分組:
GROUP BY語句對查詢結果分組 查詢結果分組,(多個分組用“,”隔開); [group by{col_name/posittion}[ASC/DESC]....] ASC是默認的表示升序 EDSC是默認的表示降序。 root@127.0.0.1 t2>SELECT age FROM user3 GROUP BY age; +------+ | age | +------+ | 6 | | 15 | | 20 | +------+ 3 rows in set (0.11 sec) //我們在這里我們對age進行分組——————————————————————————————————
having語句設置分組條件:
分組條件:利用GROUP BY分組,添加分組條件 [HAVING where_condition] (要么為一個聚合函數【SUM();MAX();etc...】,要么出現在 SELECT 條件中,聚合函數永遠只有一個返回結果) [HAVING when where_condition] root@127.0.0.1 t2>SELECT age,id FROM user3 GROUP BY 1 HAVING age > 6; +------+----+ | age | id | +------+----+ | 15 | 3 | | 20 | 2 | +------+----+ 2 rows in set (0.00 sec) ———————————————————————————— root@127.0.0.1 t2>SELECT age,id FROM user3 GROUP BY 1 HAVING count(id)>= 2; +------+----+ | age | id | +------+----+ | 15 | 3 | +------+----+ 1 row in set (0.11 sec)————————————————————————————————————
order by對分組結果進行排序:
?
order by語句對查詢結果排序1、對查詢結果進行排序:[ORDER BY {col_name expr position } [ASCDESC],...] root@127.0.0.1 t2>SELECT * FROM user3 ORDER BY id DESC; +----+------+ | id | age | +----+------+ | 4 | 15 | | 3 | 15 | | 2 | 20 | | 1 | 6 | +----+------+ 4 rows in set (0.00 sec) 2、可以同時按多條字段進行排序,規則是先按前面的字段排,在基礎上再按后面字段排。 3、如:SELECT * FROM users ORDER BY age,id DESC; 先按照age排序,如果age有重復的,重復的字段里按id排序。——————————————————————————————————————————————————————
limit語句限制查詢的數量:
限制查詢結果返回的數量
select *from +表名 + limit N;返回查詢結果前 N 條記錄;
select *from +表名 + limit N,M;返回查詢結果:從n開始的m條記錄(注意n 從0開始數數)
insert和select的結合
root@127.0.0.1 t2>CREATE TABLE test(-> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,-> age TINYINT UNSIGNED); Query OK, 0 rows affected (0.09 sec) root@127.0.0.1 t2>INSERT test(age) SELECT age FROM user3; Query OK, 4 rows affected (0.13 sec) Records: 4 Duplicates: 0 Warnings: 0 root@127.0.0.1 t2>SELECT * FROM test; +----+------+ | id | age | +----+------+ | 1 | 6 | | 2 | 20 | | 3 | 15 | | 4 | 15 | +----+------+ 4 rows in set (0.00 sec)?
轉載于:https://www.cnblogs.com/chang1203/p/5892602.html
總結
- 上一篇: ios几个重要方法
- 下一篇: 地理信息系统(汤国安)重点整理和推导(第