码迷,mamicode.com
首页 > 数据库 > 详细

MySQL基础(一)

时间:2018-11-17 19:16:04      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:image   pytho   退出   运行   小数   exit   nod   详细   tle   

一、MySQL的相关概念介绍

MySQL 为关系型数据库(Relational Database Management System), 这种所谓的"关系型"可以理解为"表格"的概念, 一个关系型数据库由一个或数个表格组成。

MySQL规范

  • 在数据库系统中 , SQL语句不区分大小写 (建议用大写) , 但字符串常量区分大小写 ; 建议命令大写 , 表名库名小写
  • SQL语句可单行或多行书写 , 以" ; "结尾 , 关键字不能跨多行或简写
  • 用空格和缩进来提高语句的可读性 , 子句通常位于独立行 , 便于编辑 , 提高可读性
  • 单行注释 : -- 多行注释 : / *... */
  • SQL语句可拆行操作

二、MySQL中的数据类型

MySQL有三大类数据类型, 分别为数字、日期\时间、字符串, 这三大类中又更细致的划分了许多子类型:

  • 数字类型
    • 整数: tinyint、smallint、mediumint、int、bigint
    • 浮点数: float、double、real、decimal
  • 日期和时间: date、time、datetime、timestamp、year
  • 字符串类型
    • 字符串: char、varchar
    • 文本: tinytext、text、mediumtext、longtext
    • 二进制(可用来存储图片、音乐等): tinyblob、blob、mediumblob、longblob

这里不能详细对这些类型进行介绍了, 篇幅可能会很长, 详细介绍参见: 《MySQL数据类型》 :http://www.cnblogs.com/zbseoag/archive/2013/03/19/2970004.html

三、使用MySQL数据库

当 MySQL 服务已经运行时, 我们可以通过MySQL自带的客户端工具登录到MySQL数据库中, 首先打开命令提示符, 输入以下格式的命名:

mysql -h 主机名 -u 用户名 -p 密码;
  • -h : 该命令用于指定客户端所要登录的MySQL主机名, 登录当前机器该参数可以省略;
  • -u : 所要登录的用户名;
  • -p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。

输入 exit 或 quit 退出登录。

显示当前时间

select now();

显示数据库版本

select version();

创建一个数据库

create database 数据库名 [其他选项];

例如我们需要创建一个名为python01 的数据库, 在命令行下执行以下命令:

create database python01 charset=utf8;  # charset=utf8 是指定数据库支持的编码类型,默认是拉丁文,注意不是utf-8

注意: MySQL语句以分号(;)作为语句的结束

查看数据库

show databases; # 注意加s

查看数据库的创建语句

show create database python01;

修改数据库的字符类型

alter database python01 charset=utf8;

删除数据库

drop databse python01;

使用数据库

use python01;

查看当前使用的数据库

select database();

数据表的操作

创建数据表

create table 数据表名字 (字段 类型 约束, ....)

eg:

create table xxxx (id int, name varchar(30));

查看数据表

show tables;

查看数据表详细信息

desc xxxx;

 加约束

create table xxx (id int primary Key not null auto_increment, name varchar(30));

为了方便写的时候观看,可以拆成多行

create table xxx (
    id int primary Key not null auto_increment, 
    name varchar(30)
);

 小练习题

create table student(
    id int unsigned not null primary Key auto_increment,
    name varchar(20),
    age tinyint unsigned default 0,
    hight decimal(5, 2), # 有5个数字,其中两个是小数
    gender enum("", "", "中性", "保密") default "保密", # 枚举
    cls_id int unsigned
);

往表中插入数据

insert into student value(0, "老王", 18, 180.88, "", 1);

查看表中所有列

 select * from student;

数据表的增删改查

增加字段

alter table student add birthday datetime;

修改字段,不重命名版

alter table student modify birthday date; # birthday字段不变,改变类型

修改字段,重命名版

alter table student change birthday birth date default "1990-01-01";

删除字段

alter table student drop hight;

相应的值也会被删除

删除数据表

 drop table xxx;

 


 

最常用的部分,数据的增删改查

向表中插入数据

insert into classes value(0, "菜鸟班"); # classes的id被设定为自动增加,所以插入数据时id部分随便我们怎么写都行,都会自动改变按应该的顺序增加

eg:

insert into classes value(null, "菜鸟班");
insert into classes value(default, "菜鸟班");

# 枚举中的下标从1开始  1----------》 “男”

insert into student values(default, "小李飞刀“, 20, 1, 1, "1990-02-01");

技术分享图片

部分插入

insert student(name, gender) values("小乔", 2);

多行插入

insert into student(name, gender) values("大乔", 2),("貂蝉", 2);

更新数据

update student set gender=2 where id=1; # 不指定id将全部修改

定条件查询

select * from student where name="小乔";
select * from student where id > 3;
select name, gender from student where id=2;
select name as 姓名, gender as 性别 from student where id=2;

技术分享图片

删除数据

delect from student where xxx;

逻辑删除,用一个字段表示这条信息不在使用

给student添加is_delete字段,bit类型

alter table student add is_delete bit default 0;

 


 

四、存储引擎

创建新表时如果不指定存储引擎 , 那么系统就会使用默认存储引擎 , MySQL 5.5 之前的默认存储引擎是MyISAM , 5.5 之后改为了InnoDB

查看当前数据库支持的存储引擎类型;

SHOW ENGINES;

1.MyISAM 和 InnoDB的适用场景

MyISAM适合:(1)做很多count 的计算;(2)插入不频繁,查询非常频繁;(3)没有事务。

InnoDB适合:(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。

2.MyISAM 和 InnoDB的区别

1)MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持

2)myisam表不支持外键

3)在执行数据库写入的操作(insert,update,delete)的时候,myisam表会锁表,而innodb表会锁行

4)当你的数据库有大量的写入、更新操作而查询比较少或者数据完整性要求比较高的时候就选择innodb表。当你的数据库主要以查询为主,相比较而言更新和写 入比较少,并且业务方面数据完整性要求不那么严格,就选择mysiam表。因为mysiam表的查询操作效率和速度都比innodb要快

 

MySQL基础(一)

标签:image   pytho   退出   运行   小数   exit   nod   详细   tle   

原文地址:https://www.cnblogs.com/linyuhong/p/9974153.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!