一、数据库简介
1、数据库
数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合。数据库中的数据按一定的数学模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。
2、数据库管理系统软件
数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。用户通过DBMS访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。
数据库管理系统是数据库系统的核心,是管理数据库的软件。数据库管理系统就是实现把用户意义下抽象的逻辑数据处理,转换成为计算机中具体的物理数据处理的软件。有了数据库管理系统,用户就可以在抽象意义下处理数据,而不必顾及这些数据在计算机中的布局和物理位置。
常见的数据库管理软件:甲骨文的oracle,IBM的db2,sql server, Access,Mysql(开源,免费,跨平台).
文件 数据库
第一行内容 字段
其它内容 记录
一行内容 一条记录
一个文件 一张表
一个文件夹 一个库
#数据库管理系统:mysql,orcale,db2,mariadb,sql server(关系型数据库)
打开连接
切到一个文件下/找到一个文件/打开文件/读写记录/关闭文件(优化,加锁处理,权限认证)
关闭连接
#ps:
安装数据库指的是:数据库管理系统
创建数据库指的是:创建一个“文件夹”
非关系型数据库:数据都是以key=value的形式存放的
#数据库服务器:安装有数据库管理系统软件的一台机器
3、mysql基本使用
#1 登录
mysql -uroot -p123
#2 查看用户
select user();
#3 退出
quit
exit
\q
#4 查看帮助信息
help create user;
#4 创建帐号
create user 'egon'@'192.168.32.*' identified by '123';
create user 'egon'@'192.168.32.3' identified by '123';
create user 'egon'@'%' identified by '123';
#6 授权
grant all privileges
grant all on db1.t1 to 'egon'@'%';
grant all on *.* to 'egon'@'%';
flush privileges;
#7 创建帐号同时授权
grant all on *.* to 'alex'@'%' identified by '123';
flush privileges;
#8 远程连接mysql
mysql -u wang -p123 -h 192.168.11.110
#9 查看所有的数据库
show databases;
#10 修改密码
命令行>mysqladmin -uroot -p'123' password 123
命令行>mysql -uroot -p123
#11 破解密码
#杀死mysqld服务
tasklist |findstr mysqld # Liunx:ps aux | grep mysqld 查找mysql启动的进程端口
mysqld.exe 4980 Console 456,832 K
tskill mysqld #Liunx:pkill mysqld 直接杀死进程
taskkill -f /PID 4980 #Liunx:kill -9 4980 杀死进程为4980的进程
mysqld --skip-grant-tables #跳过授权表启动
mysql> update mysql.user set password=password('') where user='root' and host='localhost'; 修改密码
mysql> flush privileges; 刷新的意思
C:\Users\Administrator>tskill mysqld
C:\Users\Administrator>tasklist |findstr mysql
C:\Users\Administrator>mysqld
#重新以新密码登录
二、MySQL数据库(文件夹)的操作
1、sql语句
sql是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。
在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。SQL功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持sql。
2、sql规范
<1> 在数据库系统中,SQL语句不区分大小写(建议用大写) 。但字符串常量区分大小写。建议命令大写,表名库名小写;
<2> SQL语句可单行或多行书写,以“;”结尾。关键词不能跨多行或简写。
<3> 用空格和缩进来提高语句的可读性。子句通常位于独立行,便于编辑,提高可读性。
<4> 注释:单行注释:--
多行注释:/*......*/
<5>sql语句可以折行操作
<6> DDL,DML和DCL
-- --SQL中 DML、DDL、DCL区别 .
-- -- DML(data manipulation language):
-- 它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的
-- 数据进行操作的语言
--
-- -- DDL(data definition language):
-- DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)
-- 的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
--
-- -- DCL(Data Control Language):
-- 是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)
-- 语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权
-- 力执行DCL
注意:
(1)在同一张表中,字段名是不能相同
(2)宽度和约束条件可选
(3)字段名和类型名是必须要有的
3、关于数据库(文件夹)操作的sql语句
- 增加(创建数据库)
create database db1 charset utf8; 创建名为db1字符编码为utf8
create database if not exists db1 charset utf8; 没有我就创建,有了就不创建了
如果不加if not exists的话,创建重名的数据库就会报错,反之不会
- 查看数据库
show databases; 查看所有数据库
show create database db1; 查看数据库名为db1的数据库
- 修改数据库
alter database db1 charset gbk; 修改数据库名为db1的字符编码为gbk
- 删出数据库
drop database db1;
4、数据表(文件)的增删改查
切换到某一个库(文件夹)
use db1; --注意:进入到某个数据库后没办法再退回之前状态,但可以通过use进行切换
select database(); #查看当前所在的库
- 增加(添加)表
create table t1(id int,name char(10),age int(4))engine=innodb default charset utf8; #最后一个字段一定不要加逗号
int(整数)不指定默认11位,char(字符串)不指定默认1个字符,最大255
- 查看表信息
show tables; 查看所有的表
show create table t1; 查看表t1的信息
desc t1;#查看表结构
- 修改表结构
alter table t1 charset gbk; 修改该表的字符编码为gbk
alter table t1 add sex char; 添加一个字段
alter table t1 drop sex; 删除一个字段
alter table t1 modify sex char(6); 只可以改类型和类型的长度
alter table t1 change sex Sex char(6); 连字段名都可以改
rename table t1 to t2; 修改表名t1为t2
- 删除表
drop table table66;
5、表记录的操作
- 增(添)加记录
insert into db1.t1(id,name,age,Sex) values
--(1,'egon1',18,'male'),
--(2,'egon2',28,'male'),
--(3,'egon3',38,'male'),
--(4,'egon4',48,'male');
写了是一一对应,不写(id,name,age,Sex)默认是表字段顺序
insert into db1.t1(id,name) values(5,'egon5'); 添加啊一条记录,后面字段可为空
- 查询表记录
select name,id from db1.t1; 查看name和id的字段
select * from db1.t1; 查看所有字段的值
- 修改表记录
update db1.t1 set name='EGON4'; 修改字段,所有的都改了
update db1.t1 set name='alexsb' where id=5; 修改id为5的name
update db1.t1 set name='aaaa' where Sex='male'; 修改Sex='male'的name
- 删除表记录
delete from db1.t1; #仅仅只有删除记录的效果,没有把表重置到初始状态的功能,主键还在(会累加)
truncate db1.t1; #清空+重置
- 删除某一条记录
delete from db1.t1 where id=3; 删除id为3的这条记录
delete from db1.t1 where name='dddd';
#自增id
create table t1(id int not null unique auto_increment,name char(4)); #自增的字段必须是非空且唯一
create table t1(id int primary key,name char(4));
效果如下:
insert into db1.t1(name) values
('egon1'),
('egon2'),
('egon3'),
('egon4');
练习:
一、老师表:teacher
修改字段id为tid
二、班级表:class
三、课程表:course
四、学生表:student
五、成绩表:score