MySQL基本用法一

	本章节会讲到MySQL基本的安装方法,以及常用的shell语句,后续会介绍CRUD的用法,以及视图,锁,事物

MySQL安装

当前主要使用两种类型的数据库:关系型数据库、非关系型数据库,本部分主要讨论关系型数据库,对于非关系型数据库会在后面学习
所谓的关系型数据库RDBMS,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据
查看数据库排名:https://db-engines.com/en/ranking
关系型数据库的主要产品:
    oracle:在以前的大型项目中使用,银行,电信等项目
    mysql:web时代使用最广泛的关系型数据库
    ms sql server:在微软的项目中使用
    sqlite:轻量级数据库,主要应用在移动平台

windows系统下安装MySQL,之前有一个博主写的非常好,可以参考

https://blog.csdn.net/qq_37172528/article/details/80459490

linux系统下安装MySQL,直接命令行,非常简单

sudo apt-get install mysql-server
sudo service mysql start

    重启服务

sudo service mysql restart

    最基本的连接命令如下,输入后回车

mysql -u root -p

    按ctrl+d或输入如下命令退出

quit 或者 exit


如果安装mysql失败,比如启动服务时候依然失败,执行以下流程:mysqld -remove---->mysqld --initialize-insecure–>mysqld install —>net start mysql 这样就不会出问题的,亲测哦。

sql简介

SQL是结构化查询语言,是一种用来操作RDBMS(Relational Database Management System)的数据库语言,当前关系型数据库都支持使用SQL语言进行操作,也就是说可以通过 SQL 操作 oracle,sql server,mysql,sqlite 等等所有的关系型的数据库
SQL语句主要分为:
DQL:数据查询语言,用于对数据进行查询,如select
DML:数据操作语言,对数据进行增加、修改、删除,如insert、udpate、delete
TPL:事务处理语言,对事务进行处理,包括begin transaction、commit、rollback
DCL:数据控制语言,进行授权与权限回收,如grant、revoke
DDL:数据定义语言,进行数据库、表的管理等,如create、drop
CCL:指针控制语言,通过控制指针完成表的操作,如declare cursor
对于web程序员来讲,重点是数据的crud(增删改查),必须熟练编写DQL、DML,能够编写DDL完成数据库、表的操作,其它语言如TPL、DCL、CCL了解即可
SQL 是一门特殊的语言,专门用来操作关系数据库
不区分大小写

一个最简单的Python操作数据库的demo:

# 创建Connection连接
conn = connect(host='localhost', port=3306, user='your user name of mysql ', password='password of mysql', database='database_name', charset='utf8')
# 得Cursor对象
cs = conn.cursor()
# 更新
# sql = 'update students set name="刘邦" where id=6'
# 删除
# sql = 'delete from students where id=6'
# 执行select语句,并返回受影响的行数:查询一条学生数据
sql = 'select id,name from students where id = 7'
# sql = 'SELECT id,name FROM students WHERE id = 7'
count=cs.execute(sql)
# 打印受影响的行数
print(count)

MySQL常用数据类型

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

常用数值类型在这里插入图片描述
常用数值类型
常用字符串类型在这里插入图片描述常用字符串类型

在这里插入图片描述
常用日期时间类型

MySQL常用约束关系

主键primary key:物理上存储的顺序
非空not null:此字段不允许填写空值
惟一unique:此字段的值不允许重复
默认default:当不填写此值时会使用默认值,如果填写时以填写为准
外键foreign key:对关系字段进行约束,当为关系字段填写值时,会到关联的表中查询此值是否存在,如果存在则填写成功,如果不存在则填写失败并抛出异常
说明:**虽然外键约束可以保证数据的有效性,但是在进行数据的crud(增加、修改、删除、查询)时,都会降低数据库的性能,所以不推荐使用**,那么数据的有效性怎么保证呢?答:可以在逻辑层进行控制

常用mysql shell

数据库命令:

查看所有数据库

show databases;

使用数据库

use 数据库名;

查看当前使用的数据库

select database();

创建数据库

create database 数据库名  default charset utf8;
例:
create database python default  charset utf8;

删除数据库

drop database 数据库名;
例:
drop database python;

数据表命令:

查看当前数据库中所有表

show tables;

查看表结构

desc 表名;

创建表

    auto_increment表示自动增长

CREATE TABLE table_name(
    column1 datatype contrai,
    column2 datatype,
    column3 datatype,
    .....
    columnN datatype,
    PRIMARY KEY(one or more columns)
);

例:创建班级表

create table classes(
    id int unsigned auto_increment primary key not null,
    name varchar(10)
);

    例:创建学生表
    
    create table students(
        id int unsigned primary key auto_increment not null,
        name varchar(20) default '',
        age tinyint unsigned default 0,
        height decimal(5,2),
        gender enum('男','女','保密'),
        cls_id int unsigned default 0
    )

修改表-添加字段

alter table 表名 add 列名 类型;
例:
alter table students add birthday datetime;

修改表-修改字段:重命名版

alter table 表名 change 原名 新名 类型及约束;
例:
alter table students change birthday birth datetime not null;

修改表-修改字段:不重命名版

alter table 表名 modify 列名 类型及约束;
例:
alter table students modify birth date not null;

修改表-删除字段

alter table 表名 drop 列名;
例:
alter table students drop birthday;

删除表

drop table 表名;
例:
drop table students;

查看表的创建语句

show create table 表名;
例:
show create table classes;

补充:
程度从强到弱
1、drop table tb

  drop将表格直接删除,没有办法找回,即物理删除,包括表结构和空间

2、truncate (table) tb

  一次性删除表中的所有数据,不能与where一起使用

3、delete from tb (where)

  删除表中的数据(可制定某一行)

区别:truncate和delete的区别

     1、事务:truncate是不可以rollback的,但是delete是可以rollback的;

          原因:truncate删除整表数据(ddl语句,隐式提交),delete是一行一行的删除,可以rollback

     2、效果:truncate删除后将重新水平线和索引(id从零开始) ,delete不会删除索引    

     3、 truncate 不能触发任何Delete触发器。

     4、delete 删除可以返回行数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值