1,账户密码管理:
1,安装后设置新密码:
Mysqladmin –u root password 123456;
2,修改密码:
不进入mysql:mysqladmin –u root –p 旧密码 password 新密码;
或: mysqladmin –u root –p password 新密码 回车后输入旧密码;
进入MySQL后:set password for root@localhost=password(‘666666’);
3,忘记密码找回:
(1),在MySQL安装根目录下打开my.ini,在末尾添加一行命令:
skip-grant-tables
(2),重新启动mysql服务:windows:右击计算机-管理-服务中找mysql
Linux中service mysqld restart
(3),命令行输入:mysql即可直接进入mysql,然后修改密码:
Use mysql;
Update user set password=password(‘新密码’) where user=’root’;
Exit;
(4),删掉mysql目录下my.ini新天的那句命令保存,然后重启mysql服务,重新进命令行或工具用心密码链接mysql登录即可。
2,常用建表:
常用数据类型:整数int,字符varchar(n),日期:datetime
表约束:主键primary key;自增长auto_increment ;不为空not null;唯一unique;
Create table user(
Id int auto_increment primary key,
Name not null unique,
Age int,
Birthday datetime
)ENGINE=INNODB DEFAULT CHARSET=utf8;
Insert into user(name,age,birthday) values(‘libai’,22,’1456-6-5 11:22:33’);
3,删除表:delete,drop,truncate
Delete 删除只数据,可用where语句:delete from user where age=19;/delete from user;
数据id不自增长,会从删除之处累计。
Drop 删除表结构及其数据,包括索引,约束和触发器
Truncate 删除表数据,不能使用where子句,相当于Navicat表截断,id重新增长。
4,SQL语句:structured Query Language结构化查询语句,存取,查询更新管理关系表数据库的设计语言。
(1),select 列1,列2 from 表名;
(2),列操作:select id+2,age+2 from user;
Select ifnull(age,0)*2 from user; //若age存在就乘2,不存在设为0
列拼接:select concat(name,age)as ‘name-age’ from user;
列去重:select distinct age from python;
(3),别名:as或直接跟别名在列名后
Select concat(name,age) as ‘name-age’ from user;
(4)where子句限制查询数据行:
比较:=,!=, <, >, <=,>=,<>
逻辑:and,or
范围:in(val1,val2), between 11 and 20
空值判断:where name is null and age is not null
(5)模糊查询:%表示任意多个字符
like ‘%email%’: 其中包含有email
Like ‘ok%’ :ok开头
Like ‘_ok%_’ :ok前有一个字符,ok 后至少有一个字符
Like ‘%__%’ 至少有两个字符
(6)分页查询:
Select * from user limit 0,1 :从第一条开始查只查询一条一页
Select * from user limit (m-1)*n,n 每页n条,查询第m页;
(7)排序order by
Desc降序;asc升序默认;
Select * from user where age=9 order by id desc,deid asc;
(8)聚合函数:组函数:只返回一行函数,null被忽略
MAX(), MIN(), SUM(), AVG(), COUNT():最大最小和平均数总和
Select count(id),avg(age) from suer;
(9)分组:group by
Select avg(salary),min(salary),sum(salary) from deparment group by de_id;
分组查询只能查分组条件的字段或者组函数
(10)分组限制:having:对分组后的临时表做条件限制查询,满足条件的临时表最终被查询出来;
Select max(salary) from user group by dep_id having avg(salary) > 8888;
最小年龄大于25的部门的员工总数和部门id:
Select count(id),dep_id from user group by dep_id having min(age)>25;
Having和where的区别:
Having对临时表进行筛选,where先执行对总表筛选;
where 可以使用索引,having不能使用索引,只能在临时结果集操作;
where后面不能使用聚集函数,having是专门使用聚集函数的
(11)各语句执行顺序:
From > where>group by>having>select>order by
(12)case子句:
Case
When 布尔表达式 then 选项1
When 布尔表达式 then 选项2
Else 默认结果
End
Select case
When id>1 and name like ‘%j’ then ‘is jjk’
When id between 2 and 11 then ‘ is 22k
Else ‘33k’
End as ‘nn k’,
Id,age,name from user order by nnk
(13)子查询:一个查询的结果作为另一个查询的一部分
一般用在where之后
Select id,name from t_emp where salary > (select avg(salary) from t_emp)
也有多行多列:
Select a.id,a.name from (select id,name from user) as a;
5,关键字:
LENGTH() 获取长度
LCASE() 转为小写字符 abcd
UCASE() 转为大小字符 ABCD
TRIM() 去除头部和尾部的空格
NOW() 当前系统日期和时间 :select now();
CURDATE() 当前日期
CURTIME() 当前时间
DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s') 日期格式化
DATABASE() 当前的数据库名称
USER() 当前用户名
VERSION() 当前服务器版本