本篇文章給大家帶來的內容是關于mysql基本語句操作的總結,有一定的參考價值,有需要的朋友可以參考一下,希望對你有所幫助。? ?
數據庫操作語句
(推薦課程:MySQL教程)
-
創建
create database 數據庫名 -
查看所有數據庫
show databases。 -
查看指定數據庫建表語句及字符集
show create database ?數據庫名 -
刪除數據庫
drop database 數據庫名 -
修改數據庫字符集-了解
alter database 數據庫名 character set ‘字符集’ -
切換數據庫
use 數據庫名 -
查看當前數據庫名稱
select database();
數據表結構的增刪改查
有了數據庫之后,想保存數據,必須在數據庫中先有數據表。
-
創建數據表:
use 數據庫名 -
查看表:
show tables;查看該數據庫的所有表
desc 表名;查看表的列的信息(表結構) -
單表創建時約束
為了防止重名,保障存儲在數據表中的數據完整和有效性。
約束常用語法:列名 數據類型 約束條件
一張表中只能有一個主鍵:id int ?primary key auto_increment -
數據表結構刪除:可以對表名、列名、類的類型、類的約束條件進行增刪改。
增加列:alter table 表名 ? ? ?增/刪/改 ? ? ? ?列名 類型(長度) 約束;
修改列類型、長度和約束:alter table 表名 modify 列名 類型(長度) 約束;
修改現有列名稱:alter table 表名 change 舊列名 新列名 類型(長度) 約束;
修改現有列:alter table 表名 drop 列名 ;
修改表名:rename table 舊表名 to 新表名;
修改表的字符集:alter table 表名 character set 編碼集;
數據表刪除:drop table 表名; -
數據表小結
數據表創建(重要)
create table 表名(
列名 數據類型 約束 ,
列名 數據類型 約束 約束,
………
);
查看表
show tables:查看所有的表
show create table 表名: 查看建表語句以及字符集
desc 表名:查看表結構。
修改表的語句(了解)
alter table 表名(add|modify|drop|change) 列名 類型(長度) 約束。
rename table 舊表名 to 新表名
刪除表
drop table 表名
簡單數據表內容的增刪改查(很重要)
-
insert語句——數據記錄的增加
CRUD:create、read/retrieve、update、delete
在Java代碼中對數據庫操作最頻繁的就是對表中數據的CRUD操作。
數據的存儲位置:表。
方式一:全寫
語法:insert into 表名 (列名,列名,列名…) ?values (值,值,值…);
注意:
1、值與列一一對應。有多少個列,就需要寫多少個值。如果某一個列沒有值。可以使用null。表示插入空。2、值的數據類型,與列被定義的數據類型要相匹配。并且值的長度不能夠超過定義的列的長度。3、字符串:插入字符類型的數據,必須寫單引號。在mysql中,使用單引號表示字符串。4、date 時間類型的數據也可以直接使用單引號表示: ‘yyyyMMdd’ ,’yyyy-MM-dd’,’yyyy/MM/dd’ 。5、在插入數據的時候, 如果某些列可以為null, 或者是自動增長的列, 或者有默認值的, 在插入的時候可以省略. 或者編寫null, 實現自動增長.6、如果給表中的所有列插入數據, 這時可以省略表后面的列名, 直接寫values.
使用select*from 表名——查看該表所有信息。
方式二:省略部分列
某一列有默認值,或者允許空,才可以省略。
主鍵是自增長的認為是有默認值的,也可以省略。
方式三:省略所有列
語法:insert into 表名 values(值,值,值);
-
update語句——修改表記錄
語法:update 表名 set 列名=值,列名=值…[where 條件語句];
中括號不是語法內容,在這里表示這個條件語句可加可不加。
注意事項:
1、如果不加條件,將會修改某一列的所有值。
2、一般修改數據時,都需要增加條件。
多個列使用逗號隔開。
eg:將所有人的年齡修改為20歲
update user set age=20;
eg:將姓名為張三的人年齡改為18歲
update user set age=18 where name=“張三”;
-
delete語句——刪除表中數據的語句
語法:delete from 表名 [where 條件語句]
如果沒有where,刪除表中所有數據
delete刪除的是行。 -
Truncate語句——刪除數據
語法:truncate table 表名;
先刪除表,再創建表,就相當于將數據全部刪除了。
就性能來講:truncate table 的性能更好。
數據記錄增刪改小結:
新增:
insert into 表名 values(值,值,值……)
insert into 表名(列名1,列名2,列名3….) values(值1,值2,值3……)
insert into 表名(列名2,列名4,列名5….) values(值2,值4,值5……)
修改:
update 表名 set 列名=值,列名=值 where 條件
刪除:
delete from 表名 where 條件
如果不加where 條件,就是刪除所有的數據。
刪除:清空數據
truncate table 表名
通過刪除整張表之后再重新創建一張表來達到清空數據的目的。
delete 和 truncate的區別是delete刪除的數據在事務管理的情況下還能恢復,而truncate則不能恢復。
SQL中的聚合/聚集函數
聚合函數:多個數據進行運算,運算出一個結果。
例如:求和、平均值、最大值、最小值。
SQL語言中定義了部分函數可以實現這些操作。count函數——統計記錄數(統計行數)
語法:select count() | count(列名) from 表名
select count() from 表名: 統計表中的行數。
sum求和函數
語法:select sum(列名) from 表名;
select sum(列名) from 表名 where 條件
avg函數——平均值
語法: select avg(列名) from 表名;
max/min 最大值/最小值
select max(列名),min(列名) from 表名
group by 分組查詢****
按照某一列或者某幾列。把相同的數據,進行合并輸出。
select … from … group by 列名;
說明:其實就是按列進行分類,然后可以對分類完的數據使用聚集函數進行運算。
注意事項:
1、聚合函數:分組之后進行計算;
2、通常 select的內容:a 被分組的列,b 聚合函數。
3、如果遇到這種情況 ? 按照 每種,每個。 類似的這些語句的時候,通常會使用分組。
4、如果使用group by 對數據進行分組之后還要過濾。這時一般不能使用where,因為where關鍵字的后面不能跟上面講解的這些函數。如果需要在過濾的條件中加上述的函數,只能使用having關鍵字。
5、where 后不能跟 聚合函數,having中可以跟 聚合函數。
group by 列名 having 條件
分組之后加過濾條件。
where 和 having 的區別。
1、having 通常與group by 分組結合使用。
2、having 可以書寫聚合函數 (聚集函數出現的位置: select 之后,group by … ?having 之后)where ?不可以。
也就是說Where后面的條件having后都可以有,having后跟的條件where后不一定能跟
3、where 是在分組之前進行過濾的。having 是在分組之后進行過濾的。
查詢時,如非必要,用where的效率更高,因為先將數據篩選之后再進行其他條件判斷。
說明 : select … from … where 條件1 … gropu by … having 條件2 ?order by
條件1 會先執行過濾
進行分組
條件2進行過濾
select語句的執行順序與查詢小結:
查詢關鍵字的出現順序是固定的
select …要顯示的內容… from …表名… where ?條件…. group by …分組的列 …having …分組后的條件… order by …排序
select …5… from …1… ?where …2… group by …3…having …4… order by …6.
select?product,sum(price)?as總價?from?orders where?price>10 group?by?product having?總價>30 order?by?總價?asc;
查詢的執行順序
-
from : 表名
-
where:條件過濾
(定義別名) -
group by : 分組
(聚合函數執行) -
having : 分組之后進行過濾。
-
select :執行完畢之后,查詢內容。
-
order by : 排序輸出顯示.