第一部分 基础篇
一 mysql安装与配置
windows安装:
安装选项: 多功能数据库(innodb,myisam都友好)
事务数据库(innodb友好,myisam也支持) 非事务数据库(不能用innodb)
启动关闭 net start/stop mysql
Linux启动和关闭: servie mysql stop
二 sql基础
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema | 存储数据库对象信息,用户表、列、权限、字符集、分区信息
| mysql | 存储了用户权限信息
| performance_schema |
| test | 测试数据库,任何用户都可以使用
| test1 |
+--------------------+
DDL语句: --一般管理员用的多,开发用的少
create table emp(
enname varchar(10),
hiredate date,
sal decimal(10,2),
deptno int(2));
desc emp;
show create table emp;
对表操作
修改类型: alter table emp modify enname varchar(20);
增加表字段: alter table emp add column age int(3);
删除表字段: alter table emp drop column age;
字段改名: alter table emp change sal sal1 decimal(10,3);
change和modify都可以修改表定义,change需要写2次列名,不方便,但是可以改列名称。modify不能。
修改字段排列顺序:
mysql> desc emp;
+----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| enname | varchar(20) | YES | | NULL | |
| hiredate | date | YES | | NULL | |
| sal | decimal(10,2) | YES | | NULL | |
| deptno | int(2) | YES | | NULL | |
+----------+---------------+------+-----+---------+-------+
新增字段birth date 在hiredate之后:
alter table emp add birth date after hiredate;
mysql> desc emp;
+----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| enname | varchar(20) | YES | | NULL | |
| hiredate | date | YES | | NULL | |
| birth | date | YES | | NULL | |
修改字段 sql,放在最前
alter table emp modify birth date first; --或者after hiredate
mysql> desc emp;
+----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------------+------+-----+---------+-------+
| birth | date | YES | | NULL | |
| enname | varchar(20) | YES | | NULL | |
更改表名
alter table emp rename emp1;
DML语句:
插入:
mysql> desc emp;
+--------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+-------+
| birth | date | YES | | NULL | |
| enname | varchar(20) | YES | | NULL | |
| sal | decimal(10,2) | YES | | NULL | |
| deptno | int(2) | YES | | NULL | |
+--------+---------------+------+-----+---------+-------+
#10位数字,末尾2位是小数,
全插:insert into emp(birth,enname,sal,deptno) values('2020-01-19','xixi',300.10,2);
全插省略:insert into emp values('2020-01-19','xixi',300.10,2);
一次性插入多条语句,注意逗号:
insert into emp values
('2020-01-19','xixi2',300.10,2),
('2020-01-19','xixi3',300.10,2),
('2020-01-19','xixi4',300.10,2);
部分插入有空格:
部分插入: insert into emp (birth,enname) values('2020-01-19','xixi');
更新语句:
update emp set sal=300.20 where enname='xixi4';
更新多个表字段:
mysql> select * from dept;
+--------+----------+
| deptno | deptname |
+--------+----------+
| 12 | hehe |
| 12 | haha |
+--------+----------+
2 rows in set (0.00 sec)
mysql> select * from emp limit 2;
+------------+--------+--------+--------+
| birth | enname | sal | deptno |
+------------+--------+--------+--------+
| 2020-01-19 | haha | 300.10 | 2 |
| 2020-01-19 | xixi | NULL | NULL |
+------------+--------+--------+--------+
update emp e,dept d set e.sal=e.sal*d.deptno,d.deptno=1 where d.deptname=e.enname;
删除记录:
delete from emp where enname='xixi4';
多表删除
delete emp e,dept d where d.deptname=e.enname and e.sal=100;
查询语句:
select * from emp where enname='haha' and deptno !=2;
select * from emp order by enname desc;
select enname,count(*) from emp group by enname;
select enname,count(*) from emp where sal>100 group by enname;
表连接:
内连接:选出互相匹配的记录
外连接:选出不同的记录
左连接: 左边所有加右边没有的空
右连接: 右边所有加左边没有
左右连接可以相互转化。
子查询:需要的条件是另外一个select的结果。 关键字 in、not in、=、!=、exists、not exists。
select * from emp where enname in(select deptname from dept);
三 myql支持的数据类型
四 mysql中的运算符
五 常用函数
六 图形化工具
第二部分 开发篇
第三部分 优化篇
第四部分 管理维护篇
第五部分 架构篇