Java数据库篇3——SQL
生活随笔
收集整理的這篇文章主要介紹了
Java数据库篇3——SQL
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Java數據庫篇3——SQL
結構化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數據庫 查詢和程序設計語言,用于存取數據以及查詢、更新和管理關系數據庫系統
1、SQL分類
| 數據定義語言 | 簡稱DDL(Data Definition Language),用來定義數據庫對象:數據庫,表,列 等 |
| 數據操作語言 | 簡稱DML(Data Manipulation Language),用來對數據庫中表的記錄進行更新 |
| 數據查詢語言 | 簡稱DQL(Data Query Language),用來查詢數據庫中表的記錄 |
| 數據控制語言 | 簡稱DCL(Date Control Language),用來定義數據庫的訪問權限和安全級別, 及創建用戶 |
2、Mysql數據類型
3、DDL(數據定義語言)
3.1、操作數據庫
查詢表
#查看所有表 Show tables; #查看指定表的內容 Desc 表名; #查看表的創建語句(字符集) Show create table 表名;創建表
Create table 表名(列名1 數據類型1,列名2 數據類型2,列名3 數據類型3 );復制表1
Create table 表名2 like 表名1;修改表
#修改表名 Alter table 原表名 rename to 新表名; #修改表的字符集 Alter table 表名 character set 字符集; #在表內添加一行 Alter table 表名 add 列名 數據類型; #修改列名 Alter table 表名 change 原列名 新列名 數據類型(可修改); #修改列的數據類型 Alter table 表名 modify 列名 新數據類型; #刪除列 Alter table 表名 drop 列名;刪除表
Drop table 表名; #存在此表才刪除 Drop table if exists 表名;3.2、DDL操作表
查詢表
#查看所有表 Show tables; #查看指定表的內容 Desc 表名; #查看表的創建語句(字符集) Show create table 表名;創建表
創建表 Create table 表名(列名1 數據類型1,列名2 數據類型2,列名3 數據類型3 );復制表1
Create table 表名2 like 表名1;修改表
#修改表名 Alter table 原表名 rename to 新表名; #修改表的字符集 Alter table 表名 character set 字符集; #在表內添加一行 Alter table 表名 add 列名 數據類型; #修改列名 Alter table 表名 change 原列名 新列名 數據類型(可修改); #修改列的數據類型 Alter table 表名 modify 列名 新數據類型; #刪除列 Alter table 表名 drop 列名;刪除表
Drop table 表名; #存在此表才刪除 Drop table if exists 表名;4、DML(數據操作語言)
4.1、添加數據
#添加單個數據 Insert into 表名 (列1,列2……列n) values (值1,值2……值n); #添加多個數據 Insert into 表名 (列1,列2……列n) values (值1,值2……值n), (值1,值2……值n), (值1,值2……值n);- 添加表中所有列數據的時候,可以省略列這個括號
- 列和值要一一對應
- Null可以作為占位符使用
- 值除了數字類型和null,其他類型都要用引號引起來
4.2、修改數據
Update表名 set 列=值,列=值 where 條件語句;- 值除了數字類型和null,其他類型都要用引號引起來
- 不加條件就修改所有的記錄
4.3、刪除數據
Delete from 表名 where 條件語句;-
不加條件刪除所有的記錄
-
truncate table 表名;刪除表,創建一個一摸一樣的空表
5、DQL(數據查詢語言)
5.1、語法
select字段列表 from表名列表 where條件列表 group by分組字段 having分組之后的條件 order by排序 limit分頁限定5.2、基礎查詢
#多字段查詢 Select 列名1,列名2 from 表名; #去重查詢 Select distinct 列名1,列名2 from 表名;(只有結果集完全相同才會被去重) #計算列的查詢 Select 列名1,列名2,列名1+列名2 from 表名;(一般都是數值相加,null+任何數都是為null) #Ifnull函數 Select 列名1,列名2,ifnull(列名1,0)+ ifnull(列名2,0) from 表名; #查詢所有列 Select * from 表名;5.3、條件查詢
-
>
-
<
-
=
-
<>不等于
-
!=不等于
-
And等同于&&
-
Or等同于||
-
Between,,,and,,,包含邊界,not不包含
-
In(值1,值2,,,值n)集合
-
Null不能用=判斷要用is和is not
-
As起別名,數據庫,表,都可以起別名,且as可以省略
5.4、模糊查詢
- _占位符,單個任意字符
- %占位符,任意多個任意字符
5.5、排序查詢
- 升序ASC
- 降序DESC
5.6、聚合函數
5.6.1、count函數
#count(*):返回表中滿足where條件的行的數量 select count(*) from student; #count(列):返回列值非空的行的數量 select count(score) from student; #count(distinct 列):返回列值非空的、并且列值不重復的行的數量 select count(distinct score) from student;5.6.2、max和min函數
統計列中的最大最小值
select max(score) from student; select min(score) from student;如果統計的列中只有NULL值,那么MAX和MIN就返回NULL
5.6.3、sum和avg函數
求和與求平均
select sum(score) from student; select avg(score) from student; select avg(ifnull(score,0)) from student;表中列值為null的行不參與計算,要想列值為NULL的行也參與組函數的計算,必須使用IFNULL函數對NULL值做轉換
5.7、分組查詢
分組查詢的一定是分組字段或者聚合函數,否則將沒有意義
Select 列1,列2 from 表名 group by 列名; Select 列1,列2,列名 from 表名 group by 列名 having 條件語句;Where分組前限定,having在分組后限定,where不可以判斷聚合函數,having可以
5.8、分頁查詢
#Limit 開始索引 每頁的條數; Select * from 表名 limit 開始索引(每頁條數*當前頁碼減一) 每頁條數;6、DCL(數據控制語言)
用來管理用戶和管理權限
用戶的信息都放在mysql數據庫下的user表中
6.1、管理用戶
- localhost
- %
6.2、權限管理
#查詢權限 Show grants for '用戶名'@'主機名'; #添加權限 Grant 權限列表 on 數據庫.表名 to '用戶名'@'主機名'; #刪除權限 Revoke 權限列表 on 數據庫.表名 from '用戶名'@'主機名';均可使用通配符,權限的通配符用all不是*
總結
以上是生活随笔為你收集整理的Java数据库篇3——SQL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html元素移动时颜色逐渐变深,css实
- 下一篇: Java微服务篇3——Lucene