MySQL(一)认识MySQL、常用管理命令、列类型列约束、查询语句-灵析社区

青椒肉丝加点糖

一、软件生命周期和计算机数据存储方式

1. 软件生命周期

       定义期:可行性研究阶段/需求分析阶段;

       开发期:概要设计阶段/详细设计阶段/编码实现阶段/测试阶段;

       维护期:部署阶段/维护阶段。

2. 计算机对数据的存储,有4个方面

  • 通过特定的文件如excel、word等存储,只适用于存储小量数据且速度慢;
  • 内存,临时存储,运行时会有数据产生并存储,结束运行后数据即销毁;速度快;
  • 第三方云服务器,共享;
  • 数据库服务器。

MySQL属于数据库服务器存储的范畴。

二、数据库

       数据库的作用就是按照一定的形式组织存放数据,目的是为便于操作数据,即增、删、改、查。数据库的发展历程为:网状数据库-->层次型数据库-->关系型数据库(RDBMS)-->非关系型数据库。

1. 常见的关系型数据库

  • SQLite——微型数据库,常用于移动端
  • MySQL——开源RDBMS,是一种关联数据库管理系统,将数据库保存在不同的库中,每个库可包含多个表,表中可以有多行多列的数据,可用于各种操作系统
  • SQL Server——Microsoft开发的中型数据库,只适用于Windows操作系统
  • Oracle——Oracle开发的中大型数据库,可用于各种操作系统
  • DB2——IBM开发的中大型数据库,常与IBM服务器搭配

2. MySQL部署结构

       MySQL部署分服务器端和客户端,服务器端负责存储维护数据,客户端负责连接服务器端,对数据进行增删改查操作。

使用客户端连接服务器端时只需要执行命令:mysql.exe -h127.0.0.1 -P3306 -uroot -p
-h,host IP地址/域名  eg:127.0.0.1/localhost(永远指向自己本身的电脑)
-P,port 端口(此处为3306端口)
-u,user 用户名(root是管理员账户,在root下密码为空)
-p,password 密码

此命令也可以简写为:mysql -uroot

3. 常用管理命令(必须以英文“;”结尾)

  • quit;  退出连接
  • show databases;  显示当前所有数据库
  • use 数据库名称;  进入指定的数据库
  • show tables;  显示当前数据库下的所有数据表
  • desc 数据表名称;  描述数据表中都有哪些列

4. 常用SQL命令以及举例

(1)定义数据结构(DDL)

drop database if exists jd;     //丢弃数据库jd(存在的基础上)

create database jd;               //创建数据库jd

use jd;                                   //进入数据库jd

create table student ( id int, name varchar ( 8 ), sex varchar ( 1 ), score int );    //创建表student,包括id、name、sex、score四列

(2)操作数据(DML)

insert into student values('1','张三','M','99');      //向student表中插入一行数据
delete from user where uid="2";  //删除uid为2的行数据
update user set upwd="666666",isOnline="n" WHERE uid="3";     //修改uid为3的行密码为666666,在线状态为n

(3)查询数据(DQL)

select * from student;      //查询student表中的所有数据

三、列类型

       列类型指在创建数据表时,指定的列所能存储的数据类型。

1. 数值型

2. 日期时间型

3. 字符串型

  字符串型和日期时间型 必须加引号

四、列约束

列约束的意思是MySQL对要插入的数据进行特定的验证,只有符合条件才允许插入(位于列类型之后)。

1. 主键约束  primary key

声明了主键约束的列,不允许插入重复,一个表中只能有一个主键约束,通常用于编号列,可加快数据查找速度。

自增列 Auto_increment:自动增长,声明了自增列,插入数据时只需要赋值为 null,就会获取最大值然后加1插入。声明了自增列也允许手动赋值。

2. 非空约束  not null

声明了非空约束的列上禁止插入Null。

3. 唯一约束  unique

声明了唯一约束的列不允许插入重复的值,但是 unique 允许插入重复的 null 甚至多个 null,一个表中可以有多个唯一约束。

4. 默认值约束  defaul

可以使用 default 关键字设置默认值,default使用时不加引号。

5. 检查约束  check

也称自定义约束,用户可以制定约束的条件。但是 MySQL 不支持检查约束,认为会极大影响数据插入数据,后期需要通过 JS 实现。

6. 外键约束  foreign

声明了外键约束的列称为外键列,这一列取值范围到另一个表的主键中,是为了让两个表建立关联。外键约束用法特殊,常用于创建表的最后一行,外键列要和对应的主键列的

列类型保持一致。格式如下:

格式:foreign key(外键列) references 另一个表(主键列)    
eg:foreign key(familyId) references family(fid)

五、MySQL查询语句

注:以下举例中 ,emp为员工表,dept为部门表

1. 简单查询

(1)查询特定的列    

eg:查询所有员工的编号和姓名   select eid,ename from emp;

(2)查询所有的列    

eg:查询员工表emp中所有信息   select * from emp;

(3)给列起别名      

eg:查询所有员工的编号和姓名并起别名  select eid as 编号,ename as 姓名 from emp;

(4)显示不同的记录

eg:查询有哪些性别的员工  select distinct sex from emp;

(5)查询时执行计算

eg:查询所有员工姓名及年薪   select ename,salary*12 from emp;

(6)查询结果排序    

eg:查询所有部门数据,结果按照编号升序排列   select * from dept order by did asc;

(7)条件查询            

eg:查询编号为5的员工的数据   select * from emp where eid=5;

(8)模糊条件查询    

eg:查询姓名中含有“e”的员工   select * from emp where ename like "%e%";
% 表示匹配任意个字符, _  表示匹配一个字符,以上两个匹配符须结合like关键字使用

(9)分页查询

       当查询的结果中数据太多,一次显示不完,就可以使用分页显示。分页查询需要两个已知条件:当前页码+每页数据量。语法:select * from emp limit 开始查询的值, 每页的数据量;

eg:假设每页显示五条数据,分别查出前三页
        第1页:select * from emp limit 0,5;
        第2页:select * from emp limit 5,5;
        第3页:select * from emp limit 10,5;
        注意:开始查询的值=(当前的页码-1)* 每页数据量

2. 复杂查询

(1)聚合查询/分组查询

eg:通过员工编号查询员工数量   select count(eid) from emp;
eg:查询各部门员工 最高工资,员工数量,平均工资
select max(salary),count(*),avg(salary),deptId from emp group by deptId;
eg:查询所有员工出生的年份   select year(birthday) from emp;

(2)子查询

多个SQL命令的组合,把一个SQL命令的结果作为另一个命令的条件;
eg:查询高于平均工资的男员工
select * from emp where sec=1 && salary>(select avg(salary) from emp);

eg:查询和Tom同一年出生的员工
select * from emp where year(birthday)=(select year(birthday) from emp where ename="Tom") && ename!="Tom";

(3)多表查询

查询的列分布在不同的表中时,用多表查询(前提:表和表之间必须有关联);
eg:查询所有员工的姓名及部门名称
select emp.ename,dept.dname from emp,dept where emp.deptId=dept.did;select ename,dname from emp left outer join dept on deptId=did;


阅读量:2014

点赞量:0

收藏量:0