目錄mysql
# 增 insert Course values (1,'語文課') # 刪 delete from Course where c_id=1 # 改 update Course set name='音樂課' where c_id=1 # 查 select * from Course
# 最簡單的存儲過程 create procedure test () begin select '許嵩'; end # 調用存儲過程 call test(); # 刪除存儲過程 drop procedure test;
使用命令框登陸MySqlsql
mysql -u root - p
顯示目前全部的數據庫數據庫
show databases;
顯示建立的數據庫的編碼格式併發
show create database shuyunquan;
引用數據庫編碼
use shuyunquan
查看當前引用的數據庫code
select database();
建立表ip
create table userInfo( username varchar(20), userage int )
顯示當前引用的數據庫的全部表內存
show tables;
顯示指定數據庫的全部的表資源
show tables from mysql;
顯示錶裏面的全部列名rem
show columns from user;
向表中插入一條數據
insert user values(1,'許嵩',32,'男');
向表中添加新列
alter table user add telphone int not null first;
刪除某列
alter table user drop telphone;
只查詢表中的若干條記錄,limit加數字(SQL Server是top)
select * from user limit 2;
建立一個無參的存儲過程
create procedure getVersion() select version();
調用這個無參的存儲過程,無參的加不加()均可以
call getVersion();
建立一個有參數的存儲過程,這裏須要講一下,參數分爲in和out兩種,in是輸入的參數,out是做爲返回的參數,變量。下面這個存儲過程就是,刪除某個id的用戶,返回當前用戶的總個數,unsigned是非負數的意思
create procedure removeuserById(in id int unsigned,out counts int unsigned) begin delete from user where id=id; select count(*) from user into counts; end //
調用的時候
call removeuserById (1,@count); select @count;
移除存儲過程
drop procedure removeuserById;
MySql的存儲引擎,所謂的存儲引擎就是把數據存儲到內存或者文件中採用到技術和方式,有如下幾種
MySql併發操做
什麼是併發操做呢?例如兩個用戶同時訪問個人表,一個刪除id爲1的數據,一個訪問id爲1的數據,這就叫作併發,這樣顯然是會出錯的,解決辦法是鎖。
鎖機制
鎖分爲兩種
鎖顆粒
表鎖,是一種開銷最小的鎖策略
行鎖,是一種開銷最大的鎖策略
Mysql插入信息的時候,必須寫name,不寫字段name的話插入不了數據,主鍵還要插數據?
INSERT MemoryDocument (`MemoryCategoryId`, `Name`, `Description`, `Url`, `ApproveStatus`, `CreateManagerId`, `CreateTime`, `UpdateManagerId`, `UpdateTime`) VALUES(1,'文檔9','描述內存信息描述內存信息描述內存信息描述內存信息描述內存信息描述內存信息描述內存信息描述內存信息','asd',1,1,'2019/10/15',1,'2019/10/19');
還要,若是我想插入多條數據,必須每一條數據後面加上一個分號 ???這是啥操做
INSERT MemoryDocument (`MemoryCategoryId`, `Name`, `Description`, `Url`, `ApproveStatus`, `CreateManagerId`, `CreateTime`, `UpdateManagerId`, `UpdateTime`) VALUES(1,'文檔9','描述內存信息描述內存信息描述內存信息描述內存信息描述內存信息描述內存信息描述內存信息描述內存信息','asd',1,1,'2019/10/15',1,'2019/10/19'); INSERT MemoryDocument (`MemoryCategoryId`, `Name`, `Description`, `Url`, `ApproveStatus`, `CreateManagerId`, `CreateTime`, `UpdateManagerId`, `UpdateTime`) VALUES(1,'文檔10','描述內存信息描述內存信息描述內存信息描述內存信息描述內存信息描述內存信息描述內存信息描述內存信息','asd',1,1,'2019/10/15',1,'2019/10/20');
不加分號的話沒法執行多條insert.......
個人mysql語句是這樣的
UPDATE MemoryCategory set Remark=Remark+'test';
這樣是錯誤的,由於mysql拼接字符串使用的不是+,而是 concat ,報的錯誤:截斷了錯誤的DOUBLE值
正確的寫法以下
UPDATE MemoryCategory set Remark=CONCAT(Remark,'test');
這個寫法我看不懂
select * from (select MemoryParameterName, MemoryParameterValue, count(MemoryParameterValue) as num from MemoryParameter where MemoryCategoryId=1 group by MemoryParameterName, MemoryParameterValue) as t where ( select count(*) from (select MemoryParameterName, MemoryParameterValue, count(MemoryParameterValue) as num from MemoryParameter where MemoryCategoryId=1 group by MemoryParameterName, MemoryParameterValue) as tt where tt.MemoryParameterName = t.MemoryParameterName and tt.num > t.num ) < 30 order by MemoryParameterName,num desc