数据库整理

数据库:

是存储和管理数据的仓库 每个数据库都有一个或多个不同的API(接口)用于创建,访 问,管理,搜索和复制所保存的数据。

现在我们使用关系型数据库管理系统(RDBMS)

关系数据库管理系统( Relational Database Management System)

特点:

1.数据以表格的形式出现

2.每行为各种记录名称

3.每列为记录名称所对应的数据域

4.许多的行和列组成一张表单

5.若干的表单组成database

 

安装服务器 mysql 客户端 sqlyog

关系型数据库:都是以表格的形式取存储数据 分为:行 字节

oracle

mysql

sql server

db2

 

非关系类型:nosql

mongodb

数据库不允许相同序号录入 最终会以文件的形式存储

引擎:

可插入式引擎,不同引擎 设置存储管理不同

mysql:

默认端口号3306

默认字符集utf8

启动数据库:

如果没有默认启动 可以在计算机管理里 服务查看 右键启动,

1 :dos 命令也可以net start mysql来启动,默认自带一个客户端,直接输入密码 也可操作数据库

doc命令,mysql-uroot-p 输入密码 也可链接

或 mysql -h 输入IP地址 -uroot-p 输入密码 也可链接

2:使用MySQL Command Line Client 登录

修改root 密码的语句:

alter user root@localhost identified with mysql_native_password by '654321';

mysqladmin -uroot -p123456 password 不用进入mysql内部

 

SQL:结构化查询语言:四大块

DML:数据操作语言 ——用于操作数据库中所包含的数据

命令:INSERT, 插入

UPDATE , 修改

DELETE,删除

DDL:数据定义语言——用于创建和删除数据库对象等操作

命令: CREATE, 创建

DROP , 删除

ALTER,修改

DQL:数据查询语言——用来对数据库中的数据进行查询

命令: SELECT ,查寻

DCL:数据控制语言——用老控制数据库组件的存取许可,存取权限等

命令: GRANT, 管理 授权

COMMIT,提交

ROLLBACK,回滚

也有算数运算符 + , -, *, / , %

赋值运算符: =

逻辑运算符: and or not

比较运算符 = ,> ,< ,>=, <= , != ,<>不等于

 

 

 

 

SQLyog管理工具:

 

MySQL数据类型:

数值类型:

类型

大小

范围(有符号)

范围(无符号)

用途

TINYINT

1 字节

(-128,127)

(0,255)

(非常小的数据)小整数值

SMALLINT

2 字节

(-32 768,32 767)

(0,65 535)

(较小的数据)大整数值

MEDIUMINT

3 字节

(-8 388 608,8 388 607)

(0,16 777 215)

(中等大小的数据)大整数值

INT或INTEGER

4 字节

(-2 147 483 648,2 147 483 647)

(0,4 294 967 295)

(标准整数)大整数值

BIGINT

8 字节

(-9 233 372 036 854 775 808,9 223 372 036 854 775 807)

(0,18 446 744 073 709 551 615)

(较大的整数)极大整数值

FLOAT

4 字节

(-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)

0,(1.175 494 351 E-38,3.402 823 466 E+38)

单精度浮点数值

DOUBLE

8 字节

(1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

双精度浮点数值

DECIMAL

对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2

依赖于M和D的值

依赖于M和D的值

(字符串形式的浮点数)小数值

UNSIGNED属性: 表示为无符号数 没有负数,有符号的是有正数有负数

ZEROFILL属性:宽度(位数)不足以0填充 宽度:以几位去显示

若某数值字段指定了ZEROFILL属性,将自动添加UNSIGNED属性(不会有负数)

字符串类型:

类型

大小

用途

CHAR

0-255字节

定长字符串

VARCHAR

0-65535 字节

变长字符串

TINYBLOB

0-255字节

不超过 255 个字符的二进制字符串

TINYTEXT

0-255字节

短文本字符串

BLOB

0-65 535字节

二进制形式的长文本数据

TEXT

0-65 535字节

长文本数据

MEDIUMBLOB

0-16 777 215字节

二进制形式的中等长度文本数据

MEDIUMTEXT

0-16 777 215字节

中等长度文本数据

LONGBLOB

0-4 294 967 295字节

二进制形式的极大文本数据

LONGTEXT

0-4 294 967 295字节

极大文本数据

CHAR(M) 固定长度可以用 ,定义多长就是多长

VARCHAR(M) 不确定长度,根据内容决定长度

日期类型:

类型

大小 (字节)

范围

格式

用途

DATE

3

1000-01-01/9999-12-31

YYYY-MM-DD年月日

日期值

TIME

3

'-838:59:59'/'838:59:59'

HH:MM:SS

时间值或持续时间

YEAR

1

1901/2155

YYYY

年份值

DATETIME

8

1000-01-01 00:00:00/9999-12-31 23:59:59

YYYY-MM-DD HH:MM:SS 年月日时间秒

混合日期和时间值

TIMESTAMP

4

1970-01-01 00:00:00/2037 年某时

YYYYMMDD HHMMSS

混合日期和时间值,时间戳

若某日期字段默认值为当前日期,一般设置为TIMESTAMP类型

 

字段的约束和属性:

非空约束 NOT NULL 字段不允许为空

默认约束 DEFAULT 赋予某字段默认值

唯一约束 UNIQUE KEY(UK) 设置字段的值是唯一的,不可以重复,允许为空 但只能有一个

空值

主键约束 PRIMARY KEY(PK) 设置该字段为表的主键 可唯一表示该表记录/一张表只能有一个

主键

外键约束 FOREIGN KEY(FK) 用于在两表之间建立关系,需要指定引用主表的哪一字段

自动增长 AUTO_INCREMENT 默认该列表为自增字段 默认每条自增1 通常用于设置主键

 

 

常用mysql命令

  • 创建数据库
  • 外键
  • 增删改查表
  • 权限

 

注释:COMMENT

 

MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用:

  MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。

常用的两种:

区别: innoDB 偏向增删改 myisam 偏向查询

 

事务处理: 支持 不支持

(事务是在同时操作1个一上数据的时候 同时成功或失败 就要设置事务)

 

数据行锁定: 支持 不支持

(当多个人进行数据操作的时候,把要修改的数据锁定,其他人无法同时修改 )

 

外键约束: 支持 不支持

(主要约束给从表插入数据时 外键的值主键也要存在)

 

全文索引: 不支持 支持

(索引指通过目录查询 全文指有大量文本时 )

 

表空间大小 : 较大,约两倍 较小

(表的存储空间)

 

查看默认引擎:

show variables like 'storage_engine%';

 

修改数据库默认引擎 :修改my.ini配置文件

default-storage-engine=InnoDB---可改为其它存储

 

创建表时设置引擎:

语法 CREATE TABLE 表名(。。。代码)ENGINE=存储引擎

MyISAM类型表文件:

*.frm 表结构定义文件

*.myd 数据文件

*.myi 索引文件

 

InnoDB类型表文件:

*.frm 表结构定义文件

ibadata1 文件

 

存储位置:

因操作系统因人而异,可查my.ini

datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

innodb_data_home_dir="D:/MySQL Datafiles

 

DML语句

插入单条数据记录:

语法 INSERT INTO 表名[(字段名列表)] VALUES (值列表);

(数值类型都不加单引号 其他都加单引号,字段名省略默认插入所有字段)

插入数据示例:

INSERT INTO 'type1' VALUE(12) ,(1234),(123456) ;

# 表名中 插入 值 3 个记录

插入多条:

INSERT INTO 表名[(字段名列表)] VALUES (值列表1),(值列表2),(值列表3);

示例:

INSERT INTO STUDENT(字段名) VALUES(3,'123',’李静‘, 2 ‘111233333333’,‘地址’‘时间日期’,‘邮箱’,‘身份证号码’);如果是自动增长 写NULL

 

从学生表提取姓名手机号两列数据到通讯库表中:(相当于备份)

create table 通讯录表 (select ' 数列',‘数列’FROM '学生表');(表必须不存在,如新表已存在将会报错)

在已有的表中引用其他表中的数据 进行添加:(也属于备份)

insert into xxx select 数列1,数列2 from 表名;(表必须存在)

 

更新数据记录:

Update表名 set 字段1=值1,字段N=值n [where条件];改谁的条件就写谁的,如果不写条件会改变所有的

update xxx set sex=‘女’where sex='男‘

条件为空 is null 不是空的 is not null

 

删除数据记录:

1 DELETE FROM 表名 [ where 条件] ; 不写条件会删除所有表记录

2 TRUNCATE TABLE 表名; 会删除所有表记录

truncate 语句删除后将重置自增列,表结构及其字段、约束、索引保持不变,执行比DELETE快

 

 

 

自己创建数据库;

语法:CREATE DATABASE 数据库名;(分号结束/不区分大小写)

Query OK,1 row affected <0.00 sec>

#执行成功,操作影响的行数,<操作执行的时间>

创建数据库时后面可加 charset'utf8'; 让其支持中文

创建数据库 设定表结构 每个字段都要指定类型,规定长度,规定是否为空,必须按照字段类型存储

查看所有的数据库:

show databases ;

删除数据库:

语法:DROP DATABASE数据库名;

Query OK, 0 rows affected (0.02 sec)

#执行成功,操作影响的行数,<操作执行的时间>

查看my.ini配置文件,可查看更改配置 (MySQL装在哪就去哪找)

 

创建表:

语法:CREATE TABLE [ IF NOT EXISTS ] 表名(字段1 数据类型 [ 字段属性 约束 ] [ 索引][注释]...

字段n 数据类型 [ 字段属性 约束 ] [ 索引 ] [ 注释 ])[表类型] [表字符集] [注释];

示例:

CREATE TABLE 'student'( 'studentNo' INT(4) PRIMARY KEY, 'name' CHAR(10)....;

[ ]为可选部分,

IF NOT EXISTS如果不存在,

多字段都用逗号分割,

保留字用撇号括起来

单行注释#

多行注释/* */

 

示例:

CREATE TABLE type ( 'sid' INT (4) ZEROFILL) ;

# 表名(‘字段名’ 类型 (宽度)以0填充)

 

查看所有表:

SHOW TABLES ;

查看表是否存在

USE XX ; SHOW TABLES ;

查看表定义

DESCRIBE 表名; 或 DESC 表名;

(避免DOS窗口乱码,可执行 SET NAMES GBK;)

 

查看表:要先进入数据库:

use mysql ;

查看数据库里有什么表:

show tables;

看表里面的结构:

desc 表名字 ;

可以查看表的具体内容:

select * from user \G;(*号查所有)加 \G 会变竖列可读性好

删除表:

DROP TABLE [ IF EXISTS ] 表名;[如果表名存在]

示例:

USE XXX;

DROP TABLE IF EXISTS 'XXX';(删除之前验证表是否存在 )

修改表:

修改表名:

ALTER TABLE 旧表名 RENAME [TO] 新表名;

修改字段:

ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [ 属性];

修改数据类型不能为空:

Alter table xxx modify sexe enum(' f ','m') not null ; enum (‘F’ ,M’ )字段

modify 只是修改字段的数据类型

Chenge: 全部改 名字 类型

语法:

Chenge 要修改的字段名 新的字段名 类型

添加字段:

ALTER TABLE 表名 ADD 字段名 数据类型 [属性];

添加枚举字段:

Alter table xxx add sex enum(' f ' , ' m ');

添加主键:

ALTER TABLE 表名 ADD CONSTRAINT主键名 PRIMARY KEY 表名(主键字段);

添加外键:

ALTER TABLE 表名 ADD CONSTRAINT外键名 FOREIGN KEY (外键字段) REFERENCES 关联 表名(关联字段);

删除字段:

ALTER TABLE 表名 DROP 字段名;

 

查询:HELP 查询内容(一般在DOC命令下使用)

语法:

select * from ;查询所有

或 select 表名 From 表名 ;查询某个, 可加where 条件

使用AS命名列、查询-列别名:

1 SELECT `studentNo` AS 学生编号,`studentName` AS 学生姓名,

`address `AS 学生地址

2 SELECT `firstName` + '.' + `lastName` AS 姓名

FROM `employees`;

注意:

1. + 连接的数据类型必须兼容

2. 如果 + 连接字符型数据,结果为字符串数据的连接

3. 如果 + 连接数值型数据,结果为数值的和

查询空行:

示例:

SELECT `studentName` FROM `student` WHERE `email` IS NULL;

原来有数据,但数据被清除的列如何查询 :使用常量列

示例:

SELECT `studentName` AS 姓名,`address` AS 地址,

’北京信息中心’ AS 学校名称

FROM `student`;

 

排序:

ORDER BY 排序的列名; ASC 默认正序 DESC 倒序

按设定顺序查询:

SELECT * FROM XXX ORDER BY REGISTER_DATE ;

分组统计:

GROUP BY :

按照名字进行分组查询 :

SELECT NAME ,COUNT(*)as lieming FROM XXX GROUP BY NAME;

count( )计数,可以给count as 起个新字段名字

按照日期进行分组查询:

SELECT REGISTER_DATE ,COUNT(*) FROM XXX GROUP BY REGISTER_DATE;

按照名字的 age总和进行分组查询:

SELECT NAME ,SUM (age) FROM XXX GROUB BY NAME ;

sum( 按照什么)求和:

(With rollup 求加起来的总数 ,COALESCE 可以设置一个代替null的名称:)

 

按照名字的 age总和进行分组查询,并求出一个总和,在给加起来的总和起一个名字sum_name,代替null:

SELECT COALESCE (name ,' sum_name ' SUM (age) FROM XXX GROUB BY NAME WITH ROLLUP ;

 

可以使用OFFSET 指定SELECT 语句开始查询的数据偏移量,默认情况下偏移量为0

可以用LIMIT属性 设定返回的记录数:

查前两条数据

SELECT * FROM XXX LIMIT 2;

第一条之后查两条数据,

SELECT * FROM XXX LIMIT 2 OFFSET 1;

(OFFSET不能单独用,要和LIMIT一起用)

加WHERE 条件 查询:

SELECT * FROM XXX WHERE ID>3 and age<20;

按照日期查询:

SELECT * FROM XXX WHERE REGISTER_DATE LIKE '2018-03%' ;

 

 

修改表格本身:

Alter table xxx drop REGISTER_DATE; 修改删除字段

Alter table xxx drop name; 删除name字段

Alter table xxx add phone int(11) not null ;添加字段

Alter table xxx add sex enum(' f ' , ' m '); 添加枚举字段

Alter table xxx modify sexe enum(' f ','m') not null ; 修改数据类型不能为空, enum (‘F’ ,M’ )字段 modify 只是修改字段的数据类型

Chenge: 全部改 名字 类型

语法:

Chenge 要修改的字段名 新的字段名 类型

 

查看所有的进程:

ps - ef

并筛选出MYSQL:

ps - ef | grep mysql (筛选 mysql)

可看到 mysql进程号

删掉mysql进程:

kill 进程号

如果没有启动:

mysqld_safe& 可以启动

想关闭 mysql服务器:

mysqladmin -u root -p shutdown

添加用户:

use mysql ;进入数据库,

查看已有用户:

select 字段 from 表名;

插入用户:

grant all on test .* to 'xxx'@'%' identified by '密码xxx';

#授权 所有 在 test数据库下 .*所有的表 ‘xxx用户’ @从 %所有机器访问 给它的密码 by ‘设置的密码’

/*

grant 授权

all 所有

on 在哪里

test = 要设置的数据库名

. * 数据库里所有的表

‘ 用户 ’ 添加的用户

@ 从哪访问

% 所有

identified 密码

by'xxx' 设置的密码

*/

常用函数:

函数名

作用

COUNT()

返回某字段的行数

MAX()

返回某字段的最大值

MIN()

返回某字段的最小值

SUM()

返回某字段的和

字符串函数:

函数名

作用

举例

CONCAT(str1, str1...strn)

字符串连接

SELECT CONCAT('My','S','QL'); 返回:MySQL

INSERT(str, pos,len, newstr)

字符串替换

SELECT INSERT( '这是SQL Server数据库', 3,10,'MySQL'); 返回:这是MySQL数据库

LOWER(str)

将字符串转为小写

SELECT LOWER('MySQL'); 返回:mysql

UPPER(str)

将字符串转为大写

SELECT UPPER('MySQL'); 返回:MYSQL

SUBSTRING (str,num,len)

字符串截取

SELECT SUBSTRING( 'JavaMySQLOracle',5,5); 返回:MySQL

数学函数:

CEIL(x)

返回大于或等于数值x的最小整数

SELECT CEIL(2.3)返回:3

FLOOR(x)

返回小于或等于数值x的最大整数

SELECT FLOOR(2.3) 返回:2

RAND()

返回0~1间的随机数

SELECT RAND()返回:0.5525468583708134

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值