MySQL学习一:数据库概念,基本操作命令符,对数据库数据修改

1. 什么是数据库

推荐学习文档菜鸟教程:https://www.runoob.com/mysql/mysql-tutorial.html

1.1 什么是SQL?

SQL是结构化查询语句(Structured Query Language)的缩写,用来访问和操作数据库系统。

  • SQL语句可以查询数据库中的数据,也可以添加,更改,删除数据库中的数据,还可以对数据库进行管理和维护操作。
  • 理论上只是使用标准的数据库,所有的数据库都可支持。但是实际上很多数据库都在标准SQL上做了扩展。如果我们只是使用标准SQL的核心功能,那么所有的数据库都是可以执行的。

数据库(DataBase,简称DB)

概念 : 长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据仓库即就是用于存储和管理数据的仓库

作用 : 保存,并能安全管理数据(如:增删改查等),减少冗余…

数据库的特点

  1. 持久化存储数据的,其实数据库就是一个文件系统
  2. 方便存储和管理
  3. 使用统一的方式操作数据库—SQL

数据库总览 :

  • 关系型数据库 (SQL)
    MySQL , Oracle , SQL Server , SQLite , DB2 , …
    关系型数据库通过外键关联来建立表与表之间的关系
  • 非关系型数据库(NOSQL)
    Redis , MongoDB , …
    非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定

1.2什么是DBMS

数据库管理系统 ( DataBase Management System )

数据库管理软件 , 科学组织和存储数据 , 高效地获取和维护数据
在这里插入图片描述
数据库的模型

数据库可以按照数据结构来组织,存储和管理数据,数据库可以分为----三种模型

  • 层次模型

    就是上下级的层次关系来组织数据的一种形式,层次模型看起来像一棵树

  • 网状模型

    把每个节点和其他节点连接起来,网状模型看起像城市之间的路网

  • 关系模型

    可以看做一个二维表格,任何数据都可以通过行号+列号来唯一确定,看起来像是一个Excel表

主流数据库

目前,主流的关系数据库主要分为以下几类

  1. 商用数据库,Oracle,SQL server,DB2
  2. 开源数据库,MySQL,PostgreSQL
  3. 桌面数据库,微软Assess
  4. 嵌入式数据库,Sqlite

1.3 MySQL简介:

概念 : 是现在流行的开源的,免费的 关系型数据库

历史 : 由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。

特点 :

  1. 免费 , 开源数据库
  2. 小巧 , 功能齐全
  3. 使用便捷
  4. 可运行于Windows或Linux操作系统
  5. 可适用于中小型甚至大型网站应用

SQLyog

可手动操作,管理MySQL数据库的软件工具
特点 : 简洁 , 易用 , 图形化

使用SQLyog管理工具自己可以完成以下操作 :

  • 连接本地MySQL数据库
  • 新建MySchool数据库
    1.数据库名称MySchool
    2.新建数据库表(grade)
    • 数据库名称MySchool
    • 新建数据库表(grade)
      • 字段
      • GradeID : int(11) , Primary Key (pk)
      • GradeName : varchar(50)

Mysql常用控制台命令:

在管理员模式下:

  • 启动Mysql服务:net start mysql
  • 关闭Mysql服务:net stop mysql
  • 卸载Mysql:sc delete mysql
  • 登录(以root的身份初次登录,会进入MySql管理页面):user -uroot -p123456, MySql初始密码为123456

在MySql管理页面下

  • 查看所有数据库名称:show databases;
  • 创建名字为name的数据库:create database name;
  • 删除名字为name的数据库:drop database name;
  • 显示选中数据库中所有的表:show tables;
  • 显示表选中数据库中名为user表的列信:describe user;
  • 使用名字为name的数据库:use database name;
  • 选择要操作的数据库:use name;
  • 查看表中的数据:select *from name;
  • 刷新数据库:flush privileges;
  • 查询名为use的命令的使用方法:? use;
  • 退出MySql服务器:exit;

SQL语句
什么是SQL:Structured Query Language:结构化查询语言。
其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。

SQL分类
1) DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
2) DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
3) DQL(Data Query Language)数据查询语言
用来查询数据库中表的记录(数据)。关键字:select, where 等
4) DCL(Data Control Language)数据控制语言(了解)
用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等

在命令行窗口执行SQL语句:

DDL:操作数据库、表

操作数据库:CRUD

  1. C(Create):创建
    创建数据库: create database 数据库名称;
    创建数据库,判断不存在,再创建: create database if not exists 数据库名称;
    创建数据库,并指定字符集:create database 数据库名称 character set 字符集名;
    创建db4数据库,判断是否存在,并制定字符集为gbk: create database if not exists db4 character set gbk;
  • 查看所有数据库的名称:show databases;
    在这里插入图片描述
  • 创建数据库: `create database 数据库名称;
    在这里插入图片描述
    利用show databases语句查看;
    在这里插入图片描述

创建数据库,判断不存在,再创建: create database if not exists 数据库名称;
在这里插入图片描述
创建数据库,并指定字符集:create database 数据库名称 default character set 字符集名;

在这里插入图片描述
利用show create database 数据库的名字;
在这里插入图片描述
2. R(Retrieve):查询
查询所有数据库的名称: show databases;
查询某个数据库的字符集:查询某个数据库的创建语句:show create database 数据库名称;
3. U(Update):修改
修改数据库的字符集: alter database 数据库名称 character set 字符集名称;
在这里插入图片描述
4. D(Delete):删除
删除数据库:drop database 数据库名称;
判断数据库存在,存在再删除: drop database if exists 数据库名称;
5. 使用数据库
查询当前正在使用的数据库名称:select database();
使用数据库: use 数据库名称;
在这里插入图片描述

  1. 操作表

     1. C(Create):创建
     1. 语法:
     	create table 表名(
     		列名1 数据类型1,
     		列名2 数据类型2,
     		....
     		列名n 数据类型n
     	);
     	* 注意:最后一列,不需要加逗号(,)
     	* 数据库类型:
     		1. int:整数类型
     			* age int,
     		2. double:小数类型
     			* score double(5,2)
     		3. date:日期,只包含年月日,yyyy-MM-dd
     		4. datetime:日期,包含年月日时分秒	 yyyy-MM-dd HH:mm:ss
     		5. timestamp:时间错类型	包含年月日时分秒	 yyyy-MM-dd HH:mm:ss	
     			* 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
    
     		6. varchar:字符串
     			* name varchar(20):姓名最大20个字符
     			* zhangsan 8个字符  张三 2个字符
    
     * 创建表
     	create table student(
     		id int,
     		name varchar(32),
     		age int ,
     		score double(4,1),
     		birthday date,
     		insert_time timestamp
     	);
     * 复制表:
     	* create table 表名 like 被复制的表名;	  	
     2. R(Retrieve):查询
     * 查询某个数据库中所有的表名称
     	* show tables;
     * 查询表结构
     	* desc 表名;
     3. U(Update):修改
     1. 修改表名
     	alter table 表名 rename to 新的表名;
     2. 修改表的字符集
     	alter table 表名 character set 字符集名称;
     3. 添加一列
     	alter table 表名 add 列名 数据类型;
     4. 修改列名称 类型
     	alter table 表名 change 列名 新列别 新数据类型;
     	alter table 表名 modify 列名 新数据类型;
     5. 删除列
     	alter table 表名 drop 列名;
     4. D(Delete):删除
     * drop table 表名;
     * drop table  if exists 表名 ;
    

SQL语句中的3种注释:

	1. 单行注释: 	-- 注释内容 或	 # 注释内容(mysql 特有) 
	2. 多行注释: 	/* 注释 */

注意:

  1. sql语句不区分大小写
  2. 每行sql语句都要以分号结尾(可以没有分号,但最好加上)
  3. 数据库名或表名通常用反引号引出,用于区别数据库中的关键字。

2.连接数据库

2.1工具操作数据库

  1. 打开SQLyog后,建立新连接。
    在这里插入图片描述
    建立一个名为myschoold的数据库

    在这里插入图片描述
    在这里插入图片描述
    创建数据库/表

在询问窗口输入下面的代码

创建grade表的sql语句如下:

CREATE TABLE grade (
  gradeId int(11) NOT NULL COMMENT '年级Id',
  gradeName varchar(50) DEFAULT NULL COMMENT '年级名字',
  PRIMARY KEY (gradeId)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

根据此段代码,创建表的sql语句格式如下:

#创建表格式
CREATE TABLE 表名(
	字段名 数据类型(长度) 修饰符,
	字段名 数据类型(长度) 修饰符,
	字段名 数据类型(长度) 修饰符
)

创建数据库的sql语句:

#创建数据库
CREATE DATABASE 数据库名;

注意

  • 创建表单时,用``引出,此处 的符号不是单引号,而是1键前面键上的符号。

2.2对数据库的增删改查

结构化查询语句SQL

结构化查询语句分类:

名称解释命令
DDL(数据定义语言)定义和管理数据对象,如数据库,数据表等 CREATE、DROP、ALTER
DML(数据操作语言)用于操作数据库对象中所包含的数据 INSERT、UPDATE、DELETE
DQL(数据查询语言)用于查询数据库数据 SELECT
DCL(数据控制语言)用来管理数据库的语言,包括管理权限及数据更改 GRANT、COMMIT、ROLLBACK

数据值和列类型

数值类型

类型说明取值范围存储需求
tinyint非常小的数据有符号值 -27 ~ 27;无符号值 0~281字节
smallint较小的数据有符号值 -215 ~215-1;无符号值 0~216-12字节
mediumint中等大小的数据有符号值 -223 ~223-1;无符号值 0~224-13字节
int标准整数有符号值 -221 ~221-1;无符号值 0~222-14字节
bigint较大的整数有符号值 -243 ~243-1;无符号值 0~244-18字节
float单精度浮点数±1.1754351e-384字节
double双精度浮点数±2.22507e-3068字节
decimal字符串形式的浮点数decimal(m,d)m字节

字符串类型

类型说明最大长度
char固定长字符串,检索快但浪费空间 0 <= M <= 255M字符
varchar可变字符串 0 <= M <= 65535变长度
tinytext微型文本串28-1 字节
text文本串216-1 字节

日期和时间型数值类型

类型说明取值范围
DATEYYYY-MM-DD,日期格式1000-01-01~9999-12-31
TIMEHh:mm:ss,时间格式-838:59:59~838:59:59
DATETIMEYY-MM-DD hh:mm:ss1000-01-01 00:00:00 至 9999-12-31 23:59:59
TIMESTAMPYYYYMMDDhhmmss格式表示的时间戳197010101000000~2037年的某个时刻
YEARYYYY格式的年份值1901~2155

NULL值

  • 理解为"没有值"或"未知值"
  • 不要用NULL进行算术运算 , 结果仍为NULL

数据字段属性

UnSigned :

  • 无符号的
  • 声明该数据列不允许负数 .

ZEROFILL :

  • 0填充的
  • 不足位数的用0来填充 , 如int(3),5则为005

Auto_InCrement :

  • 自动增长的 , 每添加一条数据 , 自动在上一个记录数上加 1(默认)
  • 通常用于设置主键 , 且为整数类型
  • 可定义起始值和步长
    • 当前表设置步长(AUTO_INCREMENT=100) : 只影响当前表
    • SET @@auto_increment_increment=5 ; 影响所有使用自增的表(全局)

NULL 和 NOT NULL :

  • 默认为NULL , 即没有插入该列的数值
  • 如果设置为NOT NULL , 则该列必须有值

DEFAULT :

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

对数据库修改

修改表名 :

    ALTER TABLE 旧表名 RENAME AS 新表名

添加字段 :

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

修改字段 :

    ALTER TABLE 表名 MODIFY 字段名 列类型[属性]
    ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性[属性]

删除字段 :

    ALTER TABLE 表名 DROP 字段名

增添数据:

#INSERT INTO命令
INSERT INTO Table_name(字段1,字段2,字段3,...) VALUES('值1','值2','值3')
# 添加一行数据时'字段1,字段2...'该部分可省略 , 但添加的值务必与表结构,数据列,顺序相对应,且数量一致.

#示例
#插入单个数据,主键不自增
INSERT INTO height(`studentNo`,`height`) VALUES (1000,178);
#可以省略字段名
INSERT INTO height VALUES (1000,178);
#插入多个数据,主键不自增
INSERT INTO height(`studentNo`,`height`) VALUES (1001,188),(1002,170),(1003,178),(1004,158);
#插入单个数据,主键自增
INSERT INTO height (`tall`) VALUES (178);
#插入多个数据,主键自增
INSERT INTO height (`tall`) VALUES (178),(180),(168),(190);

删除数据:

# DROP TABLE [IF EXISTS] 表名 
# IF EXISTS判断是否存在该数据表,如果删除不存在的数据表会抛出错误

# DELETE FROM tabel_name WHERE condition;
# condition为筛选条件,如不指定则删除该表的所有列数据

# TRUNCATE [TABLE] table_name;
# 用于完全清空数据表,但表结构,索引,约束等不变

#举例
#使用delete删除height表中studentNo=1004的数据,其中studentNo属性为自增
DELETE FROM height WHERE studentNo=1004; 
#删除后,使用INSERT添加数据
INSERT INTO height(`height`) VALUES (178);
#执行结果:添加的该条数据的studentNo不再是1004,而是1005
#结论:使用delete删除数据,自增当前值依然从原来基础上进行,会记录日志.

#使用truncate删除height数据表
TRUNCATE TABLE height;
#删除后,使用INSERT添加数据
INSERT INTO height(`height`) VALUES (178);
#执行结果:添加的该条数据的studentNo不再是1004,而是1
#结论:使用truncate删除数据,自增当前值会恢复到初始值重新开始;不会记录日志.

修改数据:

#修改表名 :ALTER TABLE 旧表名 RENAME AS 新表名
#添加字段 :ALTER TABLE 表名 ADD字段名 列属性[属性]
#修改字段 :ALTER TABLE 表名 MODIFY 字段名 列类型[属性]   (适用于不改变列名只改变列属性的情况)
#		  ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列属性[属性]
#删除字段 :ALTER TABLE 表名 DROP 字段名

#示例
#修改列字段studenNo的属性,不修改列字段名称
ALTER TABLE height MODIFY `studentNo` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号';
#修改列字段studenNo的属性,修改列字段名称
ALTER TABLE height CHANGE `height` `tall` INT(3) NOT NULL COMMENT '学号';

#修改数据表中某一行的某个列值
# UPDATE table_name SET column_name=value [,column_name2=value2,...] WHERE condition;
#总结:column_name 为要更改的数据列,value 为修改后的数据,可以为变量,具体指表达式或者嵌套的SELECT结果。condition 为筛选条件,如不指定则修改该表的所有列数据。

#示例
#修改studentNo=1002的学生的身高
UPDATE height SET `height`=190 WHERE studentNo=1002;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值