建立數據庫面試
1複製代碼 |
create database dbname;複製代碼 |
刪除數據庫redis
1複製代碼 |
drop database dbname;複製代碼 |
選擇數據庫數據庫
1複製代碼 |
use dbname;複製代碼 |
建立表express
12345678複製代碼 |
CREATE TABLE IF NOT EXISTS `book`( `id` INT UNSIGNED AUTO_INCREMENT, `title` VARCHAR(100) NULL, `author` VARCHAR(40) NOT NULL, `date` DATE, INDEX title_index(title(100)), PRIMARY KEY ( `id` ))ENGINE=InnoDB;複製代碼 |
添加表字段bash
1複製代碼 |
alter table book add press varchar;複製代碼 |
刪除表字段服務器
1複製代碼 |
alter table book drop press;複製代碼 |
修改表字段多線程
1複製代碼 |
alter table book modify press char;複製代碼 |
查看錶結構函數
1複製代碼 |
show columns from book;複製代碼 |
修改表名源碼分析
1複製代碼 |
alter table book RENAME TO book1;複製代碼 |
刪除表學習
1複製代碼 |
drop table book;複製代碼 |
建立索引
123複製代碼 |
create index title_index ON book(title(100)); alter table book ADD INDEX title_index(title);複製代碼 |
刪除索引
1複製代碼 |
drop index title_index ON book;複製代碼 |
插入數據
1234567複製代碼 |
insert into book values(值1,值2,....);#值的順序與字段在表中的順序一致insert into book(title,author) values('Java學習路線','Java學習錄');#爲指定字段賦值 insert into book(title,author) select title,author from test;#copy另外一張表的數據複製代碼 |
修改表數據
1複製代碼 |
update table set title='學習筆記',date='2019-05-21'複製代碼 |
刪除表數據
123複製代碼 |
truncate table book;#刪除表中全部數據delete from book where xx=yy;#根據條件刪除表中數據複製代碼 |
查詢
1複製代碼 |
select * from book;複製代碼 |
經常使用函數
1234567891011121314151617181920212223複製代碼 |
character_length("title") #字符串title的字符數concat("title","author") #將字符串title和author合併爲一個字符串concat_ws(",""title","author") #將字符串title和author合併爲一個字符串,合併時使用逗號做爲分隔符lower("title") #將字符串title的內容轉爲小寫upper("title") #將字符串title的內容轉爲大寫reverse("title") #反轉字符串titleabs("price") #求price的絕對值avg("price") #求price的平均值count("price") #求price的總記錄數max("price") #求price的最大值min("price") #求price的最小值sum("price") #求price的和rand()#返回0-1之間的隨機數adddate("date",n) #date加上n天的時間addtime("date",n) #date加上n秒的時間curdate() #當前日期current_time() #當前時間current_timestamp() #當前日期時間datediff(d1,d2) #d1和d2相隔的天數period_diff(d1,d2) #d1和d2相隔的月數subdate(d,n) #d減去n天的日期subtime(d,n) #d減去n秒的時間connection_id()#服務器當前鏈接數複製代碼 |
case when
123456789101112131415複製代碼 |
CASE expression WHEN condition1 THEN result1 WHEN condition2 THEN result2 .. WHEN conditionN THEN resultN ELSE resultEND#CASE 表示函數開始#END 表示函數結束#若是 condition1 成立#則返回 result1#若是 condition2 成立#則返回 result2#當所有不成立則返回 result#而當有一個成立以後,後面的就不執行了複製代碼 |
IF
1複製代碼 |
IF(expr,v1,v2)#若是表達式 expr 成立,返回結果 v1;不然,返回結果 v2。複製代碼 |
IFNULL
1複製代碼 |
IFNULL(v1,v2)#若是 v1 的值不爲 NULL,則返回 v1,不然返回 v2複製代碼 |
去除結果集中的重複元素
1複製代碼 |
select distinct(title) from book;複製代碼 |
模糊查詢
123複製代碼 |
select * from book where title="Java%";#查詢以Java開頭的數據,只有這樣使用索引如下兩種不使用索引select * from book where title="%Java";#查詢以Java結尾的數據select * from book where title="%Java%";#查詢包含Java的數據複製代碼 |
合併結果集
1複製代碼 |
select title from book1 union select title from book2複製代碼 |
鏈接(left jion/right jion/jion/逗號)
1234複製代碼 |
select * from book1 left jion book2 where xx=yy #獲取左表全部記錄,即便右表沒有對應匹配的記錄select * from book1 right jion book2 where xx=yy #獲取右表全部記錄,即便左表沒有對應匹配的記錄select * from book1 jion book2 where xx=yy #獲取兩個表中字段匹配關係的記錄select * from book1 , book2 where xx=yy#同jion複製代碼 |
分組
1複製代碼 |
select count(*) from book group by author ='Java學習錄' #查詢公衆號Java學習錄一共寫了多少篇文章複製代碼 |
排序
12複製代碼 |
select * from book order by date ASC#默認就是ASC 可省略,按date升序排列select * from book order by date DESC#按date降序排列複製代碼 |
分頁
123複製代碼 |
select * from table limit 5; #返回前5行select * from table limit 0,5; #同上,返回前5行select * from table limit 5,10; #返回6-15行複製代碼 |