数据库(1)

Python高级

数据库(Database)

存放数据的仓库,用于管理大量甚至海量数据

DBMS:Database Management System,数据库管理系统,用于管理数据库,是一个独立的程序

DBA:Database Administrator,数据库管理员,它是一个人

 

数据可有两种类型:关系型数据库(RDBMS, Relationship Database Management System)、非关系型数据库(NO-SQL)

 

主流关系型数据库产品:

大型数据库:Oracle(美国的一家公司,很强大的数据库,功能非常完善,能管理T级的数据,在中国有家名为“甲骨文”的公司,其用C++开发的,用Java做的界面) 、SQL Server(微软公司的产品,学习难度低,傻瓜式软件,跟windows很配,也是用C++开发的)、DB2( IBM公司开发的 )等

中型数据库:MySQL(起源是荷兰一家公司,现在是Oracle公司旗下的产品)等

小型数据库:Access等

微型数据库: SQLite (开源,世界上最小的数据库,c语言写的,甚至只是一个库,而不是一个程序,一般用于手机上的APP开发)

中国自主研发的数据库:达梦

 

所有关系型数据库数据库产品都遵守SQL标准,即都可以通过SQL访问它们,所以我们随便选择一个进行学习就行

 

主流非关系型数据库产品:MongoDB,Redis等

 

 

SQL

Struct Query Language,结构化查询语言,用于和DBMS交流沟通

SQL结构化查询语言包含六个部分:

(1):数据查询语言(DQL:Data Query Language): 其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。 (2):数据操作语言(DML:Data Manipulation Language): 其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。 (3):事务处理语言(TPL): 它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。 (4):数据控制语言(DCL): 它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。 (5):数据定义语言(DDL): 其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。 (6):指针控制语言(CCL): 它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作

 

一个数据库可以包含多张表(Table),数据存放在表中

表就是一个二维表格,由若干行(Row)和列(Column)构成,一行数据也称为一条记录(Record),一列也称为一个字段(Field)

 

在关系型数据库中数据都存放在表中

 

扩展

 

查看数据库

show databases ;

登录

mysql -h ip地址 -u root -p 然后输入密码登录 # -h如果是本机登录就不需要带,连接别人的就带-h接ip地址

创建用户

create user 'azhe'@'%' identified by '602661651';

%代表可以在所有机器上登录

创建mydb数据库

create database mydb default character set utf8

删除数据库

drop database 名称;

删除用户

drop user 用户名称;

删除student表

drop table student;

将mydb的所有权限都给azhe用户

grant all on mydb.* to 'azhe'@'%';

取消权限

revoke all on mydb.* to 'azhe'@'%'

刷新权限

flush privileges;

改名,旧用户名to新用户名

rename user azhe to yrz

更改密码

set password for 'azhe'@'%' = password(" 123456")

打开mydb数据库

use mydb

建表

create table student (sno int unsigned, name varchar(20), phone char (11));

定长字符串char 变长字符串vachar

定长字符串的存取速度要快于变长字符串

在student表中增加内容,此处增加手机号

alter table student add column phone char(11);

查看表

desc student;

更改表的结构

alter table student modify sno int(6) unsigned;

往表中插入数据

insert into student values (1001, “张三”,“男”, 4.1, “1996-3-20”,“15927911307”)

insert into student (sno,phone,name) values (1002, '18527384912', "李四")

查看student表,*代表所有,也可以换成name等

select * from student;

清空student表

delete from student;

删掉student表中指定的内容:

where只有满足条件的才会被操作,name这里的=是比较运算符

where子句指定操作条件

delete from student where name=‘张三’;

更改张三的名字为张三丰

update student set name=“张三丰” where sno=1001;

如果相同时改多个字段,用,隔开

 

primary key 主键 非空 并且唯一

一般把文件的路径存放在数据库中,几乎没有人把文件直接存放在数据库的表中

数据库设计原则:在够用的情况下,尽量少占用存取空间

root用户默认不能远程登录,只能本机登录

MySQL中单引号和双引号引起来的都是字符串

SQL关键字不区分大小写

 

 

大文件不能一次性读到内存中 ,这样会让电脑卡死 ,只能每次读取一点数据,操作后再读取一点数据进行操作

posted @ 2019-08-19 20:54  YruiZ  阅读(305)  评论(0编辑  收藏  举报