数据库
MySQL
单机程序(自己DB)单机程序(公用DB)MySQL:是用于管理文件的一个软件 - 服务端软件 - socket服务端 - 本地文件操作 - 解析指令【SQL语句】 - 客户端软件(各种各样) - socket客户端 - 发送指令 - 解析指令【SQL语句】 PS: - DBMS数据库管理系统 - SQL语句技能: - 安装 服务端和客户端 - 连接 - 学习SQL语句规则;指示服务端做任意操作
其他类似软件:
关系型数据库:sqllite,db2,oracle,access,sql server MySQL 非关系型数据库:MongoDB,redis- MySQL安装
Windows:
可执行文件压缩包 放置任意目录 初始化 > http://blog.csdn.net/mchdba/article/details/53618276 针对服务端 `mysqld --initialize-insecure` 查看data目录,.err文件中有初始化创建的账号密码信息 服务端:E:\wupeiqi\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld --initialize-insecure # 用户名 root 密码:空 启动服务端: E:\wupeiqi\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld\mysqld 客户端连接: E:\wupeiqi\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld\mysql -u root -p 发送指令: show databases; create database db1;
环境变量的配置: E:\wupeiqi\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin mysqld windows服务: E:\wupeiqi\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld --install net start MySQL E:\wupeiqi\mysql-5.7.16-winx64\mysql-5.7.16-winx64\bin\mysqld --remove net start MySQL net stop MySQL
- 关于连接
文件夹【数据库】
- 文件【表】
- 数据行【行】
- 数据行
- 数据行
- 连接:
默认:用户root
show databases; //查看数据库表 use 数据库名称; //使用数据库【文件夹】 show tables; //查看文件夹中的【表格】 select * from 表名; //获取表格的数据 select name,age,id from 表名; //从表中获取某些特定的【字段】 mysql数据库user表 use mysql; select user,host from user;
通信交流
- 创建用户: create user 'alex'@'192.168.1.1' identified by '123123'; create user 'alex'@'192.168.1.%' identified by '123123'; create user 'alex'@'%' identified by '123123';
- 授权: 权限 人
grant select,insert,update on db1.t1 to 'alex'@'%';grant all privileges on db1.t1 to 'alex'@'%';//百分号内填写对方的ip,这样就绑定了对方的用户名和登陆ip revoke all privileges on db1.t1 from 'alex'@'%';//移除权限DBA: 用户名密码
学习SQL语句规则
操作文件夹
create database db2;create database db2 default charset utf8; *****show databases;drop database db2;
操作文件
show tables;create table t1(id int,name char(10)) default charset=utf8;create table t1(id int,name char(10))engine=innodb default charset=utf8;create table t3(id int auto_increment,name char(10))engine=innodb default charset=utf8; *****create table t1(列名 类型 null,列名 类型 not null,列名 类型 not null auto_increment primary key,id int,name char(10))engine=innodb default charset=utf8;# innodb 支持事务,原子性操作# myisam myisam
desc customers_info;
查看某张表信息/结构
auto_increment
表示:自增
自增补充:修改自增起始值:`alter table t1 auto_increment=20;`自增步长-----——>会话级别:show session variables like "auto_inc%";//查看会话级别变量set session auto_increment_increment=2//设置会话步长为2set session auto_increment_offset=10;//设置会话起始值_-->全局级别:show global variables like "auto_inc%";//查看全局变量set global auto_increment_invrement=2;//设置全局步长set global auto_increment_offset=10;
primary key: 表示 约束(不能重复且不能为空); 加速查找
not null
: 是否为空 增删改查:
标记查看表
mysql> desc department -> ;+-------+-------------+------+-----+---------+----------------+| Field | Type | Null | Key | Default | Extra |+-------+-------------+------+-----+---------+----------------+| id | int(11) | NO | PRI | NULL | auto_increment || dname | varchar(32) | YES | | NULL | |+-------+-------------+------+-----+---------+----------------+2 rows in set (0.00 sec)mysql> show create table stuff \G*************************** 1. row *************************** Table: stuffCreate Table: CREATE TABLE `stuff` ( `sid` int(11) NOT NULL AUTO_INCREMENT, `sname` varchar(32) DEFAULT NULL, `did` int(11) DEFAULT NULL, PRIMARY KEY (`sid`), KEY `fk_stuff_did` (`did`), CONSTRAINT `fk_stuff_did` FOREIGN KEY (`did`) REFERENCES `department` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf81 row in set (0.00 sec)
数据类型:
- 数字: 整数
(范围不同):int tinyint bigint(unsigned/signed)
浮点数
float0.00000100000123000123001230123DOUBLE0.000000000000000000001000001230001230012301230.00000100000123000000000000000decimal(精确小数,可以指定精度)0.1
- 字符串: 字符串类型:char varchar(可变长) 最高只能有255个字符 如果高于255,就用text类型
char(10) 速度快()varchar(10) 节省空间PS: 创建数据表定长列往前放text类型上传文件: 文件存硬盘db存路径
- 时间类型
DATETIME
- 枚举类型 enum
- 集合类型 set
create table t1(id int signed not null auto_increment primary key,// 主键 自增num decimal(10,5),name char(10))engine=innodb default charset=utf8;
清空表:
delete from t1;truncate table t1;
删除表:
drop table t1;
用法:
如果表中存在dt_class,就删除这个表,一般用在表头可以确保创建表的策略。DROP TABLE IF EXISTS "dt_class";
- 操作文件中内容
插入数据:
insert into t1(id,name) values(1,'alex');
删除:delete from t1 where id<6
修改: update t1 set age=18;update t1 set age=18 where age=17;
查看数据:
select * from t1;
主键和外键
主键:
一个表只能有一个主键,但是逐渐可以由多列组成- 外键:
create table userinfo( uid bigint auto_increment primary key, name varchar(32), department_id int, xx_id int, constraint fk_user_depar foreign key ("department_id",) references department('id'), constraint fk_xx_ff foreign key (xx_id) references XX(id))engine=innodb default charset=utf8;//注意,有些版本的mysql并不支持这种,括号内在加 引号的方式。推荐去掉引号和末尾的逗号。create table department(id bigint auto_increment primary key,title char(15))engine=innodb default charset=utf8;
为已经添加好的数据表添加外键:
语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
作业:
http://images2015.cnblogs.com/blog/425762/201608/425762-20160803224643778-2071849037.png http://www.cnblogs.com/wupeiqi/articles/5729934.html作业:
mysql> create database db_school;Query OK, 1 row affected (0.00 sec) mysql> use db_school;Database changed mysql> create table t_teacher(id tinyint unsigned not null auto_increment,name varchar(60) not null,primary key(id))engine=innodb -> ;Query OK, 0 rows affected (0.02 sec) mysql> insert into t_teacher(name)value('scott'),('jerry'),('peter'),('jack');Query OK, 4 rows affected (0.01 sec)Records: 4 Duplicates: 0 Warnings: 0 mysql> select * from t_teacher -> ;+----+-------+| id | name |+----+-------+| 1 | scott || 2 | jerry || 3 | peter || 4 | jack |+----+-------+4 rows in set (0.00 sec) mysql> create table t_course(cid tinyint unsigned not null auto_increment,cname varchar(30) not null,primary key(cid))engine=innodb -> ;Query OK, 0 rows affected (0.02 sec) mysql> alter table t_course add column tid tinyint not null;Query OK, 0 rows affected (0.04 sec) mysql> insert into t_course(cname,tid)value('oppo','3'),('vivo','2'),('sansang','3');Query OK, 3 rows affected (0.01 sec)Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from t_course;+-----+---------+-----+| cid | cname | tid |+-----+---------+-----+| 1 | oppo | 3 || 2 | vivo | 2 || 3 | sansang | 3 |+-----+---------+-----+3 rows in set (0.00 sec) mysql> create table t_class( -> id tinyint unsigned not null auto_increment primary key, -> class char(12) not null)engine=innodb charset=utf8;Query OK, 0 rows affected (0.01 sec) mysql> insert into t_class(class)values('三年二班'),('三年三班'),('三年一班');Query OK, 3 rows affected (0.01 sec)Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from t_class;+----+--------------+| id | class |+----+--------------+| 1 | 三年二班 || 2 | 三年三班 || 3 | 三年一班 |+----+--------------+3 rows in set (0.00 sec)