数据库操作

本文详细介绍了数据库的创建、删除、使用以及各种数据类型的说明,包括数值、字符串和时间日期类型。此外,还讲解了数据库引擎InnoDB和MyISAM的区别,并提供了增删改查等DML操作示例。在数据库设计中强调了避免数据冗余和保证完整性的重要性,给出了从需求分析到实际表结构设计的步骤。
摘要由CSDN通过智能技术生成

创建数据库:
create database 【if not exists】 westos
删除数据库:
drop database [if exists] westos
使用数据库:
USE school
查看数据库:
SHOW DATABASES

数值:
tinyint smallint mediumint int bigint float double decimal
字符串:
char varchar tinytext text
时间日期:
date 年月日
time 时分秒
datetime 年月日时分秒
timestamp 时间戳 1970.1.1到现在的毫秒数
year 年份

null:没有值

unsigned:无符号整数,该列不能为负
zerofill:不足位数用0填充,比如005
自增:自动在上一条记录基础+1;设计唯一主键index,必须是整数类型;可以自定义设计主键自增的起始值和步长;
非空 not null 不赋值就报错,默认为null;
默认:设置默认的值 ;值如果不设定会有默认值;

创建表:
– AUTO_INCREMENT自增 字符串需要单引号
– 所有语句后面加,,最后一个不用
–PRIMARY KEY主键

CREATE TABLE IF NOT EXISTS `student`(
  `id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
  `name` VARCHAR(30) NOT NULL DEFAULT'匿名' COMMENT'姓名',
  `pwd` VARCHAR(20) NOT NULL DEFAULT'123456' COMMENT'密码',
  `sex` VARCHAR(2) NOT NULL DEFAULT'女' COMMENT '性别',
  `birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
  `address` VARCHAR(100) DEFAULT NULL COMMENT'家庭住址',
  `email` VARCHAR(50) DEFAULT NULL COMMENT'邮箱',
  PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

格式:
字段名列类型 +属性+索引+注释

SHOW CREATE DATABASE school – 查看创建数据库的语句
SHOW CREATE TABLE student – 查看student数据表对的的定义语句
DESC student – 显示表结构

innodeb 默认使用
myisam 早些年使用的
区别: innodeb 默认使用 ===========myisam 早些年使用的
事务支持:支持。。。。。。。。。。。。。。。不支持
数据行锁定 :支持。。。。。。。。。。。。。不支持
外键约束: 支持 。。。。。。。。。。。。。。不支持
全文索引:不支持。。。。。。。。。。。。。。支持
表空间大小: 较大为后者俩倍。。。。。。。。较小

常规使用操作:
myisam:节约空间速度快
innodb:安全性高 事务处理,多表多用户操作
物理空间位置:
都在data目录下; 本质还是文件存储;

mysql引擎在物理文件区别:
innodb: 在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
myisam:*.frm 表结构定义文件 *.MYD数据文件 *.MYL索引文件index

CHARSET=utf8 不用这个默认编码不支持中文

– 修改表名:
ALTER TABLE oldname RENAME AS newname
– 增加表字段
ALTER TABLE student ADD age INT (11)

– 修改约束
ALTER TABLE student MODIFY age VARCHAR(11)
– 字段重命名
ALTER TABLE student CHANGE age age1 INT(1)
– 删除表字段
ALTER TABLE student DROP age1
– 删除表
DROP TABLE IF EXISTS student

– 创建表后,添加外表约束:
ALTER TABLE 表 ADD CONSTRAINT FK_字段名 FOREIGN KEY (作为外键的字段) REFERENCES 哪个表(哪个字段)

DML语言(重点)
数据库:存储数据

insert into 表名(字段名1,2,3)values (值1),(2),(3)
删:
delete from 表名 where
truncate 表 – 清空但不删除表结构
改:
update 表名 set 字段 = 新名字 where id = 几号
查:
select 字段1 as 别名,字段2 as 别名 from 表名 as 别名

select distinct 字段名 from 表名 发现重复数据。去重

select完整语法:
select 。。 。。。 需要查询的信息
from 。。。 。。 一个主要查询表(包含大部分信息)
left/right/ inner join 表 on 某条件 。。。。 联合查询
where 。。。。。。。。。。。。指定结果需要满足的条件
group by 。。。。。。。。。。指定结果按照哪几个字段来分组
having 。。。。。。。。。。过滤分组的记录必须满足的次要条件
order by 。。。。。。。。。指定查询记录按一个或多个条件排序
limit a,b。。。。指定查询记录从a开始,一共查询b条记录

如何设计一个数据库:
数据冗余,浪费空间;
数据插入删除都麻烦(屏蔽使用物理外键);
程序性能差;
良好:
节省内存空间;
保证数据库完整性;
方便我们开发系统;

步骤:
分析需求:分析业务和需要处理的数据库需求;
概要设计:设计关系图E-R图;
例:
个人博客:
收集信息,分析需求:
用户表(用户登陆注销,用户个人信息,写博客,创建分类)
分类表(文章分类,谁创建的)
文章表(文章信息)
友情链接(链接信息)
自定义表(系统信息,某个关键字,或者一些主字段) key:value
标识实体(把需求落地到字段):

查询一个里面所有表的信息:
use information_scheam;
select * from tables where table_schema = “db_name”;
查询单个表的信息:

use information_scheam;
select * from tables where table_schema = “db_name” and table_name = “table_name1”;

查询一张表的所有字段基本信息:
use db_name;
show full columns from table_name1;
show full columns from table_name2;
一些基础:

创建表

create table book(
id int(11) primary key,
title varchar(50) comment ‘书名’,
author varchar(32) comment ‘作者’,
price int(8) comment ‘价格’
);

修改表备注信息

alter table student comment ‘书籍表’;

修改表字段长度

alter table book modify column author varchar(50);

修改表字段备注信息

alter table book modify column author varchar(50) comment ‘作者姓名’;

给表增加新字段

alter table book add publisher varchar(100) comment ‘出版社’;

在指定列后面增加新字段

alter table book add publisher varchar(200) comment ‘出版社’ after author;

删除表字段

alter table book drop column price;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值