数据库基础

一、软件的生命周期

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','[email protected]','18112345678','然哥','2019-12-20','y');
INSERT INTO user VALUES('2','dong','888888','[email protected]','13999999999','李东','2020-1-3','n');
INSERT INTO user VALUES('3','hua','666666','[email protected]','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);

你可能感兴趣的:(mysql)