增 create user '用戶名'@'192.168.16.%' identified by ‘123’;建立一個帳戶,並設置密碼,可不設密碼
mysql
grant all on *.* to '用戶'@'地址'; #給帳戶受權 flush privileges; #刷新受權當即生效
建立帳戶並受權sql
grant all on *.* to 'eva'@'%' identified by '123'
刪 drop user '用戶名'@'ip地址';數據庫
改 rename user '用戶名'@'ip地址' to '新用戶名'@‘ip地址' ;ide
查 select user,host from mysql.user; 查看帳戶和地址函數
例 use db
增 create table 表名 (列名 類型 約束,列名 類型 約束); 列名與列名之間用逗號隔開, **約束可不設置**
post
類型編碼
約束 not null, unique , primary key , foreign key (自列名) references 約束表名(列名),auto_increment, code
not null 非空約束,指定某列不能爲空
regexp
unique 惟一約束
排序
primary key 主鍵 指定給列名的值能夠惟一地標識該記錄
foreign key 外鍵 指定該行記錄從屬於主表中的一條記錄,主要用於參照完整性
例:foreign key (id) references class(cid)
foreign key(dpt_id) references department(id) on delete cascade # 連級刪除 on update cascade # 連級更新
atuo_increment 表示自增
查 show tables 查庫中的全部表名
查看錶結構
改
在表名中的列名改爲新的類型和約束(覆蓋掉原來的類型和約束)
將表名中的列名更換成新的列名,和新的類型,約束(**必須寫新的類型和約束,不能直接只修改列名**)
刪 drop table 表名; 刪除某個表
增 insert into 表名 values (1,'egon1'),(2,'egon2');
改 update 表名 set 列名=’新的類容‘ where id = 2; 須要用到主鍵做爲約束條件
刪
根據條件進行刪除某一行
清空表
清空表中的內容,若是表中有自增id,那麼新增的數據仍然是刪除前的最後一個+1
清空,有自增的也從0開始,速度比上一條快
查
簡單查詢
select * from 表名; 能夠單獨查表名中的某些列名,將*號換成列名,列名與列名之間用逗號隔開
select id,name from student;
去重查 distinct
select distinct 列名 from 表名; 對所查列名進行去重
select 列名*12 as 別名 from 表名; 好比說月薪x12 進行查詢,as是取別名的意思,as能夠省略不寫
相似格式化輸出
select concat('內容',列名,'內容',列名) as 別名 from 表名
例 select concat('姓名:',name,'年齡:',age) as user from users;
concat_ws() 第一個參數爲分割符
例select concat_ws(':',name,age) as user from users;
結果爲: alex:38
SELECT ( CASE WHEN emp_name = 'jingliyang' THEN emp_name WHEN emp_name = 'alex' THEN CONCAT(emp_name,'_BIGSB') ELSE concat(emp_name, 'SB') END ) as new_name FROM emp;
where 相似if條件語句
between 80 and 100 值在80到100之間
between 是之間的意思
值不在80到100之間的數,
in(a,b,c) 表示取值爲a或b或c的數
is null 或者 is not null判斷某個字段是否爲空,不能用等號
like 'eg%' 以eg...開頭的
%表示eg後面接任意長度字符,
以eg後只能由一個字符
_表示任意長度爲1字符聚合函數 count(),對於數字類的列名能夠用avg(平均),min,max,等
select avg(salary) from employee where depart_id = 3;
分組關鍵字group by 分組的意思 一般和group_concat() ,聚合函數配合使用
SELECT post,GROUP_CONCAT(emp_name) FROM employee GROUP BY post;#按照崗位分組,並查看組內成員名 select post,count(id) as count from employee group by post;#按照崗位分組,並查看每一個組有多少人
優先級 where >group by > having >order by
單例排序 以...進行排序 order by 列名 osc;小到大,osc爲默認值,能夠不寫
或者order by 列名 desc;大到小
多例排序
先按照age排序,若是年紀相同,就按薪資排序
SELECT * from employee ORDER BY age,salary DESC;
限制次數 limit 顧首不顧尾,初始值爲0
SELECT * FROM employee ORDER BY salary DESC LIMIT 0,5; #從第0開始,即先查詢出第一條,而後包含這一條在內日後查5條 SELECT * FROM employee ORDER BY salary DESC LIMIT 5,5; #從第5開始,即先查詢出第6條,而後包含這一條在內日後查5條
正則關鍵字 regexp
SELECT * FROM employee WHERE emp_name REGEXP 'on$';