数据库1~3之1

mysql数据库

1.mysql服务端,它用来处理数据维护,保存磁盘

2.mysql客户端,CRUD数据库的增删改查

mysql数据保存位置

在MySQL的配置文件myini中会进行默认配置

在这里插入图片描述

 SQL语句

定义

结构化查询语句(Structured Query Laguge)简称SQL语言,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于保存数据以及查询,更新和管理关系型数据库系统,同时也是数据脚本文件的扩展名。

分类

DML(Data Manipulation Language)数据操作语言

如:insert,delete,update,select(插入,查询,修改,检索)简称CRUD操作,新增create,查询Retrieve,修改Update,删除Delect

DDL(Date Definition Language)数据库定义语言

如:create,table等

DCL(Date Control Lanfuage)数据库控制语言

如;grant,deny,revoke等,只有管理员才有相对应的权限

DQL(Date Query Language)数据库查询语言

如Lselect等

注意:SQL不区分大小写

数据库常用操作

新建数据库

创建数据库,数据库名称“cgb2108”

create database cgb2108 defaut charater set utf8;

删除数据库

删除名称是cgb2108的数据库

drom dabatase cgb2108;

查看所有数据库

查看所有数据库

drom databases;

表的常用操作

使用数据库

use cgb2108;

表设计

在这里插入图片描述

 创建表

创建td_door表,有id,td_name,tel字段

create table td_door(

id int primary key auto_increment,

door_name varchar(100),

tel varchar(50)

);

修改表

添加列

alter table td_door add column money NUMERIC(7,2)

删除表

删除名称为td_door的表

drom table td_door;

查看所有表

查看所有表

show table;

查看表结构/设计表

查看td_door表结构

desc td_door;

表记录的常用操作

插入记录

向td_door表中插入两条记录

insert into td_door values(null,'变形金刚',666);

insert into td_door values(null,'变形金刚2',666);

查询记录

查询td_door表中的所有记录

select * froom td_door;

修改记录

修改td_door表中id为1的记录

update td_door set tel=111 where id=1;

删除记录

删除td_door表中id为2的数据

Delete from td_door where id=2;

排序

把td_door表记录中按照te排序

select * from td_door order by tel desc; 

纪录总数

查询td_door表中总记录数

select count(*) from td_door';

数据类型

命名规则

字段必须以字母开头,尽力不要使用拼音

长度不能超过30哥字符(不同数据库,不同版本会有不同)

不能使用MYSQL数据库保留字 如:where,order, group

只能使用如下字符a~z,A~Z,0~9,$等

oracle习惯全大写:USER_NAME,mysql习惯全小写user_name

多个单词用下划线隔开,而非JAVA语言的驼峰规则

字符

char长度固定,不足使用空格填补,最多容纳2000个字符,char(11)存储abc 占11位,查询速度极快但是浪费空间

varchar变长字符串,最多容纳4000个字符,varchar(11)存储abc,只占3位。查询稍慢,但节省空间。

  • 大文本: 大量文字(不推荐使用,尽量使用varchar替代)

以utf8编码计算的话,一个汉字在u8下占3个字节

注:不同数据库版本长度限制可能会有不同

数字

  • tinyint,int整数类型
  • float,double小数类型
  • numeric(5,2) decimal(5,2)—也可以表示小数,表示总共5位,其中可以有两位小数
  • decimal和numeric表示精确的整数数字

日期

  • date 包含年月日
  • time时分秒
  • datetime包含年月日和时分秒
  • timestamp时间戳,不是日期,而是从1970年1月1日到指定日期的毫秒数

图片

  • blob 二进制数据,可以存放图片、声音,容量4g。早期有这样的设计。但其缺点非常明显,数据库庞大,备份缓慢,这些内容去备份多份价值不大。同时数据库迁移时过大,迁移时间过久。所以目前主流都不会直接存储这样的数据,而只存储其访问路径,文件则存放在磁盘上。

准备数据

部门表 dept

字段名称数据类型是否为空备注
deptnoint部门编号,PK主键
dnamevarchar(20)Y部门名称
locvarchar(13)Y部门所在地点
CREATE TABLE dept(
deptno int primary key auto_increment ,
dname VARCHAR(20),
loc VARCHAR(13)
);
INSERT INTO dept VALUES(null,'accounting','一区');
INSERT INTO dept VALUES(null,'research','二区');
INSERT INTO dept VALUES(null,'operations','二区');

员工表 emp

字段名称数据类型是否为空备注
empnoint员工编号,PK主键
enamevarchar(10)Y员工名称
jobvarchar(10)Y职位
mgrintY上级编号
hiredatedatetimeY入职时间
saldoubleY月工资
commNUMERIC(8,2)Y奖金
deptnointY所属部门 FK外键

Mysql:

CREATE TABLE emp(
empno int primary key auto_increment,
ename VARCHAR(10),
job VARCHAR(10),
mgr int,
hiredate DATE,
sal double,
comm NUMERIC(7,2),
deptno int
);
INSERT INTO emp VALUES(100,'jack','副总',NULL,'2002-05-1',90000,NULL,1);
INSERT INTO emp VALUES(200,'tony','总监',100,'2015-02-02',10000,2000,2);
INSERT INTO emp VALUES(300,'hana','经理',200,'2017-02-02',8000,1000,2);
INSERT INTO emp VALUES(400,'leo','员工',300,'2019-02-22',3000,200.12,2);
INSERT INTO emp VALUES(500,'liu','员工',300,'2019-03-19',3500,200.58,2);

字段约束

主键约束

主键约束:如果为一个列添加了主键约束,那么这个列就是主键,主键的特点是唯一且不能为空。通常情况下,每张表都会有主键。

添加主键约束,例如将id设置为主键:

主键自增策略** **当主键为数值类型时,为了方便维护,可以设置主键自增策略(auto_increment),设置了主键自增策略后,数据库会在表中保存一个AUTO_INCREMENT变量值,初始值为1,当需要id值,不需要我们指定值,由数据库负责从AUTO_INCREMENT获取一个id值,作为主键值插入到表中。而且每次用完AUTO_INCREMENT值,都会自增1. AUTO_INCREMENT=1

create table abc(
id int primary key auto_increment
);
insert into abc values(null);
insert into abc values(null);
insert into abc values(null);
select * from abc;

非空约束

非空约束:如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。

添加非空约束,例如为password添加非空约束:

create table user(
id int primary key auto_increment,
password varchar(50) not null
);
show tables;
insert into user values(null,null);//不符合非空约束
insert into user values(null,123;);//OK

唯一约束

唯一约束:如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(即不能重复),但可以为空。

添加唯一约束,例如为username添加唯一约束及非空约束:

create table test(
id int primary key auto_increment,
username varchar(50) unique--唯一约束
);
show tables;
insert into test values(null,'lisi');
insert into test values(null,'lisi');--username的值要唯一,重复会报错的
select * from test;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值