mysql 介绍 知乎_SQL介绍——Mysql
一、運算符號
二、查詢關鍵字
1.各關鍵字優先級
where > group by > having > order by > limit
2.Select
語法:select 字段名 from 表名 where 條件語句;
說明: - 多個字段名用,隔開,也可用*表示所有字段 - 字段名可用distinct修飾,表示查詢結果中該字段相同的數據只會保留第一行數據
3.Where
select、update、delete等其他DDL語句的子句,用來表示執行操作的條件
語法:where 條件字段 運算符 條件值
說明: - 運算符后面的條件值,如果是文本類型,需要使用引號包含,非文本類型的值不要用引號包含。 - where子句中可以跟多個條件,每2個條件之間用邏輯運算符 and 或者 or 分隔開。
4.like
作為where子句中的比較運算符來使用,通常與通配符配合進行模糊匹配。
語法:
where 條件字段 like '[abcd]_%';
5.Top或者Limit或者Rownum
從查詢結果中篩選出排序靠前的指定行數數據。
并非所有的數據庫管理系統都支持top語句,不同的數據庫管理系統中,top語句的語法也不相同。
SQL Server:
語法:select top 5 LastName from Persons
說明:從Persons表中,搜索排序在前5的數據
語法:select top 50 percent from Persons
說明:從Persons表中,搜索排序在前50%的數據
Mysql:
語法:select LastName from Persons limit 5
說明:從Persons表中,搜索排序在前5的數據
Oracle:
語法:select LastName from Persons where rownum<=5
說明:從Persons表中,搜索排序在前5的數據
6.Order By
對搜查的結果進行排序顯示,可以指定多列,對搜查結果進行升序或者降序顯示
select * from Persons order by FirstName asc,LastName desc
說明:多個排序字段之間用,分隔開
Asc表示升序,Desc表示降序
每個排序字段要單獨指定圣墟還是降序
7.Case When
將查詢結果某個字段的值,根據指定的條件轉換為其他值。
語法1:
case
when 條件1 then 值1
when 條件2 then 值2
else 值3
end as 字段名
語法2:
case 字段名
when 現有值1 then 修改值1
when 現有值2 then 修改值2
else 修改值3
end as 字段名
三、查詢技巧
1.計算日期差
Mysql中沒有直接計算兩個日期差值的函數,可以用以下方式計算:
To_Days(date1) - To_Days(date2)
2.時間戳與日期比較
最好將日期轉化為時間戳進行比較。因為將時間戳轉換為日期的函數from_unixtime不支持負數,可能導致比較結果出錯。
3.設置自增數據
Mysql的命令支持自增類型的語法:
set @num:=1;
update devices set imei=(@num:=(@num+1));
4.將查詢結果插入其他表
insert into table1(name,type) select name,type from table2
5.SQL嵌套使用
語法:select * from table1 where id in (select id from table2);
說明:若子查詢結果只包含一個字段,可作為父查詢中符號in的條件
語法:select * from (select * from table1 ) as table2
說明:若子查詢結果只包含一個字段,建議給子查詢起一個別名,作為父查詢中的一張表來使用
四、其他數據操作語句
1.Update
修改指定數據表中,符合條件行的某些字段值
語法:update 表名 set 列名=目標值 where 條件語句
說明:
1.可設定多個字段值,鍵值對用,隔開
2.where子句表示只更新符合條件的數據
2.Insert into
向指定的數據表中插入數據。
語法:insert into 表名(字段名1,字段名2) values(值1,值2);
說明:
1. 表名后面的字段數量,比如與values中的值數量保持一致。
2. 表名后面的字段,可以只是數據表中的一部分字段。語句執行后,未指定的字段會設置為默認值。
3. 表名后面的字段名,不要用引號包含。如果values后面的值是字符型,需要用引號包含。
4. 語句執行后,values后面的值會按照編寫的順序,依次插入到表名后面字段中。
語法:insert into 表名 values(值1,值2)
說明:
1. 如果表名后面沒有指定字段列表,表示數據表中的每個字段都需要插入值。
2. 此時values后面值得數量,必須與數據表中的所有字段數保持一致
3.Delete
刪除指定數據表中,符合條件的數據行
語法:delete from Persons where LastName='Gates'
說明:帶有where子句表示只刪除符合where條件的數據
語法1:delete from Persons
語法2:delete * from Persons
說明:刪除所有數據但是保留表的結構、屬性、索引
五、數據庫控制語句
1.連接服務器
連接到本地:
語法:mysql -u username -ppassword
說明:-u和username之間可以有空格,也可以不寫空格
如果用戶沒有設置密碼,不要加上-p+password這部分內容
-p和password之間不要輸入空格,否則必須再輸入一次密碼
連接到其他服務器:
語法:mysql -h 192.168.2.1 -u username -ppassword
說明:-h和ip地址之間可以有空格,也可以不寫空格
參照“連接到本地”的3條說明
斷開連接:
語法:exit
2.設置密碼
添加密碼:
語法:mysqladmin -u root password "password"
取消密碼:進入mysql數據庫
將user數據表中,password的字段修改為空
重啟mysql服務,或者使用“重新載入數據”命令
修改密碼:
語法:set password for 'root'@'localhost' = password('123456'); 說明:登錄Mysql之后使用
語法:mysqladmin -u root -p password "NewPassword"
語法:mysqladmin -u root -pOldPassword password "NewPassword"
語法:update user set Password=password("123456") where user="root"; 說明: 1. 登錄Mysql之后使用 2. 修改后重啟mysql服務,或者使用“重新載入數據”命令
3.賬號管理
創建用戶:
語法:create user 'username'@'host' identified by 'password';
說明:host表示允許用戶連接數據庫的主機,localhost表示本地,%表示任意主機
password可以為空,表示該用戶登錄不需要密碼
授權:
語法:grant privileges on DatabaseName.TableName to 'username'%'host' with grant option;
說明:privileges表示賦予用戶的權限,權限包括select、insert、update、delete,在授權時,可以指定多個權限,兩個權限之間用","分割。也可以用all表示所有權限
Database表示數據庫名,可以用*表示所有數據庫
TableName表示表名,可以用*表示所有表
with grant option:如果授權命令中沒有加入這條選項,那么被授權的用戶,不可以對其他用戶進行授權
identified by 'password':在授權命令中,也可以加入這條選項,來修改命令或者去掉命令
顯示授權:
語法 :show grants for 'username'@'host'
取消授權:
語法 :revoke privileges on DatabaseName.TableName from 'username'@'host' 說明:取消授權時,指定的DatabseName.TableName范圍,必須與進行授權時指定的范圍一直,取消授權才能生效
六、數據庫、數據表操作語句
創建數據庫:
語法:create database DatabaseName default character set 編碼 collate 編碼
顯示數據庫列表:
語法:show databases;
判斷表是否存在:
語法:if exists tablename
創建表:
語法:create tablename if not exists tablename 說明:判斷表是否存在,如果不存在的話再創建表
用查詢結果創建臨時表:
語法:create temporary table TableName ( select ...);
刪除表:
語法:drop table if exists TableName; 說明:如果表tablename存在就刪除這張表
重新載入數據:
語法:flush privileges
七、函數庫
1.數學函數取模:mod(a,b)
在(0,1)之間隨機:rand()
四舍五入取整:round(a,b)
2.字符串函數字符串拼接:concat(str1,str2...)
字符串替換:replace(字段名,原字符,替換后字符)
3.數據類型轉換字符串to數字:select name+0
4.日期函數
函數:
時間格式:
總結
以上是生活随笔為你收集整理的mysql 介绍 知乎_SQL介绍——Mysql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql long varchar2_
- 下一篇: mysql常用全局参数,设置一个持久的全