MySql 练习(一)
1、登录本机MYSQL
cmd 环境 命令 : mysql -hlocalhost -u root -p回车
输入密码: root
2、Mysql Query bowser 工具管理Mysql数据库
3、日期处理
to_days(date): 转化为天数
dayofweek(date):转化为星期中第几天,dayofmonth(date),dayofyear(date):改日为该月/年第几天
year(date),month(date),day(date),hour(time),minute(time),second(time):当前年月日时分秒
curdate(): 当前日期 curtime(): 当前时间 now():当前日期时间
date_add(date,interval expr type):日期往后 date_sub():日期往前
interval expr type->year,month..,hour.....
date_format(date,format):日期格式转化
e.g
select curdate() as "Today's Date";
select date_sub(curdate(),interval 2 month) as "Today's Date";
4、create、alter、
primary key:主键 foreign key:外键
unique:唯一性 auto_increment:自动增加(表中只有一个且为主键一部分)
default:默认值 not null: 非空
Create table t_1(id int primary key auto_increment,
stu_id int unique,
stu_name vchar(20) default 'mike'
consstraint d_fk foreign key (stu_di)
references t_2(stu_id)
alter table t_1 modify col1 int ,修改col1的数据类型为int
alter table t_1 change col1 col2 varchar(10) ,修改col1属性名及类型
alter table t_1 add col3 varchar(100) not null after col1 ,增加列在col1后
alter table t_1 drop col3 ,删除列
5、group by
将 WHERE 子句与 GROUP BY 子句一起使用
分组查询可以在形成组和计算列函数之前具有消除非限定行的标准 WHERE 子句。必须在GROUP BY 子句之前指定 WHERE 子句。例如:
SELECT WORKDEPT, EDLEVEL, MAX(SALARY) AS MAXIMUM
FROM EMPLOYEE
WHERE HIREDATE > '1979-01-01'
GROUP BY WORKDEPT, EDLEVEL
ORDER BY WORKDEPT, EDLEVEL
注意:在 SELECT 语句中指定的每个列名也在 GROUP BY 子句中提到。未在这两个地方提到的列名将产生错误。GROUP BY 子句对 WORKDEPT 和 EDLEVEL 的每个唯一组合各返回一行。
在 GROUP BY 子句之后使用 HAVING 子句
可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。为此,在GROUP BY 子句后面包含一个 HAVING 子句。 HAVING 子句可包含一个或多个用 AND 和 OR 连接的谓词。每个谓词将组特性(如 AVG(SALARY))与下列之一进行比较:
该组的另一个特性
例如:
HAVING AVG(SALARY) > 2 * MIN(SALARY)
常数
例如:
HAVING AVG(SALARY) > 20000
例如,下列查询寻找雇员数超过 4 的部门的最高和最低薪水:
SELECT WORKDEPT, MAX(SALARY) AS MAXIMUM, MIN(SALARY) AS MINIMUM
FROM EMPLOYEE
GROUP BY WORKDEPT
HAVING COUNT(*) > 4
ORDER BY WORKDEPT
ORDER BY col1 DESC,col2,……,colm
6、字串拼接
SUBSTRING_INDEX 及concat可以实现MYSQL字符串分割并拼接
SUBSTRING_INDEX(phone,'-',2) as PNumber
concat(SUBSTRING_INDEX(phone,'-',2),'-','1234')
优质内容筛选与推荐>>