增 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$';