美文网首页
05-Mysql数据库01

05-Mysql数据库01

作者: 努力爬行中的蜗牛 | 来源:发表于2018-11-15 22:56 被阅读0次

当前主要使用为两种类型的数据库:关系型数据库和非关系型数据库。
关系型数据库核心元素

  • 数据行:记录
  • 数据列:字段
  • 数据表:数据行的集合
  • 数据库:数据表的集合
RDBMS

所谓的关系型数据库RDBMS,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
关系型数据库的主要产品:

  • oracle:在以前的大型项目中使用,银行、电信等项目
  • mysql:web时代使用最广泛的数据库
  • ms sql server:在微软的项目中使用
  • sqlite:轻量级数据库,主要应用在移动平台
SQL

SQL是结构化查询语言,是一种用来操作RDBMS的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过SQL操作oracle,sql server,mysql,sqlite等所有的关系型数据库。
SQL语句主要分为:

  • DQL:数据查询语言,用于对数据库查询,如select
  • DML:数据库操作语言,对数据进行增加,修改,删除,如insert、update、delete
  • TPL:事物处理语言,对事物进行处理,比如begin transaction、commit、rollback
    DCL:数据控制语言,进行授权与权限回收,如grant、revoke
    DDL:数据定义语言,进行数据库,表的管理等,如create,drop
    CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
    对于web程序员来讲,重点是数据的crud(增删改查),必须熟练编写DQL、DML,能够编写DDL完成数据库,表的操作,其他语言如TPL、DCL、CCL了解即可。
    SQL是一门特殊的语言,专门用来操作关系型数据库
    不区分大小写
mysql安装(Ubuntu)

1.服务器安装

# 安装服务器
sudo apt-get install mysql-server
# 启动服务
sudo service mysql start
# 查看进程中是否存在mysql服务
ps ajx | grep mysql
# 停止服务
sudo service mysql stop
# 重启服务
sudo service mysql restart

2.配置

  • 配置文件目录为/etc/mysql/mysql.conf.d/mysql.conf
  • 主要配置如下:
    bind-address 表示服务器绑定的ip,默认为127.0.0.1
    port表示端口,默认为3306
    datadir表示数据库目录,默认为/var/lib/mysql
    general_log_file表示普通日志,默认为/var/log/mysql/mysql.log
    log_error表示错误日志,默认为/var/log/mysql/error.log

3.客户端安装

# 安装客户端
sudo apt-get install mysql-client
# 启动客户端
sudo mysql
数据的完整性
  • 一个数据库就是一个完整的业务单元,可以包含多张表,数据被存储在表中
  • 在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,包括数据字段的类型、约束。

数据类型

  • 可以通过查看帮助文档查阅所有支持的数据类型
  • 使用数据类型的原则是:够用就行,尽量使用取值范围小的,而不用大的,这样可以更多的节省存储空间
  • 常用数据类型如下:
    整数:int,bit
    小数:decimal
    字符串:varchar,char
    日期时间:date,time,datetime
    枚举类型:enum
    特别说明的类型如下:
    decimal表示浮点数,如udecimal表示共存5位数,小数占2位
    char表示固定长度的字符串,如char(3),如果填充‘ab’时会补一个空格为‘ab ’
    varchar表示可变长度的字符串,如varchar(3),填充‘ab’时就会存储‘ab’
    字符串text表示存储大文本,当字符串大于4000时推荐使用
    对于图片、音频、视频等文件,不存储在数据库中,而是上传到某个服务器,然后在表中存储这个文件的保存路径
  • [更完全的数据类型可以参考]http://blog.csdn.net/anxpp/article/details/51284106

约束

  • 主键primary key:物理上存储的顺序
  • 非空not null:此字段不允许填写空值
  • 唯一unique:此字段不允许重复
  • 默认default:当不填写此值时会使用默认值,如果填写以填写为准
  • 外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
数据库的操作
-- 链接数据库
mysql -uroot -p
mysql -uroot -p123 # 123为数据库链接密码

-- 退出数据库
exit/quit/ctrl+d

-- sql语句最后需要有分毫;结尾
-- 显示数据库版本
select version();

-- 显示时间
select now();

-- 查看所有数据库
show databases;

-- 创建数据库
create database python04;

-- 查看创建数据库语句
show create database python04;
show create database python04new charset=utf8;

-- 查看当前使用的数据库
select database();

-- 使用数据库
use python04;

-- 删除数据库
drop database python04;
drop database `python-04`;
数据表的操作
-- 查看当前数据库中所有表
show tables;

-- 创建表
create table xxx(id int, name varchar(30));
create table yyy(id int primary key not null auto_increment,name 
 varchar(30));
 create table students( id int unsigned not null primary key, name varchar(30), age tinyint unsigned, high decimal(5,2), gender enum("man","woman"), clis_id int unsigned );
-- 查看当前数据库中的所有表
show tables;

-- desc 数据表的名字
desc xxx;

-- 向表中插入数据
insert into students values(0,zyx,18,175,man,0);

-- 查询表中数据
select * from students;

-- 表中添加字段
alter table students add birthday datetime;

-- 修改表中字段名类型
alter students modify birthday date;

-- 修改表中字段名
alter table students change birthday birth data default "1997-01-01";

-- 删除表中字段
alter table  students drop height;

-- 删除表
alter table drop students;

-- 显示table的创建过程
show create table students;

增删改查(curd)
-- 增
insert into students values(0,"zyx2","man",1,"2017-01-01")
-- 枚举
insert into students values(4,"zyx4",2,2,"2017-01-01");
-- 部分插入
insert into students (name,sex) values ("001","man");
-- 多行插入
insert into students (name,sex) values ("002","woman"),("003","man")

-- 修改
update students set sex=1;  -- 全部都改
update students set sex=2 where id=1;
update students set name="005" ,sex=2 where id=3;

-- 查询
-- 查询所有列
-- select * from 表名;
select * from students; -- 查询全部
select * from students where id > 2;
select name,sex from students;
select name as 姓名,sex as 性别 from students;

-- 删除
-- 物理删除
delete from students;
delete from students where id = 1;
-- 逻辑删除
-- 添加逻辑删除字段 bit只有0 1 两个
alter add table students id_delete bit default=0;
update students set is_delete=1 where id=1;

相关文章

网友评论

      本文标题:05-Mysql数据库01

      本文链接:https://www.haomeiwen.com/subject/dpwkfqtx.html