数据 描述事物的符号
数据库 存放数据的仓库
数据库管理系统 组织和存储数据 维护高效的获取和维护数据
数据库管理员(Database Administrator DBA)
最终用户 数据库应用程序的使用者
关系数据库
采用关系结构存储与管理数据
采用结构化查询语言SQL作为客户端与数据库服务器间的桥梁
目前主流数据库技术
NOSQL
Not Only Sql数据库 泛指非关系数据库
mysql设置编码:
vim /etc/my.cnf
在[mysqld]选项下加入 default-character-set=utf8
安装mysql后执行mysql_secure_installation进行配置
设置root用户允许远程连接
grant all on *.* to root@'%' identified by "123456"
SQL语句:结构化查询语言
DQL 数据查询语言
DML 数据操作语言
DDL 数据控制语言
TCL 事物控制语言
DDL语句:
show databases
create database 数据库名 charset=utf8
drop database 数据库名
use 数据库名
select database() 查看当前选择的数据库
show tables
create table 表名(
字段名 类型 约束,
...
)
alter table 表名 add|change|drop|modify 列名 类型
decs 表名 查看表结构
rename table 旧表名 to 新表名
DML语句
insert into 表名 values (val1,val2)
insert into 表名 (col1, col2 ) values (val1,val2)
update 表名 set 字段名=值 where 条件
delete from 表名 where 条件
DQL语句
select * form 表名
使用distinct 清除重复行
order by (asc|desc) 排序 可以多字段排序
limit start, count; 从第几行开始取几行 用于分页
-- 创建表
create table t_student
(
id int(4) primary key,
sname varchar(200) not null,
address varchar(200)
);
-- 删除表
drop table t_student
-- 查看表结构
desc t_student
-- 添加表字段
alter table t_student add sex int(1) not null default 1
-- 改变表字段
alter table t_student change sname name varchar(300) not null
-- 修改表字段
alter table t_student modify id int(4) auto_increment
-- 查询
select * from t_student
-- 插入所有字段值
insert into t_student values(1,"zhangsan", "beijing", 0)
-- 插入指定字段值
insert into t_student (id, name) values (2, "lisi")
-- 插入多行
insert into t_student (id, name) values (3, "wangwu"), (4, "zhaoliu")
-- 插入带自增字段的表数据
insert into t_student values(0, "sunqi", "beijing", 1)
-- 把id=5的记录地址改为广州
update t_student set address='guangzhou' where id =5
-- 删除所有数据
delete from t_student
-- 删除地址为beijing的学生
delete from t_student where address="beijing"
-- 执行sql脚本文件
备份
mysql dump -uroot -p 数据库名 > 文件名.sql
恢复
mysql dump -uroot -p 数据库名 < 文件名.sql
聚合函数:快速统计数据
count(*|字段名|常量) 统计有多少记录
max(字段名) 查询最大值啊
min(字段名)最小值
avg(字段名) 平均值
sum(字段名) 求和
内置函数
concat (str1,str2,...)连接字符串
substring(str, pos , count) 截取字符创
trim(str) 去除空格
时间函数
data_format(current_data(), "%y%m%d") 日期变字符串
分组
GROUP BY 子句将表分成若干组
语法 select * from table [where ] [group by] [order by]
-- 统计每个部门平均工资
select deptno, avg(sal) from group by deptno
如果存在group分组 select子句不能写group by 没有的字段 除非这些字段用在聚合函数中
having用于过滤分组后的结果
表的约束
主键约束,唯一约束,检查约束, 非空约束, 外键约束
索引:加速对表的查询
主键自动添加索引
手动创建索引
create index 索引名 on table (col1, col2...)
drop index
索引注意:
1、索引数据可能占用大量的存储空间
2、 索引改善检索操作的性能 降低插入 修改删除的性能
3.限制表中的索引数目
4、唯一性不好数据建索引用处不大
5、索引用于数据过滤和数据排序
6、可以在索引中定义多个列
视图:从若干表和其他视图构造出来的虚表
create view v_tmp as select * from emp [whith read only]
事务:一个操作序列,这些操作要么都做 要么都不做
开启 begin
提交 commit
回滚 rollback
关系:
一对一关系 只需要让外键字段同时有唯一约束
一对多 只需要在那张表中增加一个外键字段
多对多 需要一个中间表 转化成两个多对一关系