AI智能
改变未来

MySQL数据库


MySQL数据库

1.什么是数据库?
数据库简而言之就是–电子化的文件柜—存储电子文件的处所,用户可以对数据进行操作。
所谓数据库–系一定的方式存储在一起,能给予多个用户共享,与应用程序彼此独立的数据集合。
2.数据库的分类?具体含义?常见的数据库?
1.关系型数据库
关系数据库,是建立在关系数据库模型基础上的数据库,借助于集合代数等概念和方法来处理数据库中的数据,同时也是一个被组织成一组拥有正式描述性的表格,该形式的表格作用的实质是装载着数据项的特殊收集体,这些表格中的数据能以许多不同的方式被存取或重新召集而不需要重新组织数据库表格。关系数据库的定义造成元数据的一张表格或造成表格、列、范围和约束的正式描述。每个表格(有时被称为一个关系)包含用列表示的一个或更多的数据种类。 每行包含一个唯一的数据实体,这些数据是被列定义的种类。当创造一个关系数据库的时候,你能定义数据列的可能值的范围和可能应用于那个数据值的进一步约束。而SQL语言是标准用户和应用程序到关系数据库的接口。其优势是容易扩充,且在最初的数据库创造之后,一个新的数据种类能被添加而不需要修改所有的现有应用软件。主流的关系数据库有oracle、db2、sqlserver、sybase、mysql 等。
2.非关系型数据库
非关系型数据库,又被称为NoSQL(Not Only SQL ),意为不仅仅是SQL( Structured QueryLanguage,结构化查询语言),据维基百科介绍,NoSQL最早出现于1998 年,是由Carlo Storzzi最早开发的个轻量、开源、不兼容SQL 功能的关系型数据库,2009 年,在一次分布式开源数据库的讨论会上,再次提出了NOSQL 的概念,此时NOSQL主要是指I非关系型、分布式、不提供ACID (数据库事务处理的四个本要素)的数据库设计模式。同年,在亚特兰大举行的“NO:SQL(east)”讨论会上,对NOSQL 最普遍的定义是“非关联型的”,强调Key-Value 存储和文档数据库的优点,而不是单纯地反对RDBMS,至此,NoSQL 开始正式出现在世人面前。常用的非关系型数据库有DB2,SQLServer
3.MySQL数据库服务器、数据库和表的关系?
所谓数据库服务器,只是在机器上装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。
为保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如图所示:

MySQL数据库服务器就是一个数据库管理程序/一个数据库管理软件。
我们一个操作系统上安装一个MySQL数据库服务器,打开进入到MySQL数据库服务器上,就可以给这个MySQL数据库服务器创建一个/多个数据库,为每一个数据库创建一个/对个数据表,可以向数据表中保存实体数据。
通常情况下都是一个应用程序对应一个数据库,这个一个数据库中有好多张表,来存储数据。
4.MySQL数据库服务器下载和安装?【解决MySQL安装到最后一步未响应的三种方法】
解决MySQL安装到最后一步未响应的三种方法:
1、卸载MySQL
2、删除安装目录及数据存放目录
3、在注册表(regedit)查询mysql,全部删除,
注意的是注册表 cmd -> regedit
1.HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Services\\Eventlog\\Application\\MySQL 目录
2.HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet002\\Services\\Eventlog\\Application\\MySQL 目录
3.HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\Eventlog\\Application\\MySQL 目录
4.HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControl001\\Services\\MYSQL 目录
5.HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControl002\\Services\\MYSQL 目录
6.HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\MYSQL 目录
4、在c盘查询MySQL,全部删除 ;一般是在ProgramData文件夹下(该文件是隐藏的,需要设置为显示隐藏文件)和winbdows文件夹下
5、重新安装就好了

5.SQL语言
1.基本数据库操作语句
CREATE DATABASE [IF NOT EXISTS] db_name
CHARACTER SET:指定数据库采用的字符集
COLLATE:指定数据库字符集的比较方式
例如:
创建一个名称为mydb1的数据库。
CREATE DATABASE mydb1;
创建一个使用utf8字符集的mydb2数据库。
CREATE DATABASE mydb2 CHARACTER SET utf8;
创建一个使用utf8字符集,并带比较规则的mydb3数据库。
CREATE DATABASE mydb3 CHARACTER SET utf8 COLLATE utf8_bin;
数据库的修改
例如:
修改mydb2字符集为gbk;
ALTER DATABASE mydb2 CHARACTER SET gbk;
数据库查看:
例如:
查看所有数据库。
show databases;
查看数据库mydb1的字符集
show create database mydb1;
数据库的删除:
例如:
删除数据库mydb3。
drop database mydb3;
创建表(基本语句)
语法结构:
CREATE TABLE table_name
(
field1 datatype,
field2 datatype,
field3 datatype
);
field:指定列名 datatype:指定列类型
注意:
创建表前,要先使用use db语句使用库。
创建表时,要根据需保存的数据创建相应的列,并根据数据的类型定义相应的列类型。

2.MySQL常用数据类型
字符串型 VARCHAR、CHAR
大数据类型BLOB、TEXT
数值型TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
逻辑性 BIT
日期型DATE、TIME、DATETIME、TIMESTAMP
例如:
创建一个员工表employee1
具体字段描述如下:

create table employee1 (id int ,name varchar(20) not null,gender varchar(10),birthday date,entry_date date,job varchar(30),salary double,resume text);查看表结构: desc 表名;desc  employee1 ;

3.MySQL定义表的字段的约束
定义主键约束:primary key:不允许为空,不允许重复
删除主键:alter table tablename drop primary key ;
主键自动增长 :auto_increment
定义唯一约束:unique 例如:name varchar(20) unique
定义非空约束:not null 例如:salary double not null

例如:创建一张员工表employee2,要求把id 设置成主键,并且自动增长。name不允许为空。create table employee (id int primary key auto_increment,name varchar(20) not null,gender varchar(10),birthday date,entry_date date,job varchar(30),salary double,resume text);

4.基本数据库表操作语句
删除表
删除employee1表
drop table employee1;
数据表的结构的修改:
在上面员工表的基本上增加一个image列。
alter table employee2 add image varchr(20);
修改job列,使其长度为60。
alter table employee2 modify job varchar(60);
删除gender列。
alter table employee2 drop gender;
表名改为user。
rename table employee2 to user;
修改表的字符集为utf8
alter table user character set utf8;
列名name修改为username
alter table user change name username varchar(20) not null;
.查看表结构
查看数据库内的所有表
show tables;
查看employee的建表语句
show create table employee1;
查看employee的表结构
desc employee1;

5.INSERT 语句向表中插入数据
语法结构:
INSERT INTO table [(column [, column…])] VALUES (value [, value…]);
插入的数据应与字段的数据类型相同。
数据的大小应在列的规定范围内,例如:不能将一个长度为80的字符串加入到长度为40的列中。
在values中列出的数据位置必须与被加入的列的排列位置相对应。
字符和日期型数据应包含在单引号中。
插入空值:不指定或insert into table value(null)
update语句修改表中数据
delete语句删除表中数据

6.select语句
1.基本select语句
语法结构:
SELECT [DISTINCT] *|{column1, column2. column3…} FROM table;
select 指定查询哪些列的数据。
column指定列名。
*号代表查询所有列。
from指定查询哪张表。
DISTINCT可选,指显示结果时,是否剔除重复数据

2.多表查询
2.1表与表之间的关系
多表设计中三种实体关系:

2.2外键的定义
多表设计——外键约束
定义外键约束
foreign key
foreign key(ordersid) references orders(id)

2.3子查询
就是将一个查询语句包含在另一个查询语句中,那么这个被包含的查询语句就是子查询语句。

子查询练习:CREATE TABLE emp(empno INT,ename VARCHAR(50),job VARCHAR(50),mgr	INT,hiredate DATE,sal	DECIMAL(7,2),comm DECIMAL(7,2),deptno INT) ;INSERT INTO emp VALUES(7369,\'SMITH\',\'CLERK\',7902,\'1980-12-17\',800,NULL,20);INSERT INTO emp VALUES(7499,\'ALLEN\',\'SALESMAN\',7698,\'1981-02-20\',1600,300,30);INSERT INTO emp VALUES(7521,\'WARD\',\'SALESMAN\',7698,\'1981-02-22\',1250,500,30);INSERT INTO emp VALUES(7566,\'JONES\',\'MANAGER\',7839,\'1981-04-02\',2975,NULL,20);INSERT INTO emp VALUES(7654,\'MARTIN\',\'SALESMAN\',7698,\'1981-09-28\',1250,1400,30);INSERT INTO emp VALUES(7698,\'BLAKE\',\'MANAGER\',7839,\'1981-05-01\',2850,NULL,30);INSERT INTO emp VALUES(7782,\'CLARK\',\'MANAGER\',7839,\'1981-06-09\',2450,NULL,10);INSERT INTO emp VALUES(7788,\'SCOTT\',\'ANALYST\',7566,\'1987-04-19\',3000,NULL,20);INSERT INTO emp VALUES(7839,\'KING\',\'PRESIDENT\',NULL,\'1981-11-17\',5000,NULL,10);INSERT INTO emp VALUES(7844,\'TURNER\',\'SALESMAN\',7698,\'1981-09-08\',1500,0,30);INSERT INTO emp VALUES(7876,\'ADAMS\',\'CLERK\',7788,\'1987-05-23\',1100,NULL,20);INSERT INTO emp VALUES(7900,\'JAMES\',\'CLERK\',7698,\'1981-12-03\',950,NULL,30);INSERT INTO emp VALUES(7902,\'FORD\',\'ANALYST\',7566,\'1981-12-03\',3000,NULL,20);INSERT INTO emp VALUES(7934,\'MILLER\',\'CLERK\',7782,\'1982-01-23\',1300,NULL,10);INSERT INTO emp VALUES(7981,\'MILLER\',\'CLERK\',7788,\'1992-01-23\',2600,500,20);CREATE TABLE dept(deptno		INT,dname		VARCHAR(14),loc		VARCHAR(13));INSERT INTO dept VALUES(10, \'ACCOUNTING\', \'NEW YORK\');INSERT INTO dept VALUES(20, \'RESEARCH\', \'DALLAS\');INSERT INTO dept VALUES(30, \'SALES\', \'CHICAGO\');INSERT INTO dept VALUES(40, \'OPERATIONS\', \'BOSTON\');

7.联合查询
内连接查询 【inner join】
左连接查询 【left join】 左外连接查询 【left outer join】
右连接查询 【right join】 右外连接查询 【right outer join】
内连接与左连接和右连接查询的区别
–内连接:显示左边右边共有的
–左连接:左边有的,右边没有的为null
–右连接:右边有的,左边没有的为null

语法结构:
select [col1,col2…coln来自多张表【最好使用别名】]
from table1
inner join/
left outer join/left join/
right outer join/right join
table2
on table1.col = table2.col
where 查询条件

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » MySQL数据库