文章目录

  • 数据类型
  • 字段属性
    • 存储引擎
    • 字符集
  • 创建新表
  • 数据库建模
    • PowerDesigner 建模工具

个人博客
https://blog.csdn.net/cPen_web


数据类型

数据类型 - 日期和时间类型

https://www.runoob.com/mysql/mysql-data-types.html

年        year
月       month
日       day
小时      hour
分钟      minute
秒       secondtimestamp --> 时间戳:距离1970-1-1 0:0:0为起点 有多少秒  格林尼治时间
1970-01-01 00:00:00/2038    到2038年存放不了;4个字节
root@sanchuang mysql>create table t7(name varchar(20),birthday date,check_sc timestamp);
root@sanchuang mysql>desc t7;
+----------+-------------+------+-----+-------------------+-----------------------------+
| Field    | Type        | Null | Key | Default           | Extra                       |
+----------+-------------+------+-----+-------------------+-----------------------------+
| name     | varchar(20) | YES  |     | NULL              |                             |
| birthday | date        | YES  |     | NULL              |                             |
| check_sc | timestamp   | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+----------+-------------+------+-----+-------------------+-----------------------------+
3 rows in set (0.00 sec)root@sanchuang mysql>insert into t7(name,birthday,check_sc) values('cali','1984-10-01',now());
root@sanchuang mysql>select * from t7;
+------+------------+---------------------+
| name | birthday   | check_sc            |
+------+------------+---------------------+
| cali | 1984-10-01 | 2021-02-15 14:40:52 |
+------+------------+---------------------+
1 row in set (0.00 sec)
root@sanchuang mysql>insert into t7(name,birthday,check_sc) values('rose','1984-10-01','2038-1-1 12:22:22');
#示例:now()函数  获取当前时间
root@(none) mysql>select now();

字符串类型

https://www.runoob.com/mysql/mysql-data-types.html

字符串charvarchartextblob       二进制的文本tinyblobMEDIUMBLOBLONGBLOBblobenum        枚举set           集合binary和varbinary
一个英文字母占1个字节
1个汉字,如果是utf8编码,占3个字节
root@sanchuang mysql>select name,length(name),char_length(name) from t8;
+-----------+--------------+-------------------+
| name      | length(name) | char_length(name) |
+-----------+--------------+-------------------+
| feng      |            4 |                 4 |
| 冯德勇    |            9 |                 3 |
+-----------+--------------+-------------------+
2 rows in set (0.00 sec)length(name)统计字符串的存储的字节数
char_length(name)统计的是字符的个数

char和varchar有什么区别?

存储方式
char    固定长度的字符串类型 character 字符 --> 在存储的时候,不够固定长度,就在前面填充空格,达到固定长度'feng' 但是我的表结构里的长度是30,在存储feng字符串的时候,会在前面填充26个空格来达到30个字符的长度varchar 可变长的字符串类型  variable character 'feng' 我的表结构里的长度是30,但是只是存储feng这4个字符,不填充空格char比varchar在长度没有达到规定的时候,更加消除磁盘空间些。如果达到了规定长度,varchar要比char多一个字节的存储空间虽然VARCHAR数据类型可以节省存储空间,提高数据处理的效率。但是其可变长度带来的一些负面效应,有时候会抵消其带来的优势。char存储定长数据很方便,char字段上的索引效率很高。长度方面char 最大长度255  varchar 最大长度是65,535检索的方式不同一个长度CHAR列被固定在创建表声明的长度。长度可以是0到255之间的任何值。CHAR 存储值时,将在它们的右边填充空格以达到指定的长度。当CHAR被检索到的值,拖尾的空格被删除
Value CHAR(4) Storage Required VARCHAR(4) Storage Required
‘’ ’    ’ 4 bytes ‘’ 1 byte
‘ab’ 'ab  ’ 4 bytes ‘ab’ 3 bytes
‘abcd’ ‘abcd’ 4 bytes ‘abcd’ 5 bytes
‘abcdefgh’ ‘abcd’ 4 bytes ‘abcd’ 5 bytes

枚举类型 ENUM

CREATE TABLE shirts (
name VARCHAR(40),
size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
);INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), ('t-shirt','medium'), ('polo shirt','small');

SET类型

集合类型:插入数据的时候,必须是集合里有的内容,如果没有,就会报错,不能插入,而且插入重复的数据,只显示一个
root@sanchuang mysql>CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));root@sanchuang mysql>INSERT INTO myset (col) VALUES-> ('a,d'), ('d,a'), ('a,d,a'), ('a,d,d'), ('d,a,d');root@sanchuang mysql>select * from myset;
+------+
| col  |
+------+
| a,d  |
| a,d  |
| a,d  |
| a,d  |
| a,d  |
+------+
5 rows in set (0.00 sec)

如何知道一张表的结构?

1 .desc t1
2 .show create table t1

创建表的语法

#示例:if not exists
如果要创建的表已经存在,强制不显示错误消息root@sanchuang mysql>create table if not exists sanchuang.chenpeng(id int primary key,name varchar(10) not null);
root@sanchuang mysql>desc chenpeng;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(11)     | NO   | PRI | NULL    |       |
| name  | varchar(10) | NO   |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
#示例:查看警告信息
root@sanchuang mysql>show warnings;
show命令汇总:
1 .show databases;
2 .show tables;
3 .show variables;
4 .show processlist;        #注:查看哪些人链过来
5 .show create table t1
6 .show warnings;

字段属性

约束:对某个字段里的内容进行限制
添加数据类型选项unsigned            无符号整数signed             有符号整数not null           不能为空primary key         等同于not null+unique主键   不允许为空,而且也不需要重复zerofill           填充0如果声明了zerofill,该列会自动设为unsignedauto_increment       自增default               默认值comment              注释sqlyog查看存储引擎              engine字符集unique             唯一性允许为nullforeign keys      外键
---------------------------------------------------------------------------------------------------------------------------------
#示例:zerofill  填充0
如果声明了zerofill,该列会自动设为unsigned
root@sanchuang mysql>create table zhangjie(id int(5) zerofill);
root@sanchuang mysql>desc zhangjie;
+-------+--------------------------+------+-----+---------+-------+
| Field | Type                     | Null | Key | Default | Extra |
+-------+--------------------------+------+-----+---------+-------+
| id    | int(5) unsigned zerofill | YES  |     | NULL    |       |
+-------+--------------------------+------+-----+---------+-------+
1 row in set (0.00 sec)
root@sanchuang mysql>insert into zhangjie(id) values(1),(12),(123);
root@sanchuang mysql>select * from zhangjie;
+-------+
| id    |
+-------+
| 00001 |
| 00012 |
| 00123 |
+-------+
3 rows in set (0.00 sec)---------------------------------------------------------------------------------------------------------------------------------
#示例:auto_increment 自增
int不指定长度 默认长度是11 有符号,放10位
root@sanchuang mysql>create table city_name(id int unsigned auto_increment primary key,name varchar(20) not null);
root@sanchuang mysql>desc city_name;
+-------+------------------+------+-----+---------+----------------+
| Field | Type             | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20)      | NO   |     | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
root@sanchuang mysql>create table city_name2(id int auto_increment primary key,name varchar(20) not null);
root@sanchuang mysql>desc city_name2;               #注:int不指定长度 默认长度是11,放10位
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | NO   |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)#注:存放电话号码 字段使用 字符串类型 varchar;不能用int类型
root@sanchuang mysql>create table city_name4(id int(20) auto_increment primary key,name varchar(20) not null);
root@sanchuang mysql>insert into city_name4(id,name) values(1,'cali');
root@sanchuang mysql>insert into city_name4(name) values('tom');
root@sanchuang mysql>insert into city_name4(name) values('jack');
root@sanchuang mysql>select * from city_name4;
+----+------+
| id | name |
+----+------+
|  1 | cali |
|  2 | tom  |
|  3 | jack |
+----+------+
3 rows in set (0.00 sec)---------------------------------------------------------------------------------------------------------------------------------
#示例:设置起始值 每次加几
root@sanchuang mysql>SET @@auto_increment_offset = 10,  -- 起始值-> @@auto_increment_increment=10;  -- 每次加几---------------------------------------------------------------------------------------------------------------------------------
#示例:定义变量
root@sanchuang mysql>set @sg='dengjizhou';          #注:定义变量sg赋值dengjizhou
root@sanchuang mysql>insert into city_name4(name) values(@sg); #注:引用sg的值插入到表里---------------------------------------------------------------------------------------------------------------------------------
#示例:primary key 主键不允许重复
root@sanchuang mysql>insert into city_name4(id,name) values(7,'rose');
ERROR 1062 (23000): Duplicate entry '7' for key 'PRIMARY'Duplicate 重复的
entry 条目(记录) --> 一行数据就是一个条目,也是一个记录---------------------------------------------------------------------------------------------------------------------------------
#示例:default 默认值
列一旦定义了默认值,当插入一个新行到表中并且没有给该列明确赋值时,它将自动得到默认值
root@sanchuang mysql>create table stu1(id int primary key auto_increment,-> name varchar(10) not null,-> grade int(3) unsigned default 0-> );
root@sanchuang mysql>insert into stu1(name,grade) values('cali',80);
root@sanchuang mysql>insert into stu1(name) values('dengjizhou');---------------------------------------------------------------------------------------------------------------------------------
#示例:comment 注释
comment 用来给列/表 添加注释。最多255个字符。注释会保存到数据字典中
#示例:给列加注释
root@sanchuang mysql>create table stu2(id int primary key comment '编号',name varchar(20) not null comment '姓名');
#示例:给表加注释
root@sanchuang mysql>create table mycomm(-> column_a int-> ) comment '测试表';#注:desc stu2;看不到comment 内动;show create table stu2;可以看见使用的语句
#注:select查询时也看不到啊comment---------------------------------------------------------------------------------------------------------------------------------
#示例:unique 唯一性
root@sanchuang mysql>create table cPen3(id int(4) primary key,name varchar(10) unique);
root@sanchuang mysql>desc cPen3;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(4)      | NO   | PRI | NULL    |       |
| name  | varchar(10) | YES  | UNI | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)唯一性约束的可以有多个null值索引:是一种数据,用来帮助查询,提升查询的速度。主键索引唯一索引

示例:foreign key 外键

外键的优势是什么? --> 作用是什么?
外键的好处:直接引用别的表里的字段,自己的表里就不需要再创建相同的数据了,可以避免数据的冗余父子表:外键所在的表叫做子表,外键所引用的主键所在的表叫做父表外键:其实在另外表里是主键A表里的主键被引用到B表里做一个字段,这个字段就是B表里的外键
---------------------------------------------------------------------------------------------------------------------------------
#示例:foreign key  外键
创建父表  部门表
CREATE TABLE dept(deptid INTEGER,dname VARCHAR(20),CONSTRAINT dept_deptid_pk PRIMARY KEY(deptid)
);INSERT INTO dept(deptid,dname) VALUES(10,'市场部');
INSERT INTO dept(deptid,dname) VALUES(20,'销售部');----------------------------------------------------------------------------
创建子表  员工表
CREATE TABLE emp(id INTEGER,NAME VARCHAR(20),deptid INTEGER,PRIMARY KEY(id), FOREIGN KEY(deptid) REFERENCES dept(deptid)
);INSERT INTO emp(id,NAME,deptid) VALUES(1,'张三',10);
INSERT INTO emp(id,NAME,deptid) VALUES(2,'李四',10); ----------------------------------------------------------------------------
外键查询
root@chenpeng4 mysql>select name,dname from dept,emp where dept.deptid = emp.deptid;
+--------+-----------+
| name   | dname     |
+--------+-----------+
| 张三   | 市场部    |
| 李四   | 市场部    |
| 王五   | dev       |
+--------+-----------+
#注:一旦建立主外键后,主表和子表 都受到约束
#注:插入受外键约束
root@chenpeng2 mysql>INSERT INTO emp(id,NAME,deptid) VALUES(3,'李五',30);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails
#注:删除受外键约束
root@chenpeng2 mysql>DELETE FROM dept WHERE deptid = 10;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails
ON DELETE CASCADE    级联删除。当删除当删除父表中的行时,如果子表中有依赖于被删除父行的子行存在,那么连同子行一起删除
ON DELETE SET NULL  当删除当删除父表中的行时,如果子表中有依赖于被删除父行的子行存在,那么不删除中,而是将子行的外键列设置为null
CREATE TABLE emp(id INTEGER,NAME VARCHAR(20),deptid INTEGER,CONSTRAINT emp_id_pk PRIMARY KEY(id), CONSTRAINT emp_deptid_fk FOREIGN KEY(deptid) REFERENCES dept(deptid)ON DELETE SET NULL
);
information_schema:相当于是mysql里的统计局(中央情报局) --> 里面存放的是MySQL运行起来后内部的可以查询的数据 --> MySQL内部管理需要的信息information_schema.TABLE_CONSTRAINTS --> 存放数据字典的库 --> 对mysql进程的正常运转提供依据。
#示例:2种设置主键方法
1 .primary key直接放到后面作为属性
2 .使用函数primary key()
root@sanchuang mysql>create table stu2(id int primary key comment '编号',name varchar(20) not null comment '姓名');
root@sanchuang mysql>create table stu3(id int comment '编号',name varchar(20) not null comment '姓名',primary key(id));

存储引擎

什么是存储引擎?mysql里用来存取数据的一个模块,负责将mysql在内存里的数据写到磁盘,同时也负责将磁盘的里数据读取到内存。有哪些存储引擎?
InnoDB  MyISAM  MEMORY  BLACKHOLE  CSV存储引擎和表绑定
memory   数据保存在内存里,特别适用于适用临时表的场景
csv     CSV storage engine  以逗号作为分割的文件数据分析  数据处理
blackhole解决了主从复制架构里,让很多的从服务器直接到配置了blackhole存储引擎的master上拿二进制日志,让最上层的master的负载降低其实就是帮忙主从架构传递二进制日志,自己不执行二进制日志,只是传递#注:MEMORY存储引擎的特点:尽可能把数据保存到内存当中,不写在内存里。特别适用于临时表。方向:大数据分析、统计;临时使用表,只需要结果
#示例:创建临时表
root@sanchuang 13:19  mysql>create temporary table chenpeng(id int);
root@sanchuang 13:20  mysql>insert into chenpeng(id) values(1);
#注:show tables;查看不了。其他用户登录 查看不到。每个人连过来会产生一个会话,操作时产生一堆事务,事务隔离,落盘到磁盘。临时表只在内存中,不落盘,不持久化(内存到磁盘,不丢失)
blackhole存储引擎 适用场景在主从之间添加一个分布式master,配置blackhole存储引擎,他起到一个中继的作用,他接收数据但丢其他而不是存储,只是会把master的二进制日志供下层的slave来读取。
blackhole存储引擎的特点:解决了主从复制架构里,让很多的从服务器直接到配置了blackhole存储引擎的master上拿二进制日志,让最上层的master的负载降低其实就是帮忙主从架构传递二进制日志,自己不执行二进制日志,只是传递
Supports transactions, row-level locking, and foreign keys
InnoDB特点:事务:transactions行锁:row-level locking 给表里的一行数据加锁外键:foreign keys#注:事务 解决大并发情况下数据不乱的问题
memory存储引擎   数据保存在内存里,特别适用于适用临时表的场景
csv存储引擎CSV storage engine  以逗号作为分割的文件数据分析  数据处理
[root@mysql_compile log]# cat /etc/passwd|awk -F: 'BEGIN{OFS=",";print "username,uid,gid,shell"}{print $1,$3,$4,$7}' >user.csv
[root@mysql_compile log]# cat user.csv
username,uid,gid,shell
root,0,0,/bin/bash
bin,1,1,/sbin/nologinBEGIN{命令}      是awk命令首先执行的命令,而且只是执行一次
OFS=","      指定输出分隔符,默认是空格
;           命令连接符号
BEGIN{命令}       最后执行
print "username,uid,gid,shell"    输出字符串
show create table stu2; 可以查看使用哪种存储引擎
show engines;           查看有哪些存储引擎 和 默认使用的存储引擎

字符集

示例:建表时指定字符集
root@sanchuang mysql>create table t11(id int(10) primary key auto_increment,name varchar(20) not null default 'jack') default charset='utf8';
示例:建库时指定字符集
root@(none) mysql>create databases cPen2 default charset='utf8';
root@(none) mysql>show create database cPen2;
utf8编码:1个英文字母占1个字节1个汉字占3个字节
字符集会继承库 --> 表 --> 字段创建表的时候,varchar和char、text文本的数据类型 --> 可以去指定列的字段类型列对应的字段的字符集优先级最高rpm方式安装的mysql默认的字符集是latin1
编译安装的时候因为指定了字符集为utf8,所以默认的字符集是utf8COLLATION 校对规则、排序规则utf8_general_ci  case ignore --> 排序的时候,不区分大小写
---------------------------------------------------------------------------------------------------------------------------------
#示例:查看mysql里支持哪些字符集
root@sanchuang mysql>show character set;
#示例:查看当前正在用哪些字符集
root@sanchuang mysql>show variables like '%char%';---------------------------------------------------------------------------------------------------------------------------------
#示例:length(),char_length()
root@sanchuang mysql>select name,length(name),char_length(name) from t8;length(name)统计字符串的存储的字节数
char_length(name)统计的是字符的个数
字符集会继承库 --> 表 --> 字段
#示例:知道表的字符集
root@sanchuang mysql>show create table stu_info;
#示例:知道库的字符集
root@(none) mysql>show create database cPen;
+----------+-----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+-----------------------------------------------------------------+
| cPen     | CREATE DATABASE `cPen` /*!40100 DEFAULT CHARACTER SET latin1 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.19 sec)
#示例:查看mysql版本
[root@mysql_rpm ~]# mysql -V

创建新表

如何根据一个已经存在的表去创建一个新的表,表结构和数据都一模一样?

语法1:CREATE TABLE new_tbl LIKE orig_tbl;
这种语法,将从源表复制列名、数据类型、大小、非空约束以及索引。而表的内容以及其它约束不会复制,新表是一张空表。
例:
CREATE TABLE copy_teams LIKE teams;语法2:CREATE TABLE new_tbl [AS] SELECT {*|column,...} FROM orig_tbl;
新表的结构由select列表决定。同时把查询返回的结果集中的行插入到目标表中。这种语法同样只能把非空约束带入到新表中。也不会复制索引 (主键、外键等)
例:
CREATE  TABLE copy_teams2 AS  SELECT * FROM teams;
#示例:根据已有的表来创建新表
root@chenpeng4 mysql>create table new_student like student;
root@chenpeng4 mysql>create table student2 as select * from student;
#示例:创建teams表的一个临时副本,并且给这个表分配相同的名字
root@chenpeng4 mysql>create temporary table teams-> as select * from teams;
好处:临时使用,用户一断开连接,临时表的空间就会释放
#示例:去掉表中重复数据 (去重) --> 赋给新的临时表
root@chenpeng4 mysql>select distinct * from student2;
root@chenpeng4 mysql>create temporary table temp_student as select distinct * from student2;

数据库建模

设计数据模型

===============================================================================
原方案===============================================================================
选课系统学号    名字    班级    课程编号    名字    讲师    教室    学分    成绩
1   李三  某学院某专业某届几班  1       云计算 ***     ***     4
1   李三  某学院某专业某届几班  2       ***     ***     ***     *
1   李三  ***名字、班级  大量重复数据
计算机与科学专业  计科专业  会选错  数据不统一
手机号  同个同学填多个---------------------------------------------------------------------------------------------------------------------------------
问题
1 .大量的重复数据
2 .数据不统一---------------------------------------------------------------------------------------------------------------------------------
问题
1 .统计一下计科专业选课情况 (有人填计算机用于计算科学)
2 .手机号码修改
3 .查看成绩,很多数据被迫看===============================================================================
数据库系统最核心的保证数据的一致性
===============================================================================
第二种方案===============================================================================
表 -- 学生信息
学号    手机号
李三---------------------------------------------------------------------------------------------------------------------------------
表 -- 课程信息
课程编号---------------------------------------------------------------------------------------------------------------------------------
表 -- 讲师---------------------------------------------------------------------------------------------------------------------------------
表 -- 教室
教室编号---------------------------------------------------------------------------------------------------------------------------------
表 -- 专业---------------------------------------------------------------------------------------------------------------------------------
表 -- 选课表
专业编号列    学号列    课程编号列    讲师编号列    教室编号    成绩===============================================================================
使用第二种方案来设计一套系统,满足范式假设不满足范式:数据冗余、表格很庞大(列非常多)选课表
学生信息  课程信息  讲师  成绩多个列来表示对象 --> 学生、课程、讲师 --> 把学生、课程、讲师 单独拿出来,建表---------------------------------------------------------------------------------------------------------------------------------
学生表  专业表  教室表  课程表  讲师表  成绩表---------------------------------------------------------------------------------------------------------------------------------
学生表学号  名字  手机号  家庭住址  班级家庭住址表 --> 一堆表 --> 多个列 (考虑业务需求)省、市、县、乡镇、村不拆的情况:山东省济南市什么区什么路  山东济南什么路 --> 地址准确,但是统计时是2个地方;系统拆出来很多  不便于将来统计如果将来没有统计的需求,那么可以不拆如果有统计的需求,需要拆--> 省  市  地址(不细分、考虑业务需求)班级 --> 单独拿一张表学校  学院  届  班以上是设计数据模型

PowerDesigner 建模工具

===============================================================================
步骤:create model -->步骤:Categories --> Information --> Conceptual Data (概念数据) --> Model name:*** -->即选择cdm步骤:工作空间 --> 选课系统 --> Diagram_1 -->Entity --> 拉过来===============================================================================
entity实体,一个实体就是一个表格、一个表---------------------------------------------------------------------------------------------------------------------------------
表格1 .表格名字2 .列---------------------------------------------------------------------------------------------------------------------------------
设计标准1 .每一个表都有一个主键2 .列值尽量不要为空
---------------------------------------------------------------------------------------------------------------------------------
学生信息选课学生信息  课程信息  讲师信息步骤:Relationship(右边工具栏) --> 拖过来 1连3  3拖1 (效果:选课里 有3个信息)---------------------------------------------------------------------------------------------------------------------------------
步骤:双击选课 --> Attributes--> Name:成绩  Num  5  2---------------------------------------------------------------------------------------------------------------------------------
步骤:双击学生信息 --> Attributes--> Name:学号  Num  10  P (唯一标识列 primary key) --> 每一个学号代表一个学生--> Name:名字  Varchar  20  M (必填、不能为空)--> Name:性别  Varchar  1   M--> Name:手机号码  Num 10  M--> Name:专业  看是否有统计需求,判断是否有---------------------------------------------------------------------------------------------------------------------------------
步骤:添加entity  专业信息--> Relationship 连过来 --> 学生信息效果:学生信息里就有专业信息了步骤:添加entity  省份信息--> 同上Relationship --> 学生信息
步骤:添加entity  地级市信息信息--> 同上Relationship --> 学生信息#注:relationship  A需要有B的信息,B拖到A这边来---------------------------------------------------------------------------------------------------------------------------------
步骤:双击学生信息 --> Attributes--Name:具体地址  Varchar  100  M===============================================================================
省份信息
步骤:省份信息省份编号  Num  6  P省份名字  Varchar  50  M---------------------------------------------------------------------------------------------------------------------------------
地级市信息
步骤:地级市信息地级市编号  Num  6  P地级市名字  Varchar  100  M===============================================================================
专业信息
步骤:专业信息专业编号  Num  10  P专业名字  Varchar  100  M===============================================================================
课程信息
步骤:课程信息课程编号  Num  10  P课程名字  Varchar  100  M===============================================================================
讲师信息
步骤:讲师信息讲师编号  Num  10  P讲师名字  Varchar  100  M讲师手机号码  Num  11  M###############################################################################
步骤:将系统部署到MySQL数据库上上面菜单栏 --> 工具 (第2个) --> Generate Physical Data Model--> DMS: MySQL 5.0 (选中) --> 确定结果:报警  缺少identifiers  enitity’选课’  不管它  --> 生成了原来的是cdm;生成的新的文件是 pdm###############################################################################
步骤双击 新生成的 Diagram_1 (pdm文件)选课 --> Columns -->学号、讲师编号、课程编号 P  (3个合起来作为主键) --> 把刚才的警报解决了--> 唯一标识:一个学生选某个老师的某门课  只能选一个###############################################################################
步骤上面的菜单栏 数据库 --> Generate Database 选中DBMS: MySQL 5.0 --> 确定--> 选课.sql脚本 --> edit 里面的内容 是SQL语句将来把这些语句往数据库里一跑,表就全出来了 --> 设计完以后 直接可以用工具好处:设计系统时,不需要考虑建表语句,画图就出来了PowerDesigner建模工具

宿舍管理系统

列需求
需求分析 --> 设计使用者1 .宿舍管理员2 .学生功能的分析宿舍管理员1 .学生信息的录入和维护 --> 为了满足这个功能,需要设计那些表格?学生信息(数据库方面) ;Java工程师 需要写很多页面:查询、录入、更改考虑:为了满足这个功能,只需要在数据库里存什么2 .物品信息的录入和维护物品信息3 .物品的发放物品发放登记表考虑:为了满足这个功能,只需要在数据库里存什么4 .物品的回收物品回收登记表5 .物品的维修物品维修记录表6 .卫生检查信息的录入和维护卫生检查信息记录表7 .值班信息的录入和维护值班信息记录表8 .宿舍管理员信息的维护和录入 / 宿舍管理员注册、登录宿舍管理员信息计算机系统  是用来办公的,存到数据库里面去 (无纸化办公)学生1 .学生信息的(注册和)登录:用户名就是本人的学号,密码就是身份证最后6位2 .学生领用物品的查询和申请3 .学生报修物品
学校拨款100万 --> 建设宿舍管理系统 (需求) --> 设计者 (程序员)===============================================================================步骤1:买2台服务器 (硬件) --> 装操作系统Linux数据库服务器 (database server)应用服务器 (application server)应用服务器的软件 tomcat  weblogic  jboss  webspheretomcat应用服务器     6~10万数据库服务器 10~15万数据库服务器 (database server) Linux --> 装数据库软件 mysql
基础架构搭了===============================================================================步骤2:请2个工程师数据库工程师:做好需求分析,使用PowerDesigner设计一套数据库系统,然后部署到MySQL里面去本质:建一堆表Java工程师:写类似网站的东西 Java代码,程序部署到tomcat上面去网络工程师:中间应用服务器和数据库服务器 需要通过网络连接起来。买几台交换机、路由器
===============================================================================
应用服务器Java代码Tomcat (应用服务器软件 software)LinuxHardware 硬件数据库服务器表 --> 录入/查询MysqlLinuxHardware宿舍管理员 --> 通过电脑 打开网站 --> 弹出窗口 注册、登录 --> 登录后 打开页面;小按钮,各种窗口 --> 学生信息录入 --> 提交 --> 录入的学生信息存到表里去 (对数据库的操作:管理员通过应用程序去操作表)--> 查询 --> 把数据从表中取出来 --> 通过Java展示Java工程师的Java代码做的事:1 .展现窗口 (提供友好界面) --> 导航作用2 .把信息存入数据库3 .把信息从数据库里取出4 .修改数据库里的表

06_MySQL笔记-数据类型-字段属性-存储引擎-字符集-创建新表-数据库建模相关推荐

  1. PHP学习笔记 第八讲 Mysql.简介和创建新的数据库

    八.Mysql.简介和创建新的数据库 1.mysql简介与概要 mysql是一个小型关系型数据管理系统,开发者为瑞典mysqlab公司现在已经被sun公司收购 1.可以处理拥有上千万条记录的大型数据 ...

  2. sequelize 增加数据库字段_使用Sequelize动态创建新表

    我正在实施将数据保存到数据库的nodejs应用程序.应用程序从/ add接收post请求,它应该采用两个参数(实际数据和表名).所有表都将包含在模型文件中定义的相同字段和数据类型. 表名称表示将保存数 ...

  3. 三、mysql 存储引擎-建库建表操作

    目录 知识点1:mysql里面的数据库和表都以文件形式存储在linux系统里面 我们在mysql里面创建数据库和表以后,也会生成对应的目录和文件 知识点2: 存储引擎是什么? innodb 是MYSQ ...

  4. 《地理信息系统基础实例操作100例》-实验15 设置字段属性域(无法创建要素问题)

    <地理信息系统基础实例操作100例>-实验15 设置字段属性域(无法创建要素问题) 零.观前须知 一.基本流程 二.所遇问题 三.解决方法(之一) (一)ArcCatalog操作 (二)A ...

  5. MySQL学习笔记(二):MyISAM 存储引擎

    MyISAM 存储引擎 MyISAM 基于旧的 (不再可用) ISAM 存储引擎, 但有许多有用的扩展. 每个 MyISAM 表都存储在三个文件中的磁盘上.这些文件具有以表名开头的名称, 并具有用于指 ...

  6. mysql 批量修改数据库存储引擎_mysql批量修改表存储引擎

    参数列表: [db] [db_host] [db_user] [db_passwd] #! /bin/bash if [ $1 ] then echo database $1; else echo ' ...

  7. mysql存储过程更新数据后返回一个字段_史上最全存储引擎、索引使用及SQL优化的实践...

    整个MySQL Server由以下组成 : Connection Pool :连接池组件 Management Services & Utilities :管理服务和工具组件 SQL Inte ...

  8. 【超简单】MySQL存储引擎的选择与配置

    [超简单]MySQL存储引擎的选择与配置 存储引擎简介 MySQL中的数据用各种不同的技术存储在文件(或内存)中.每一种技术都使用不同的存储机构,索引技巧,锁定水平并且最终提供广泛的不同的功能和能力. ...

  9. mysql 存储引擎作用_MySQL常用存储引擎功能与用法详解

    MySQL存储引擎主要有两大类: 1. 事务安全表:InnoDB.BDB. 2. 非事务安全表:MyISAM.MEMORY.MERGE.EXAMPLE.NDB Cluster.ARCHIVE.CSV. ...

最新文章

  1. Apache学习路线
  2. Py入门第二天 ,喜欢的老铁可以关注一波 ,没准儿哪天就不更了。。。
  3. 四种参数传递的形式——URL,超链接,js,form表单
  4. #35 string(缩点+动态规划)
  5. fastai学习:06_multicat Questionnarie
  6. Redis面试 - 生产环境中的 redis 是怎么部署的?
  7. sharepoint webpart
  8. python核心编程--笔记(不定时跟新)(转)
  9. 自动驾驶的Pipline -- 如何打造自动驾驶的数据闭环?(上)
  10. Html光标跟随粒子特效
  11. 微信小程序开发VIP商城项目
  12. iMeta: 整合宏组学重新认识生命和环境科学
  13. python爬虫爬取今日头条_爬取今日头条头条号文章数据
  14. [bzoj1233]干草堆tower
  15. JAVA计算:用 100 元钱买 100 支笔,其中钢笔 3 元 / 支,圆珠笔 2 元 / 支,铅笔 0.5 元 / 支,问钢笔、圆珠笔和铅笔可以各买多少支 ?
  16. python - 输入某年某月某日,判断这一天是这一年的第几天?
  17. VS+OpenCV+VC超详细的配置教程
  18. 2. vibrate-arch
  19. Java 获取对象占用内存大小
  20. 郑州计算机学校排名2019年排行榜,2021年郑州大学最新排名 全国最新排名

热门文章

  1. 电气设备漏电危害性及漏电保护方式
  2. 无刷直流电机的结构及驱动方式
  3. Matlab自动导出论文插图
  4. 今日分享五款有意思的app 让你的手机好用到极致!
  5. python “~“ 的含义
  6. 油应该怎么吃 关于吃油的学问
  7. Wondershare Recoverit for Mac(万兴数据恢复软件)
  8. SpringBoot个人博客从无到有项目搭建——实战综合介绍
  9. Windows10安装rdkit
  10. 网易刷屏案例暗藏的内容运营技能!