一、软件的生命周期
1.软件定义期
可行性研究阶段
需求分析阶段
2.软件开发期
概要设计阶段
详细设计阶段
编码实现阶段
3.软件维护期
部署阶段
维护阶段
二、计算机如何存储字符
(1)如何存储英文字符
ASCII 总共有128个,对英文字母及其符号进行了编码
Latin-1 总共有256个,对欧洲字符进行了编码,兼容ASCII
(2)如何存储中文字符
GB2312 对常用的6千多汉字进行了编码,兼容ASCII
GBK 对两万多汉字进行了编码,兼容GB2312
BIG5 台湾繁体字编码,兼容ASCII
Unicode 对世界上主流国家的常用语言进行了编码,兼容ASCII,具体包含3种存储方案 UTF-8 UTF-16 UTF-32
(3)解决mysql中文乱码
Mysql默认使用Latin-1编码
解决:
脚本文件另存为的编码为UTF-8
客户端连接服务器端的编码为UTF-8 set names utf8;
服务器端创建数据库使用的编码为UTF-8
create database xz charset=utf8;
三、数据库
1.数据的存储方式有哪些
文件/内存/第三方云服务器/数据库服务器
2.什么是数据库
数据库按照一定的形式来组织存储数据,目的为了更好的操作数据——增删改查
(1)数据库的发展历史
网状数据库 – 层次型数据库 – 关系型数据库 – 非关系型数据库(NoSQL)
(2)关系型数据库逻辑结构
3.mysql数据库
Oracle: mysql
Martin: MariaDB
1.mysql部署结构
服务器端: 负责存储/维护数据
C:/xampp/mysql/bin/mysqld.exe 启动文件
占用3306端口
客户端: 负责连接服务器,对数据进行增删改查
C:/xampp/mysql/bin/mysql.exe
2.使用客户端连接服务器端
mysql.exe -h127.0.0.1 -P3306 -uroot -p
-h host IP/域名 127.0.0.1/localhost
-P port 端口
-u user 用户名 root 管理员账户
-p password 密码 xampp下root的密码为空
mysql -uroot 简写形式
3.常用管理命令
quit; 退出服务器的连接
show databases; 显示所有的数据库
use 数据库名称; 进入指定的数据库
show tables; 显示当前数据库所有的表
desc 表名称; 描述表中都有哪些列
4.SQL命令
结构化查询语言,用于操作关系型数据库服务器,主要是对数据执行增删改查。
SQL命令的两种执行方式
(1)交互模式:客户端输入一行,点击回车,服务器端就执行一行,适用于临时性的查看数据
(2)脚本模式:把所有要执行的命令写在一个脚本文件中,一次性的提交给服务器执行,适用于批量的操作数据
(3)SQL命令的语法规范
一条SQL命令可以跨越多行,以英文的分号作为结束
SQL命令不区分大小写,习惯上关键字大写,非关键字小写
假设某一条SQL命令出现语法错误,则此条语句到最后所有语句不再执行
分为单行注释(#…)和多行注释(/…/),注释的内容不被服务器所执行
5.常用的SQL命令
(1)丢弃数据库,如果存在
DROP DATABASE IF EXISTS jd;
(2)创建新的数据库
CREATE DATABASE jd;
(3)进入数据库
USE jd;
(4)创建保存数据的表
CREATE TABLE student(
sid INT,
name VARCHAR(8),
sex VARCHAR(1),
score INT
);
(5)插入数据
INSERT INTO student VALUES(‘1’,’ran’,’F’,’59’);
(6)查询数据
SELECT * FROM student;
(7)删除数据
`DELETE FROM user WHERE uid=’2’;`
(8)修改数据
UPDATE user SET phone=’18500000000’,isOnliine=’y’ WHERE uid=’3’;
#设置客户端连接服务器端的编码为UTF-8
SET NAMES UTF8;
#丢弃数据库,如果存在
DROP DATABASE IF EXISTS xz;
#创建新的数据库,设置存储编码为UTF-8
CREATE DATABASE xz CHARSET=UTF8;
#进入该数据库
USE xz;
#创建保存数据的表
CREATE TABLE user(
uid INT,
uname VARCHAR(16),
upwd VARCHAR(32),
email VARCHAR(32),
phone VARCHAR(11),
userName VARCHAR(8),
regTime VARCHAR(10), #2020-08-03
isOnline VARCHAR(1) #y/n
);
#插入数据
INSERT INTO user VALUES('1','ran','123456','ran@163.com','18112345678','然哥','2019-12-20','y');
INSERT INTO user VALUES('2','dong','888888','dong@qq.com','13999999999','李东','2020-1-3','n');
INSERT INTO user VALUES('3','hua','666666','hua@tedu.cn','15812345678','钟华','2018-5-5','n');
#删除数据
DELETE FROM user WHERE uid='2';
#修改数据
UPDATE user SET phone='18500000000',isOnline='y' WHERE uid='3';
#查询数据
SELECT * FROM user;
4.列约束
(1)唯一约束——unique
声明了唯一约束的列上,不允许出现重复的值,允许插入NULL,甚至多个NULL;唯一约束可能会影响查询的默认排序
(2)默认值约束——default
可以使用default关键字来设置默认值,具体应用方式有两种
INSERT INTO laptop VALUES(1,’小米1’,DEFAULT,… );
INSERT INTO laptop(lid,title) VALUES(2,’小米2’);
没有出现的列会应用默认值
(3)检查约束——check
也称为自定义约束,但mysql不支持,会影响插入数据插入速度,可能会对服务器造成较大的压力。
CREATE TABLE student(
score TINYINT CHECK(score>=0 AND score<=100)
);
(4)外键约束
声明了外键约束的列,取值范围到另一个表的主键列中去取,允许插入NULL。外键列和对应的主键列两者列类型要保持一致。
foreign key(外键列) references 另一个表(主键列)
#设置客户端连接服务器端的编码
SET NAMES UTF8;
#丢弃数据库,如果存在
DROP DATABASE IF EXISTS tedu;
#创建新的数据库,设置存储编码
CREATE DATABASE tedu CHARSET=UTF8;
#进入该数据库
USE tedu;
#创建保存部门数据的表
CREATE TABLE dept(
did INT PRIMARY KEY AUTO_INCREMENT,
dname VARCHAR(8) UNIQUE
);
#插入数据
INSERT INTO dept VALUES(10,'研发部');
INSERT INTO dept VALUES(20,'市场部');
INSERT INTO dept VALUES(30,'运营部');
INSERT INTO dept VALUES(40,'测试部');
#创建保存员工数据的表
CREATE TABLE emp(
eid INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(8),
sex BOOLEAN DEFAULT 1,
birthday DATE,
salary DECIMAL(7,2) NOT NULL, #99999.99
deptId INT,
FOREIGN KEY(deptId) REFERENCES dept(did)
);
#插入数据
INSERT INTO emp VALUES(NULL,'Tom',1,'1990-5-5',6000,20);
INSERT INTO emp VALUES(NULL,'Jerry',0,'1991-8-20',7000,10);
INSERT INTO emp VALUES(NULL,'David',1,'1995-10-20',3000,30);
INSERT INTO emp VALUES(NULL,'Maria',0,'1992-3-20',5000,10);
INSERT INTO emp VALUES(NULL,'Leo',1,'1993-12-3',8000,20);
INSERT INTO emp VALUES(NULL,'Black',1,'1991-1-3',4000,10);
INSERT INTO emp VALUES(NULL,'Peter',1,'1990-12-3',10000,10);
INSERT INTO emp VALUES(NULL,'Franc',1,'1994-12-3',6000,30);
INSERT INTO emp VALUES(NULL,'Tacy',1,'1991-12-3',9000,10);
INSERT INTO emp VALUES(NULL,'Lucy',0,'1995-12-3',10000,20);
INSERT INTO emp VALUES(NULL,'Jone',1,'1993-12-3',8000,30);
INSERT INTO emp VALUES(NULL,'Lily',0,'1992-12-3',12000,10);
INSERT INTO emp VALUES(NULL,'Lisa',0,'1989-12-3',8000,10);
INSERT INTO emp VALUES(NULL,'King',1,'1988-12-3',10000,10);
INSERT INTO emp VALUES(NULL,'Brown',1,'1993-12-3',22000,NULL);