数据库入门

数据库入门

Mysql基本命令

登录到mysql命令行客户端 :mysql -h localhost -uroot -p密码;

修改密码 :mysqladmin -uroot -p原来密码 password 现在密码

在系统命令行中创建数据库实例 :mysqladmin -uroot -proot create mydb

在系统命令行中删除数据库实例 :mysqladmin -uroot -proot drop mydb

显示mysql数据库的实例 :create database mydb;

使用实例 :use mydb

显示实例中的所有表 :show tables;

查看指定表结构( user 就是指定的那个表) :desc user;

从mysql命令行客户端退出 :exit/quit

放弃正在输入的命令,进入下一次输入 :\c[lear]

打开命令列表 :\h[elp]

SQL语句入门

 

1、DDL语句

数据定义语句,一般包含对于数据库,表,视图,索引,过程,函数,触发器等进行结构操作的语句,比如:创建表,删除表,修改表结构都称之为DDL;一般包含这些命令:create、drop、alter、change、modify、add等

创建一张表: create table student(
    sno int,
    sname varchar(10),
    age int,
    sex char(2)
);

向表中新增列 :alter table student add birth date;

删除列 :alter table student drop age;

修改表名称(tb_stu为表名,stu为新的表名) :alter table tb_stu rename to stu;

修改列名称 :alter table stu change birth birthday date;

修改列类型 :alter table product modify price decimal(7,2);

向表中的指定字段添加约束 :alter table stu add constraint primary key(sno);

删除表 :drop table stu;

2、DML语句

数据操作语句,一般包含用于对表中的数据操作的命令,比如:新增数据,删除数据,修改数据,查询数据;包含的命令有: insert、delete、update、select等

添加数据到表中 :nsert into 表名称(列名...) values(值...)

向所有列插入值 :insert into emp values(1001,'易大师',3500.06,'2018-10-01');

向指定列插入值 :insert into emp(ename,sal,hiredate) values('马尔咋哈',8500.09,now());

向表中一次性插入多行记录 :insert into emp(ename,sal,hiredate) values

                                       ('波比',4398.67,'2018-12-12'),
                                       ('艾希',9566.8,'2017-11-11'),
                                       ('墨菲特',4300,'2019-01-22');

查询所有数据 :select 列名 from 表名称 [附加条件]

修改表数据 :update 表名称 set 列名1=新值1,列名2,=新值2... where 条件

删除记录 :delete from 表名称 where 条件 

3、DCL语句

数据控制语句,一般由数据库管理员(DBA),使用这些命令,操作数据库相关的权限,比如授权,解除权限,常见命令有: grant、revoke等

数值类型

auto_increment :设置列自动递增,一般只能对标识列(主键列)设置,并且必须是整数型类型

unsigned:设置列为无符号列,即列值不允许为负数

zerofill*:设置前导填充,当数值长度未达到定义长度时,前面补零填充宽度

约束

为了维护数据的完整性,一般在数据库系统中都会有一些维护完整性的解决方案,比较常见的方式为两种:

1、约束(constraint)

2、触发器(trigger)

约束分类

  • 主键约束(primary key)

  • 不为空约束(not null)

  • 唯一约束(unique)

  • 检查约束(check)(mysql无效)

  • 外键约束(foreign key)

  • 新增列的同时设置该列为外键列并关联指定表的主键列 :alter table emp add dno int references dept(dno);

  • 修改表中的指定列为外键 :alter table emp add constraint foreign key(dno) references dept(dno);

 

指定字段名查询:

select * from ...   *:表示所有字段
若要显示指定的字段,则可将*用字段名代替,多个字段名用逗号隔开

别名:as

用于查询时给字段或者表起别名,别名只在当前这次查询有效(as可以省略不写)
select name as 姓名,salary as 工资 from emp;

排序:order by:

默认为升序排序(asc表示升序,可以不写)
select * from emp order by salary;

desc:表示降序排序
select * from emp order by salary desc;

分组:group by

每一组只会显示其中一条记录
select * from emp group by dept_id;

having

与group by结合使用,用于将分组后的结果进一步过滤

having后面可以使用聚合函数

limit(可用于分页)

limit m [,n]:limit可以限制查询后的返回记录数目

limit m : 表示查询的结果从第一条开始,返回m条记录

limit m,n : 表示查询的结果从偏移量(偏移量从0开始)为m的开始,往后偏移n条记录

like 模糊查询

%:是一个通配符,表示匹配任意长度的字符串

_:通配符,匹配长度为1的任意字符

聚合函数

count(*) : 可以获取查询的结果记录条数

max() : 获取最大值

min() : 获取最小值

avg():获取平均值

sum() : 指定字段求和

事务

1、开启事务(必须手动提交事务)

start transaction;

2、提交事务

commit;

3、事务回滚

-- 执行后将会回滚到事务的开始位置,在此之前的所有操作都将不会生效,并且将结束此次事务
rollback; 

4、savepoint

savepoint p1; -- 在事务执行过程可以设置一个节点(标记)

5、回滚到指定结点

-- 回滚到指定结点,结点之前的sql照常执行
-- 后面必须使用commit提交才能结束此次事务,让事务中的sql生效。
rollback to p1;

6、设置事务自动提交模式

-- 0:禁止自动提交;1:开启自动提交
SET AUTOCOMMIT=0 ;

软件工程

站在专业的角度教你如何开发应用软件,一个软件的生命周期通常包含以下几个阶段:

  • 问题确定阶段(客户/产品负责人)

  • 可行性分析(产品负责人/项目经理/客户)

  • 概要设计(需求工程师(产品经理)/项目经理/工程师)

  • 详细设计(项目经理/工程师/架构师)

  • 编码(项目经理/工程师)

  • 测试(QA:测试经理/测试工程师)

  • 运行与维护(实施工程师/运维工程师)

软件开发模型

  • 瀑布模型

  • 喷泉模型

  • 螺旋模型

  • 快速原型模型

  • ...

  • scurm敏捷模型

  • 数据库设计三范式

  • 第一大范式(1NF)

    ​ 要求数据表中所有的列是原子的(不可再分),即列表示的是单一的数据(整数,字符串,日期,浮点)不能再进行拆分。

    第二大范式(2NF)

  • 在满足第一范式的前提下,表中必须包含主键(避免使用联合主键),表中所有列必须直接依赖主键列,不允许存在部分依赖

    第三范式(2NF)

    在满足第二大范式的前提下,表中不允许存在传递依赖,即非主键列对主键列的传递依赖关系

  • 总结数据库设计范式

    ​ 在进行数据库设计时,参考数据库设计的范式会使得数据库表更精简,并且减少数据冗余的可能型,提高的数据库的扩展性;但同时带来的是应用程序查询的不方便,提高了查询的复杂度;因此,在实际开发中数据库设计范式只是参考(规范),并不是必须的。

  

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值