当前位置: 代码迷 >> 综合 >> 读书:深入浅出MySQL++数据库开发、优化与管理维护+第2版
  详细解决方案

读书:深入浅出MySQL++数据库开发、优化与管理维护+第2版

热度:83   发布时间:2024-01-26 10:31:39.0

第一部分 基础篇

一 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中的运算符

五 常用函数

六 图形化工具


第二部分 开发篇

第三部分 优化篇

第四部分 管理维护篇

第五部分 架构篇

 

 

 

 

 

 

 

 

 

 

 

 

 

  相关解决方案