MySQL:数据库基础

一、什么是MySQL?

MySQL 是一个小型关系型数据库管理系统,开发者为瑞典 MySQL AB 公司。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,MySQL 被广泛地应用在Internet 上的中小型网站中。
MySQL的特征

  • 性能快捷、优化SQL语言
  • 容易使用
  • 多线程和可靠性
  • 多用户支持
  • 可移植性和开放源代码
  • 遵循国际标准和国际化支持
  • 为多种编程语言提供API

二、MySQL基本操作

(一)mysql命令

mysql -h host_name -u user_name –ppassword
  • h :当连接 MySQL 服务器不在同台主机时,填写主机名或 IP 地址
  • u :登录 MySQL 的用户名
  • p :登录 MySQL 的密码

注意:密码如果写在命令行的时候一定不能有空格。如果使用的系统为 linux 并且登陆用户名字与 MySQL 的用户名相同即可不用输入用户名密码,linux 默认是以 root 登陆,windows 默认用户是 ODBC。

(二)mysql程序常用命令

  • 显示所有数据库:
show databases;
  • 选定默认数据库:
use dbname;
  • 显示默认数据库中所有表:
show tables;
  • 退出 mysql 程序:
\q

三、数据库的基础知识

数据完整型 = 可靠性 + 准确性

分类 概述 约束方法
数据实体完整性 实体的完整性强制表的标识符列或主键的完整性 唯一约束、主键约束或标识列
字段完整性 如果插入的数据不满足限制要求,数据库管理系统就拒绝执行操作 限制数据类型、检查约束、外键约束、默认值、非空约束
引用完整性 在删除和输入记录时,保持表之间已定义的关系,确保键值在所有表中一致。不能孤立,即引用不存在的值 外键约束
自定义完整性 用户自己定义的业务规则 规则、存储过程、触发器

完整型包括:列值要求(约束)、行值要求(约束)

四、什么是SQL?

(一)SQL语法组成

SQL 概述 命令
DML(Data Manipulation Language数据操作语言) 查询、插入、删除和修改数据库中的数据 SELECT、INSERT、 UPDATE 、DELETE等
DCL(Data Control Language数据控制语言) 用来控制存取许可、存取权限等 GRANT、REVOKE等
DDL(Data Definition Language数据定义语言) 用来建立数据库、数据库对象和定义其列 CREATE TABLE、DROP TABLE、ALTER TABLE等

功能函数:日期函数、数学函数、字符函数、系统函数等。

(二)MySQL中的SQL语言

  1. 属于一个SQL语句,使用分号(;)结尾,否则mysql认为语句没有输入完。
  2. 箭头(->)代表SQL语句没有输入完取消SQL语句使用(\c)。
  3. SQL语句关键字和函数名不区分大小写(Linux区分,Windows不区分)。
  4. 使用函数时,函数名和后面的括号之间不能有空格。

(三)MySQL数据类型

  • 数据类型种类
  • 数值列类型
    数值列类型包括整型和浮点型
类型 大小 范围(有符号) 范围(无符号) 用途
TINYINT 1 byte (-128,127) (0,255) 小整数值
SMALLINT 2 bytes (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 bytes (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 bytes (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
FLOAT 4 bytes (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度、浮点数值
DOUBLE 8 bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度、浮点数值
DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值
  • 字符串列类型
    CHAR类型和VARCHAR类型。
    CHAR类型和VARCHAR类型长度范围都是0~255之间的大小。他们之间的差别在于MySQL处理存储的方式:
    A. CHAR把这个大小视为值的准确大小(用空格填补比较短的值)。
    B. VARCHAR类型把它视为最大值并且只使用了存储字符串实际上需要的字节数(增加了一个额外的字节记录长度)。因而,较短的值当被插入一个语句为VARCHAR类型的字段时,将不会用空格填补。
  • 日期和时间列类型
    存储如“2005 -1-1” 或者“12:00:00”这样的数值的值。在MySQL中日期是按”年-月-日”的顺序。
类型说明 格式 取值范围 存储要求
DATE "YYYY-MM-DD" "1000-01-01"到"9999-12-31" 3字节
TIME "hh:mm:ss" "-838:59:59"到"838:59:59" 3字节
DATETIME "YYYY-MM-DD hh:mm:ss" "1000-01-01 00:00:00"到"9999-12-31 23:59:59" 8字节
TIMESTAMP[(M)] "YYYYMMDDhhmmss" 19700101000000到2037年的某个时刻 4字节
YEAR[(M)] "YYYY" 1901到2155 1字节

(四)数值列的完整性约束

  • AUTO_INCREMENT
    自动标识列,在需要产生唯一标志符号或者顺序值时候,可用此属性。
create table t(id int auto_increment not null primary key);
  • UNSIGNED
    无符号,此属性禁用负值,将数值的取值范围从零开始。
create table t(num tinyint , num2 tinyint unsigned);
  • NULL 和NOT NULL
    默认为NULL,即插入值时没有在此字段插入值时自动填NULL,如果指定了NOT NULL,则必须在插入值时在此字段添入值,不允许插入NULL值。
  • DEFAULT
    可以通过此属性来指定一个缺省值,即如果没有在此列添加值,那么默认添加DEFAULT后指定值。
  • ZEROFILL
    前导零填充数值类型值以达到列的显示宽度。
create table test2(num1 int default 1,num2 int zerofill);

五、数据库操作

(一)建立数据库操作

语法:

create database 数据库名

叙述:创建一个具有指定名称的数据库。如果要创建的数据库已经存在,或者没有创建它的适当权限,则此语句失败。

(二)建立表操作

语法 :

create table 表名(    
        列名1 列类型 [< 列的完整性约束>],
        列名2 列类型 [< 列的完整性约束>],
        ... ... );

叙述:在当前数据库下新创建一个数据表。
列类型:表示该列的数据类型。

(三)显示表结构操作

语法:

describe 表名; 表名;
desc 表名; 表名;

叙述:用于显示表的创建结构。

(四)删除数据库或表操作

  • 删除表操作
    语法:
drop table [if exists] tab_name [,tab_name]...

叙述:从数据库中删除给定的表。如果给出if exists 子句,则删除不存在的表不会出错。

  • 删除数据库操作
    语法:
drop database [if exists] db_name

叙述:删除给定的数据库。在删除一个数据库后,它就永远没有了,因此要特别小心。如果给出if exists 子句,则删除不存在的数据库不会出错。

(五)更改表结构操作

语法:

alter table 表名 action;

说明:
action可以是如下语句:

add 列名 建表语句 [first | after 列名] //可以为表添加一列
//如果没指定first或者after,则在列尾添加一列,否则在指定列添加新列
add primary key (列名) //为表添加一个主键,如果主键已经存在,则出现错误
add foreign key (列名) references 表名 (列名) //为表添加一个外键
alter 列名 set default 默认值 //可以更改指定列默认值
change 旧列名 新列名 <建表语句> [first | after 列名] //可以更改列类型和列名称
//如果原列的名字和新列的名字相同
modify 列名 <建表语句> [first | after 列名] //和change的作用相同
drop 列名 // 可以删除一列
drop primary key // 可以删除主键
engine 类型名 //可以改变表类型
rename as 新表名 // 可以将表名更改

六、MySQL运算符

  • 算数运算符
运算符 语法 说明
+ a + b 加,操作数之和
- a - b 减,操作数之差
- - a 一元减号,操作数取负
* a * b 乘,操作数之积
/ a / b 除,操作数之商
% a % b 模,操作数除后的余数
  • 比较运算符
    比较运算符允许我们对表达式的左边和右边进行比较。一个比较运算符的结果总是1(真),0(假),或是为NULL(不能确定)。
    比较运算符可以用于比较数字和字符串。数字作为浮点值比较,而字符串以不区分大小写的方式进行比较(除非使用特殊的BINARY二进制关键字)。
运算符 语法 说明
= a = b 如果两操作数相等,为真
!=,<> a != b, a <> b 如果两操作数不等,为真
< a < b 如果a小于b,为真
<= a <= b 如果a小于等于b,为真
> a > b 如果a大于b,为真
>= a >= b 如果a大于等于b,为真
IN a IN (b1,b2,...) 如果a为b1,b2,...中任意一个,为真
BETWEEN a BETWEEN a AND c 如果a值在b与c之间(包括b、c),为真
LIKE a LIKE b SQL模式匹配:如果a与b匹配,为真
NOT LIKE a NOT LIKE b SQL模式匹配:如果a与b不匹配,为真
REGEXP a REGEXP b 扩展正规表达式匹配:如果a与b匹配,为真
NOT REGEXP a NOT ERGEXP b 扩展正规表达式匹配:如果a与b不匹配,为真
<=> a <=> b 如果两操作数相同(即使为NULL),为真
IS NULL a IS NULL 如果操作数为NULL,为真
IS NOT NULL a IS NOT NULL 如果操作数不为NULL,为真

MySQL数据库中的通配符:
“%” ( 百分号) 代表任意长度(长度可以为0)的字符串
“_ ”( 下横线) 代表任意单个字符

  • 逻辑运算符
    与(AND,&&)、或(OR,||)、非(NOT,!)
  • 位运算符
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容