Mysql数据库—DML查询(1)
1.数据库客户端介绍,navicat和workbench
navicat全能,可以连接许多种数据库,是专门做数据库客户端的,但是workbench是专注于mysql的会做的比较细节,如果公司只用mysql的话可以用workench就够了
workbench是官网公司,会紧跟mysql的更新,算是一个正统的工具。只有这个工具不满足的时候,再考虑其他工具去辅助。
ps:shell下连接数据库:
交互式
mysql -h 127.0.0.1 -uroot -p
非交互模式
mysql -h 127.0.0.1 -uroot -D(数据库名字) -e 'show databases;' -pxxxx -B
另外还有一个比较小众的客户端连接平台,是网页版的
不需要安装应用,直接打开网址可以访问
2.基本的增删查改语法
修改和删除一定要慎之又慎!!!
如果做练习的话可以使用一个公用的测试数据
cd test_db/
cat employees.sql | sed -e "s#employees;#employees_$USER;#g" |mysql -h (host地址) -u root -p
利用此命令将数据库名字该为自己的employees_自己名字,并复制到自己的数据库下, “ “双引号是支持$符转译的
3.外键、主键、索引
主键:其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 ;
比如
学生表(学号,姓名,性别,班级)
其中每个学生的学号是唯一的,学号就是一个主键
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键
学生表(学号,姓名,性别,班级)
其中每个学生的学号是唯一的,学号就是一个主键
课程表(课程编号,课程名,学分)
其中课程编号是唯一的,课程编号就是一个主键
成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键
外键是和另外一张表对应的,是另外一张表的主键
成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键
同理 成绩表中的课程号是课程表的外键
同理 成绩表中的课程号是课程表的外键
具体可以参考该博主的内容:https://www.cnblogs.com/feng9exe/p/7455968.html
三者之间的区别:

4.使用workbench
设定默认数据库写查询语句的时候就不用设定数据库了!
5.更多查询-条件查询、聚合查询
基本查询:select*from table_name
字段查询:select fields from table_name
条件查询:select*from table_name where a=1
排序:select*from table_name order by fields desc
分页:select*from table_name limit 10 offset 5
去重:select distinct gender from employees
1)字段查询可以定义别名:select birthday 生日
2).分页,offset是偏移,有了偏移就可以去找后面的数据,比如要找第11个数,就limit10 offset10,就从11开始了
3).SELECT * FROM employees_zhaitian.employees limit 12 offset 10;
问:offset以谁为偏移基准,有什么规则吗?
根据前面select的查询结果的记录顺序
结果如下图: