一、数据库的简介
RDBMS简介:
Relational Database Management System,通过表来表示关系类型。当前主要使用两种类型的数据库:关系型数据库和非关系型数据库。所谓的关系型数据库RDBMS是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。关系型数据库的主要产品:
oracle:在以前的大型项目中使用,银行,电信等项目;
mysql:web时代使用最广泛的关系型数据库;
my sql server:在微软项目中使用;
sqlite:轻量级数据库,主要应用在移动平台。
RDBMS包含很多具体的数据库工具:
还有就是mysql,redis,monggodb;
mysql:一般用于网站,存储一些数据;
redis:一般用来缓存;
mongodb:一般用来存储非关系数据结构比如爬虫用
SQL语言:
是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过SQL操作oracle,sql server,mysql,sqlite等所有的关系型数据库
SQL语句主要分为:
DQL:数据查询语言,用于对数据进行查询,如select;
DML:数据操作语言,对数据进行增加、修改、删除,如insert/update/delete;
TPL:事务处理语言,如begin transaction/commit/rollback;
DCL:数据控制语言,进行权限与授权回收,如grant/revoke;
DDL:数据定义语言,进行数据库、表的管理如create/drop等;
CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
SQL语言不区分大小写,支持多种数据库工具。
二、Mysql
Mysql简介:
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,现在属于Oracle公司。它是最流行的开源数据库之一,广泛应用于网页应用软件,特别是用于构建动态网站和在线交易系统等基于网络的应用。
MySQL的主要特点包括:
开源:MySQL是开源的,这意味着任何人都可以下载和使用它,而且可以查看和修改其源代码。
性能高:MySQL使用了许多优化技术来提供高性能、高吞吐量的数据读写。
可扩展性强:MySQL可以处理包含上亿条记录的大型数据库,同时也适用于较小的应用程序。
易于使用:MySQL易于安装,并且提供了大量的工具和库来帮助开发者和数据库管理员。
支持多种数据类型:MySQL支持多种数据类型,包括数值、日期和时间、字符串等。
安全性:MySQL提供了一套完整的权限管理系统,可以对用户在每个数据库上的权限进行细粒度的控制。
跨平台:MySQL可以在多种操作系统上运行,包括Linux、Windows、Mac OS等。
因此,无论是在企业级应用还是在个人项目中,MySQL都是一个非常好的关系型数据库选择。
Ubuntu虚拟机安装好,查看采用如下linux命令
这就登陆上了
查看版本命令
调好了,以后输入sudo mysql -u root即可登录mysql
三、Navicat
下载完运行,试用14天
改了密码,登录,双击变绿连上了
新建数据库
建好之后双击即可启动连接该数据库(变绿),然后里面的表是最重要的,可以右键teble新建,新建之后可以输入数据,后面有一个钥匙的符号,钥匙就意味着这个字段就是主键主键作用:唯一标记每个记录。
按照一个excel创建表格
当数据表里数据量巨大的时候,增删改查都将变的很难搞,所以用到sql语句
四、SQL语句
数据库要保证数据的完整性,数据类型的原则是够用就行,尽量使用取值范围小的,而不用大的,这样可以更多节省存储空间。
常用的数据类型:整数:int,bit;
小数:decimal(eg:decimal(5,2)表示共存5位数,小数占两位);
字符串:varchar(eg:varchar(3)表示如果存储‘ab’那么就存储‘ab’),char(eg:char(3)表示如果填充了‘ab’会自动在后面补个空格);
日期时间:data,time,datetime;
枚举类型(比如男女):enum;
字符串text表示存储大文本,当字符大于4000时推荐使用。
对于图片、音频、视频等文件不存在数据库中,而是上传到某个服务器上,然后在表中存储这个文件的保存路径。
更全的数据类型可参考:http://blog.csdn.net/anxpp/artical/details/51284106
约束:
1.主键primary key:物理上存储的顺序;
2.非空not null:此字段不允许填写空值;
3.唯一unique:此字段不允许重复;
4.默认default:当不填写此值时会使用默认值,如果填写时以填写为主;
5.外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常。
说明:虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增删改查)时都会降低数据库的性能,所以不推荐使用,那么数据的有效性怎么保证?答:可以在逻辑层进行控制。
命令行脚本对数据库进行操作:
mysql -u root -p(连接数据库);
exit/quit/ctrl+d(退出数据库);
show databases;(展示数据库内容分号别忘了写!!!);
显示当前数据库时间:select now();
显示数据库版本:select version();
创建数据库
:create database
你要创建的数据库名称 charset=utf8;
查看创建数据库的语句,可以看看当时创建用的是不是utf-8的设定啥的:show create database python04;
删除数据库
:drop database 数据库名;如果没有反应那就试试在数据库名加两边各加一个`,键盘左上角那个
使用数据库:use 数据库名称;
不管你现在何处都可以
查看当前使用的数据库:select database();
数据表(表设计)操作:
查看当前数据库中所有的表:show tables;
创建一个数据表
:create table 数据表名字 (字段 类型 约束[,z字段 类型 约束]);
也可以这么写:create table xxx(id int primary key not null auto_increment,name varchar(30))
查看一个表的结构
:desc 数据表名字;
创建一个students表:create table students(id int unsigned非负 然后写约束not null auto_increment 主键primary key,name varchar(30),age tinyint unsign default 0,high decimal(5,2),gender enum(“男”,“女”,“保密”) default "保密"默认值,cls_id int unsigned);
–xxxxx前面两个横杠是注释的意思
往表里插入数据:
insert into students values(0,“淅淅”,10,188.88,“女”,2201);
查看表中数据:select * from students;
修改表结构:
添加字段
:alter table 表名 add 列名 类型;(eg:alter table students add birthday datetime;)
修改字段重命名
:alter table 表名 modify 列名 类型及约束;(eg:alter table students change birthday birth datetime not null;)
修改字段不重命名
:alter table 表名 modify 列名 类型及约束;(eg:alter table students modify birth date not null;)
删除字段
:alter table 表名 drop 列名;(eg:alter table students drop birthday;)
删除表
:drop table 表名;(eg:drop table students;)
查看表的创建语句
:show create table 表名;
添加
修改不重命名
修改重命名
删除字段
删除表
数据表内数据的增删改查(curd–create.update.retrieve.delect)
查询所有列
select *from 表名;(eg:select *from classes;)
select *from students where name=“道”;
查询name为道的所有信息
select *from students where id>2;
查询指定列
select 列1,列2,… from 表名;(eg:select id,name from classes;)
可以用as为列或表指定别名:select name as 姓名,gender as 性别 from students;
增,插入,insert into 表名 values(…)
没有指明给那个列插入就默认全部插入
部分插入:insert into students(name,gender) values (“道”,2);
多行插入:insert into students(name,gender) values (“风信子”,1),(“多肉”,3);
部分插入
多行插入
修改
update 表名 set 列名=1 where name/id=”你要改的数据“;
update students set gender=1;全改;update students set gender=1 where name=“道”;只要name是道的全改;update students set gender=1 where id=3;id为3的进行修改;update students set age=22,gender=1 where id=3;只要id是3的进行修改。
删除数据
物理删除
delete from 表名 where 条件
delete from students;–清空数据表
delete from students where name=“风信子”;
逻辑删除
用一个字段来表示,这条信息是否已经不能再用,给students表添加一个is_delete字段bit类型
alter table students add is_delete bit default 0;
想删第5条就可以:update students set is_delete=1 where id=5;
然后就可以用is_delete=1/0进行筛选