数据库(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关键字不区分大小写
大文件不能一次性读到内存中 ,这样会让电脑卡死 ,只能每次读取一点数据,操作后再读取一点数据进行操作