了解mysql文章_一篇文章了解MySQL(一)

一篇文章大致了解MySQL,从基础的语法查询到后面的事务机制,简单了解一下MySQL涉及的东西,最重要的还是多练多用多敲

一、初识MySQL

数据库总览

关系型数据库(SQL)

MySQL,Oracle,SQL Server…

非关系型数据库(NOSQL)

Redis,MongoDB,HBase…

二、数据库操作

数据库操作

create database [if not exists] test1; --创建数据库

drop database [if exists] test1; --删除数据库

show databases; -- 查看数据库

use test1; --使用数据库

界面操作

cd5c6a420fb455dca7bc455ff2004fdb.png

三、数据表操作

create table [if not exists] `表名`(

'字段名1' 列类型 [属性][索引][注释],

'字段名2' 列类型 [属性][索引][注释],

#...

'字段名n' 列类型 [属性][索引][注释]

)[表类型][表字符集][注释];

(反引号用于区别MySQL保留字与普通字符而引入的 .)

字段类型

整数类型

6a720e725ff406ac7ee517cc3acb0a49.png

小数类型

5c21c1aa758e260ea687fc8fd3604cb8.png

字符串类型

d6fef8adcda159666571fbc4f245e4e5.png

日期类型

3c3742f4b1f95e51b6f83b8d3b47e124.png

数据字段属性

UnSigned

无符号的

声明该数据列不允许负数

ZreoFull

o填充的

不足位数的用0来填充,如int(3),9表示009

Auto_InCrement

自动增长的 , 每添加一条数据 , 自动在上一个记录数上加 1(默认)

通常用于设置主键 , 且为整数类型

NOT NULL

如果设置为NOT NULL , 则该列必须有值

DEFAULT

例如,性别字段,默认为"男" , 否则为 “女” ; 若无指定该列的值 , 则默认值为"男"的值

Example

CREATE TABLE IF NOT EXISTS `student` (

`id` int(4) NOT NULL AUTO_INCREMENT COMMENT '学号',

`name` varchar(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',

`pwd` varchar(20) NOT NULL DEFAULT '123456' COMMENT '密码',

`sex` varchar(2) NOT NULL DEFAULT '男' COMMENT '性别',

`birthday` datetime DEFAULT NULL COMMENT '生日',

`address` varchar(100) DEFAULT NULL COMMENT '地址',

`email` varchar(50) DEFAULT NULL COMMENT '邮箱',

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

修改表操作

修改表(ALTER TABLE )

修改表名:ALTER TABLE 旧表名 RENAME AS 新表名

添加字段:ALTER TABLE 表名 ADD 字段名 列属性[属性]

修改字段:ALTER TABLE 表名 MODIFY 字段名 列类型[属性]

删除字段:ALTER TABLE 表名 DROP 字段名

说明:

可用反引号(`)为标识符(库名、表名、字段名、索引、别名)包裹,以避免与关键字重名!中文也可以作为标识符!

每个库目录存在一个保存当前数据库的选项文件db.opt。

注释:

单行注释 # 注释内容

多行注释 /* 注释内容 */

单行注释 – 注释内容 (标准SQL注释风格,要求双破折号后加一空格符(空格、TAB、换行等))

模式通配符:

_ 任意单个字符

% 任意多个字符,甚至包括零字符

单引号需要进行转义 ’

CMD命令行内的语句结束符可以为 “;”, “\G”, “\g”,仅影响显示结果。其他地方还是用分号结束。delimiter 可修改当前对话的语句结束符。

SQL对大小写不敏感 (关键字)

清除已有语句:\c

四、DML语言(添、更、删)

添加数据

语法:

INSERT INTO 表名[(字段1,字段2,字段3,…)] VALUES (‘值1’,‘值2’,‘值3’)

INSERT INTO grade(gradename) VALUES ('大三'),('大四');

修改数据

语法:

UPDATE 表名 SET column_name=value [,column_name2=value2,…] [WHERE condition];

-- 修改年级信息

UPDATE grade SET gradename = '高中' WHERE gradeid = 1;

删除数据

DELETE命令

语法:

DELETE FROM 表名 [WHERE condition];

-- 删除最后一个数据

DELETE FROM grade WHERE gradeid = 5

TRUNCATE命令

作用:用于完全清空表数据 , 但表结构 , 索引 , 约束等不变 ;

语法:

TRUNCATE [TABLE] table_name;

-- 清空年级表

TRUNCATE grade

注意:区别于DELETE命令

相同 : 都能删除数据 , 不删除表结构 , 但TRUNCATE速度更快

不同 :使用TRUNCATE TABLE 重新设置AUTO_INCREMENT计数器;使用TRUNCATE TABLE不会对事务有影响

-- 创建一个测试表

CREATE TABLE `test` (

`id` INT(4) NOT NULL AUTO_INCREMENT,

`coll` VARCHAR(20) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=INNODB DEFAULT CHARSET=utf8

-- 插入几个测试数据

INSERT INTO test(coll) VALUES('row1'),('row2'),('row3');

-- 删除表数据(不带where条件的delete)

DELETE FROM test;

-- 结论:如不指定Where则删除该表的所有列数据,自增当前值依然从原来基础上进行,会记录日志.

-- 删除表数据(truncate)

TRUNCATE TABLE test;

-- 结论:truncate删除数据,自增当前值会恢复到初始值重新开始;不会记录日志.

-- 同样使用DELETE清空不同引擎的数据库表数据.重启数据库服务后

-- InnoDB : 自增列从初始值重新开始 (因为是存储在内存中,断电即失)

-- MyISAM : 自增列依然从上一个自增数据基础上开始 (存在文件中,不会丢失)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值