一、数据库管理系统DBMS
1. DBMS是个软件
目录结构: bin config db (保存数据) - admin - 123asda.txt{用户名,密码,类型} - 12asdsa.txt {用户名,密码,类型} - course - school src 写程序: a. 数据库再本地 1、找到目录 2、添加数据 b. 数据库再远程 1、socket连接上远程机器 2、socket发送给您{命令}
2. 需要做什么?
A. 程序 程序,socket客户端 B. 数据 socket服务端 C.制作一套规则 add|... delete|... ...... D. socket客户端和服务端用户认证,授权,限制
3. 搞了一套软件:
A. 程序 程序,socket客户端 B. 数据 socket服务端 C. 制作一套规则 add|... delete|... ...... D. socket客户端和服务端用户认证,授权,限制 -- SQL server(收费),Oracle,sqlite,access。。。。MySQL 都分了服务端和客户端
二、MySQL的安装:
1、下载 Linux 安装,编译包或者二进制包 2、编译或解压安装到到指定目录 3、运行服务器端 a.初始化数据库 mysqld --initialize b.启动服务 service mysqld start 4.将bin目录加入环境变量中
可参考本博客中的MySQL安装教程
三、MySQL数据库
1. 概念
数据库 文件夹 数据表 文件 数据行 文件中的一行数据
2. 初试
show databases; #查看根目录的所有文件夹 create databases databasesname; # 创建文件夹 use databasesname; # 使用选中数据库,进入目录 show tables; # 查看当前数据库下都有哪些表 create table 表名(nid int,name varchar(20), pwd varchar(64)); #创建数据库表 select * from 表名; # 查看表中的所有数据 insert into 表名(nid,name,pwd) values(1,'alice','123'); #插入数据 -- select * from 表名;
3. 用户授权
用户管理的特殊命令: 创建用户 create user '用户名'@'IP地址' identified by '密码'; 删除用户 drop user '用户名'@'IP地址'; 修改用户 rename user '用户名'@'IP地址';to '新用户名'@'IP地址';; 修改密码 set password for '用户名'@'IP地址' = Password('新密码') 授权管理: 默认,什么都没有 grant 权限 on 数据库.表 to '用户名'@'IP地址'; select 查 insert 插入 数据库.表 test.tb1 test.* *.* '用户'@'IP地址' csking@locahost ======================重要,远程连接
小结:
a.减少重复操作文件,直接将命令发送给MySQL服务端,自动操作 b.数据库,表,行 c.开户和授权 密码,必须用引号 其他,推荐用引号 d.客户端连接(MySQL提供的客户端) 1、 mysql -u root -h 192.168.0.91 -P 端口 2、初试: show databases; #查看根目录的所有文件夹 create databases databasesname; # 创建文件夹 use databasesname; # 使用选中数据库,进入目录 show tables; # 查看当前数据库下都有哪些表 create table 表名(nid int,name varchar(20), pwd varchar(64)); #创建数据库表 select * from 表名; # 查看表中的所有数据 insert into 表名(nid,name,pwd) values(1,'alice','123'); #插入数据 -- select * from 表名; 3、语句结尾的分号;;;
四、SQL语句
1. 数据库级别
SHOW DATABASES; CREATE DATABASE 数据库名称; CREATE DATABASE 数据库名称 DEFAULT CHARSET utf8 COLLATE ust8_general_ci; USE 数据库名称; drop database 数据库名称;
2. 表级表
show tables; desc tb1; ***create table tb1(nid int,name varchar(20)); #事物,原子操作,回滚 a.默认值 b.是否可以为空 c.自增列(一张表只能有一个自增列,数字,必须是索引---主键) d.主键: 一张表只能有一个主键,唯一不能重复,不能为null,- 一般情况下将自增列设置主键 唯一列: 可以为null,一张表可以有多个唯一列 1,2,3,4,null -- 约束 -- 索引,加速查找 create table xxx( nid int not null primary key, ... ) create table sudent( name varchar(10) not null, num int not null, age int, gender int, primary key (name,num) #name和num列联合成一个主键key ) # 主键: 不能为null, 不能重复, 一张表只有一个主键(可以多列组成主键) create table tb1( nid int not null auto_increment primary key, name varchar(16), age int default 19 )engine=innodb default charset=utf8; # 一般用法: nid int auto_increment primary key, e. 外键foreign key, 一对多 alter table userinfo add constraint fk_u_p foreign key userinfo(part_nid) rereferences part(nid); 两张表建立约束 -- 约束 -- foreign key, 一对多 f:数据类型 数值: bit 二进制 tinyint smallint int bigint - 范围不一样 decimal -- 精确的 (底层内部是通过字符串存储,精确) float 浮点型,不精确的 double create table tb12(num decimal(6,2)); #表示能保存6位数,后两位为小数 #8888.88 字符串: # 定长 char create table tb12(n char(7)) insert ssss #实际占7个位置 # 查找速度快,浪费空间 # 变长 varchar create table tb12(n char(7)) insert ssss #实际占4个位置 # 查找速度慢,节省空间 text mediumtext longtext 二进制数据: TinyBlog、Blob、MediumBlob、LongBlob #上传文件 #强制二进制方式 #将上传文件保存再硬盘, 时间: DATE YYYY-MM-DD(1000-01-01/9999-12-31) TIME HH:MM:SS DATETIME YYYY-MM-DD HH:MM:SS TIMESTAMP YYYYMMDD HHMMSS enum # 创建一个枚举 CREATE TABLE shirts( name varchar(40), size ENUM('x-small','small','medium','large','x-large') ); insert into shirts(name,size) values('dress shirts','large'); set 集合 CREATE TABLE myset(col SET('a','b','c','d')); INSERT INTO myset(col) values('a,d') drop table tb1; # 直接删除表 delete from tb1; # 清空表内容 truncate table tb1; # 清空表内容,速度快,自增回到原点 select * from tb1; # 查看表中的所有数据 修改表结构: 添加列:alter table 表名 add 列名 类型 删除列:alter table 表名 drop column 列名 修改列: alter table 表名 modify column 列名 类型; -- 类型 alter table 表名 change 原列名 新列名 类型; -- 列名,类型 添加主键: alter table 表名 add primary key; 删除主键: alter table 表名 drop primary key; alter table 表名 modify 列名 int,drop primary key; 添加外键:alter table 从表 add constraint 外键名称(例如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段) 删除外键:alter table 表名 drop foreign key 外键名称 修改默认值:ALTER TABLE test_tb1 ALTER i SET DEFAULT 1000; 删除默认值:ALTER TABLE test_tb1 ALITE i DROP DEFAULT;
3. 数据行级别
select * from tb1; # 查看表中的所有数据 # 增 insert into 表(列名,列名...) values(值,值,值...) insert into 表(列名,列名...) values(值,值,值...),(值,值,值...) insert into 表(列名,列名...) values(列名,列名) from 表 # 删 delete from 表; delete from 表 where id =1 and name = 'Alice'; # 改 update 表 set name = 'Alice' where id>1; # 查 select * from 表; select * from 表 where id > 1; select nid,age,gender as gg from 表 where id > 1; # 其他 连表操作: # 连表 select * from a,b where a,.x = b.o; select * from userinfo,part where userinfo.part_nid = part.nid; # join selec * from a LEFT JOIN b ON a.x =b.o select * from userinfo left join part on userinfo.part_nid = part.nid;
内容整理:
1、数据库概念,很多 2、数据库,表,行 3、启动服务器端,再启动客户端连接服务端 - 用户管理 - 权限管理 4、SQL语句 数据库操作 * 表操作 ** - 是否可以为空 - 默认值 - 主键 - 外键 - 自增 - 数据类型(char,varchar) 数据行: 增删改查 其他: limit offset left join order by group by , having max,min,sum,count #条件,模糊