1.数据库(DB):存储数据以及数据结构的仓库
2.数据库管理系统(DBMS): 命令行模式、phpmyadmin(可视化)、其他管理工具:nav
3.用户
4.数据库系统:用户 数据库管理系统 数据库 (帮助查询 存储 管理数据的)
1》实体:表名,按照对象的概念来划分
2》属性:实体特性--》字段
5.数据库种类:
关系型:mysql、sql server、Oracle、bd2...
非关系型、 层次型、 网状型、 redis
6.常用的命令:
1>登录: mysql[-h 主机/ip] -u 用户名 -p;(p是密码,一般回车后再输入密码)
2>退出:exit; quit; \q;
3>select now();查看当前时间和日期
4>select curdate();当前日期
5>select curtime();当前时间
6>select user();查看当前用户
7>select version();查看mysql版本
7.使用命令:
1>查看数据库
show databases;
information_schema;日志信息
mysql: mysql系统库
test:测试库
2>创建数据库
create database 数据库名;
create database demo;
3>删除数据库
drp database 数据库名;
drp database demo;
4>使用数据库
use 数据库名;
use demo;
5>创建数据表
create tabale 数据表名称(
列定义;
列名称 类型 [默认值][auto_increment自增长][主索引 primary key]
列名称 类型
列名称 类型
......
索引定义;
)
6.数据类型:
1>整形:
tinyint 1字节 有符号 -128--127 无符号0-255(年龄可用)
smallint 2字节 有符号 -32768--32767 无符号 0--65535(购物价格可以用)
int 4字节(一般够用)
bigint 8字节
bool ==》tinying 1字节
2>浮点型:
float 4字节(日常生活的小数够用) 会丢失精度
double 4字节 会丢失精度
DECIMAL[M,D] 精度小数,m 总位数,d小数后变的位数。
3>字符串:
char(位数)定长符 255个字符
varchar(位数)边长字符
text 65535个字符
mediumblob 2的24次方字符
enum(val1,val2,val3... )列枚举: enum("男","女");
4>时间日期
data 日期
time 时间
datetime 日期时间
创建第一个数据表:
create table stu(
id int(6) auto_increment primary key,
stuNum varchar(6),
stuName varchar(20),
stuAge tinyint(2),
stuSex enum("1","2"),
stuTel varchar(20)
);
primary key 主键:确定唯一记录的字段
show tables; 查看数据库中的表
desc 表名称; 查看表结构
7.sql命令DDL(结构化操作)
1>表添加字段:
alter table 表名称 add 列定义
alter table stu add email varchar(200);
2>修改字段:
alter table 表名称 change 旧字段名称 新字段定义
alter table stu change email stuEmail varchar(150);
3>删除字段:
alter table 表名称 drop 字段
alter table stu drop stuEmail;
4>修改表名称:
alter table 表名 rename 新名字
alter table stu rename student;
5>删除表
drop table 表名称;
drop table student;
8.sql名 DML操作(增 删 改 查)
1>增
insert into 表名称(字段1,字段2,字段3,...) values(val1,val2,val3...);
insert into student(stuNum,stuName,stuAge,stuSex,stuTel)values("0001","panjunlan",18,"1","15626717547");
insert into student(stuNum,stuName,stuAge,stuSex,stuTel)values("0001","张三",18,"1","12345678901");
中文会出乱码 用一下2个方法解决:
set names gbk;//指DBMS 系统字符集中文字符集 (临时)
修改mysql的字符集:set character_set_connection = utf8;
show variables 查看mysql系统变量
show variables like "%character%";//查找关于字符集的系统变量
character_set_client | utf8
character_set_connection | utf8
character_set_database | utf8
character_set_filesystem | binary
character_set_results | utf8
character_set_server | utf8
character_set_system | utf8
character_sets_dir | C:\AppServ\MySQL\share\charsets\
2>查看
select * from 表名称;
select * from student;
3>修改:
update 表名称 set 字段=值,字段=值,... where id=num; (不加id整张表都会被修改)
update student set stuName="zhaoliu",stuAge=20 where id=3;
4>删除
delete from 表名称 where id=num;
delete from student where id=2;
9.mysql 聚合函数(mysql提供系统实现特定功能的函数)
一般很少在mysql语句上使用函数,会加重mysql的负担
1>算术函数
sum() 求和
select sum(stuAge)from student;
avg() 求平均值
select sum(stuAge)from student;
count() 统计记录数
select count(*)from student;
select count(*)from student where stuAge=18;......
2>字符数函数
concat(str1,str1,str3......); 拼接
select concat(StuName,StuAge)as p from student;
一般很少在mysql语句上使用函数,会加重mysql的负担
10.索引(类似于查询目录,以文件的形式存储)
特点:数据的跟新和索引的跟新同步
作用:提高查询效率。
缺点:数据索引同步跟新,全有索引会降低效率,索引过多,索引文件会很大。
用户名 手机 性别 商品名称 价格 供应商 类型 都是要加索引
索引的类型:
1>主索引:primary key 主键 确认唯一记录
2>普通索引:(最基本的索引,可以加在多列上,一般加在末尾)
创建表的时候添加
create table users(
id int(6) auto_increment primary key,
name varchar(10),
pwd varchar(20),
key dt(name)
);
对已有的表添加:
alter table student add index 索引名称(字段1,字段2...);
alter table student add index ts (stuNum,stuName);
alter table student add index ts1 (stuNum,stuName);
3>唯一索引:也可以加在多列上,加了唯一索引该列值不能重复
创建表的时候添加
create table users(
id int(6) auto_increment primary key,
name varchar(10),
pwd varchar(20),
unique key 索引名称(字段)
);
对已有的表添加:
alter table student add unique 索引名称 (字段);
alter table student add unique qu(stuTel);
4>全文索引:加在有大段字符串的文本上。(不支持中文)
创建表的时候添加
create table users(
id int(6) auto_increment primary key,
name varchar(10),
pwd varchar(20),
fulltext key 索引名称(字段)
);
对已有的表添加:
alter table student add fultext 索引名称(字段);
11.外键(表与表之间的特定关系,保持了数据的完整性和一致性)
外键控制:让用户不跟新数据,或者使用户删除数据的时候让订单同步删除。
外键特点:1.innodb 类型 2.外键是两张表的约束关系 3.外键的名称是唯一
查看:show create table 表名;
存储引擎:engine=值(innodb),
创建外键:
create table 表名(
列定义
索引定义
外键定义:[constraint 约束名称] foreign key 外键名称
references[外键名称](外键字段)
[on delete {restrict | cascade | set null | no action}]
[on update {restrict | cascade | set null | no action}]
)
restrict:拒绝对父表的删除或更新操作
cascade:父表的删除或更新,自动删除或更新字表中对应的记录。
set null:父表删除更新,设置子表外键字段null
no action:不做为。
demo:
create table user(
id int(6) auto_increment primary key,
name varchar(30),
sex int(1)
)engine=innodb
insert into user(name,sex)values("zhangsan","1");
insert into user(name,sex)values("zhanliu","2");
insert into user(name,sex)values("lisi","1");
create table orders(
order_id int(6) auto_increment primary key,
u_id int(6),
username varchar(30),
money int(6),
datatime date,
foreign key order_f_key(u_id) references user(id)
)engine=innodb;
insert into orders(u_id,username,money,datatime)values(1,"zhansan",300,"2016-8-30");
insert into orders(u_id,username,money,datatime)values(1,"zhansan",500,"2016-8-30");
insert into orders(u_id,username,money,datatime)values(2,"lisi",200,"2016-8-30");
insert into orders(u_id,username,money,datatime)values(2,"lisi",600,"2016-8-30");
insert into orders(u_id,username,money,datatime)values(3,"wanwu",100,"2016-8-30");
insert into orders(u_id,username,money,datatime)values(3,"wanwu",900,"2016-8-30");
通过修改表改变外键的属性:
alter table 表名称 add foreign key(外键字段) references 关联的主表(子段) on delete/on update casecade
alter table orders add foreign key(u_id)references user(id)on delete cascade;
删除外键:
alter table 表名称 drop foreign key 外键名称: