编程|初识MySQL重点总结
为什么学习数据库?
- 岗位技能需求
- 现在的世界,得数据者得天下
- 存储数据的方法
- 程序,网站中大量数据如何长久保存?
数据库能够做什么?
- 存储大量数据,方便检索和访问
- 保持数据信息的一致、完整
- 共享和安全
- 通过组合分析,产生新的有用信息
什么是数据库? 数据库(Database;简称DB)
概念: 长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”
作用: 保存、管理数据`
优点: 保证数据的一致性和完整性,并且降低冗余,还能满足应用的共享和安全方面的要求
数据仓库: 功能偏向于分析,可以进行分析整理,把存储了很多的数据进行相应的分析
数据库的分类: 1. 关系型数据库(SQL):
MySQL、Oracle、SQL Server、SQLite、DB2
把数据以表的形式存起来,各个表之间可以建立关系,通过这些关系来操作不同表之间的数据
2. 非关系型数据库(NOSQL):
Redis、MongoDB
不支持连接查询,可以把数据分散到不同的数据库上,对于大型的数据写入的时候可以分散压力
什么是DBMS: 数据库管理系统(Database Management System)
数据管理软件,科学组织和存储数据、高效地获取和维护数据
文章图片
MySQL简介: 概念: 是现流行的开源、免费的关系型数据库
特点:
- 免费、开源数据库
- 小巧、功能齐全
- 使用便捷
- 可运行于Windows或Linux操作系统
- 可适用于中小型甚至大型网站应用
- 运行速度快
- 使用成本低
- 可移植性强
- 适用用户广
文章图片
在Windows操作系统下安装: 1. 下载MySQL
MySQL 5.5.40 (Windows版)
下载地址:http://dev.mysql. com/downloads/
注:
- 数据目录不要在系统盘,以免卸载时删除数据包
- 启用安装向导,避免繁琐的my.ini 配置文件
- 数据库语言编码设置
2. 安装关键步骤:
端口设置:3306(默认)
文章图片
编码设置:utf8
文章图片
密码设置:
文章图片
安装后:
- my.ini
- 配置path
- 开启数据库服务
3. DOS系统中的相关命令
① net start mysql【打开mysql服务】
或者在文本文档输入net start mysql再把文件后缀改成cmd
② mysql -uroot -p08170327【打开数据库】
③ net stop mysql【关闭mysql服务】
或者在文本文档输入net stop mysql再把文件后缀改成cmd
4. SQlyog管理工具
【工具操作方便,但熟练编写SQL语句仍是程序员的必备技能】
可手动操作、管理MySQL数据库的软件工具
特点:易用,简洁,图形化
文章图片
5. 连接数据库
打开MySQL命令窗口:
在DOS命令行窗口(cmd.exe)
在窗口中进入安装目录\mysql\bin:可设置环境变量
① 连接数据库语句:mysql -h 服务器主机地址 -u 用户名 -p用户密码
h和u后面都可以加空格符,p后面不可以加,但是输入p后可以直接点回车,然后就会进入输入密码的特殊界面【Enter password: *****】
服务器主机地址指数据库服务器在哪台电脑上,可以写计算机名也可以写IP地址,对于本机是服务器的可以写127.0.0.1也可以写localhost
② mysql> show databases; 【展示有哪些数据库】
③ mysql> use mysql; 【使用某个数据库】
④ mysql> show tables; 【展示有哪些表】
⑤ mysql> select * from user/G; 【查询用户信息】
【在user表里查询所有的记录,并且可以用一个/G来控制显示的格式】
⑥ mysql> update user set password=password(‘1234’) where user=’root’;
【通过命令更改用户信息;把root的密码改成1234】
⑦ mysql> flush privileges; 【刷新权限】
⑧ mysql> select version(); 【展示版本】
⑨ mysql> exit; 【退出数据库】
⑩ ? show ****【寻求帮助】
按一下键盘上向上的按钮就能复制之前的DOS命令。
结构化查询语言:SQL(Structured Query Language) 结构化查询语言分类:
名称 |
解释 |
命令举例 |
DML (数据操作语言) |
用来操作数据库中所包含的数据 |
INSERT、UPDATE、DELETE |
DDL【重点】 (数据定义语言) |
定义和管理数据对象,如数据库,数据表等,用于创建和删除数据库对象等操作 |
CREATE、DROP、ALTER |
DQL (数据查询语言) |
用来对数据库中的数据进行查询 |
SELECT |
DCL (数据控制语言) |
用来管理数据库的语言,控制数据库组件的存取许可、存取权限等 |
GRANT、COMMIT、ROLLBACK |
SQL中的运算符: 1. 算术运算符
①一种符号,它是用来进行列间或者变量之间的比较和数学运算
②包括算术运算符、赋值运算符、比较运算符、逻辑运算符
运算符 |
【编程|初识MySQL重点总结】说明 |
+ |
加运算,求两个数或表达式相加的和,如6+8 |
- |
减运算,求两个数或表达式相减的差 |
* |
乘运算,求两个数或表达式相乘的积 |
/ |
除运算,求两个数或表达式相除的商,如5/3的值为1 |
% |
取模运算,求两个数或表达式相除的余数,如:5%3的值为2 |
2. 赋值运算符
运算符 |
说明 |
= |
把一个数或变量或表达式赋值给另一变量,如:Name='王华' |
3. 逻辑运算符
运算符 |
说明 |
AND |
当且仅当两个布尔表达式都为true时,返回TRUE。 |
OR |
当且仅当两个布尔表达式都为false,返回FALSE。 |
NOT |
布尔表达式的值取反 |
4. 比较运算符
运算符 |
说明 |
= |
等于,例如:age=23 |
> |
大于,例如:price>100 |
< |
小于 |
<> |
不等于 |
>= |
大于等于 |
<= |
小于等于 |
!= |
不等于(非SQL-92标准 ) |
命令行操作数据库: 1. 创建数据库: 语法:CREATE DATABASE [IF NOT EXISTS]数据库名;
在数据库里看到“[ ]”就是可选的【也就是可写可不写】
示例:CREATE DATABASE myschool; 【分号为结束符,不可缺】
文章图片
2. 查看数据库列表 语法:SHOW databases;
文章图片
3. 选择数据库 语法:USE 数据库名; 【使用数据前必须先选择该数据库!】
示例:USE mybase; USE myschool;
文章图片
4. 删除数据库 语法:DROP DATABASE 数据库名;
示例:DROP DATABASE myschool;
文章图片
5. 注释 语法:#【单行注释】/*……*/【多行注释】
示例:#创建数据库
6. 查看定义的数据库 语法:SHOW CREATE DATABASE ****;
文章图片
7. 查看定义的数据表 语法:SHOW CREATE TABLE ****;
文章图片
8. 显示表结构: 语法:DESC *****;
文章图片
9. 设置严格检查模式 语法:SET sql_mode='strict_trans_tables';
示例:当没有设置严格检查模式的时候,这个语法结构是SET sql_mode=' '; 当数据类型为int时输入的数如果大于最大限制系统就会自动修改成最大允许的数
文章图片
10. 当设置严格检查模式后: SET sql_mode='strict_trans_tables'; 系统就会弹出提示框,提示输入数据错误
文章图片
11. 创建数据表【属于DDL的一种】 语法:
CREATE TABLE [IF NOT EXISTS] `表名` (【表名随便取,但是要有意义】
【“`”是反引号(可选)这个符号在键盘上1234前面那个键不是单引号,作用是区分MySQL的保留字】
`字段1` 数据类型 [字段属性|约束] [索引] [注释(comment)],
【每一个字段都用英文逗号隔开】
`字段2` 数据类型 [字段属性|约束] [索引] [注释],
……
`字段n` 数据类型 [字段属性|约束] [索引] [注释]【最后一列表没有英文逗号】
【表名也是随便取,但是也要有意义】
)[表类型] [表字符集] [注释];
【最后创建完一定要有小括号,中括号里的都是可选的,可以写也可以不写】
示例:
文章图片
12. 数据值和列类型 ①列类型:
规定数据库中该列存放的数据类型
分为:数值类型、字符串类型、日期和时间型数值类型、NULL值
a. 数值类型
类型 |
说明 |
取值范围 |
存储需求 |
TINYINT |
非常小的数据 |
有符值: -27 ~ 27-1 无符号值:0 ~ 28-1 |
1字节 |
SMALLINT |
较小的数据 |
有符值:-215 ~ 215-1 无符号值:0 ~ 216-1 |
2字节 |
MEDIUMINT |
中等大小的数据 |
有符值:-223 ~ 223-1 无符号值:0 ~ 224-1 |
3字节 |
INT |
标准整数 |
有符值: -231 ~ 231-1 无符号值:0 ~ 232-1 |
4字节 |
BIGINT |
较大的整数 |
有符值: -263 ~263-1 无符号值:0 ~264-1 |
8字节 |
FLOAT |
单精度浮点数 |
±1.1754351e -38 |
4字节 |
DOUBLE |
双精度浮点数 |
±2.2250738585072014e -308 |
8字节 |
DECIMAL |
字符串形式的浮点数 |
Decimal(M,D) |
M+2个字节 |
b. 字符串类型
字符串类型 |
说明 |
长度 |
CHAR[(M)] |
固定长字符串,检索快但费空间 0<=M<=255 |
M字节 |
VARCHAR[(M)] |
可变字符串 0<=M<=65535 |
可变长度 |
TINYTEXT |
微型文本串 |
0~28–1字节 |
TEXT |
文本串 |
0~216–1字节 |
BLOB |
用来存声音图像,网页或者文档 |
|
c. 日期和时间型数据类型
日期类型 |
格式 |
取值范围 |
DATE |
YYYY-MM-DD,日期格式 |
1000-01-01~ 9999-12-31 |
DATETIME |
YY-MM-DD hh:mm:ss: |
1000-01-01 00:00:00 ~9999-12-31 23:59:59 |
TIME |
hh:mm:ss: |
-835:59:59 ~ 838:59:59 |
TIMESTAMP |
YYYYMMDDHHMMSS |
1970年某时刻~2038年某时刻,精度为1秒 |
YEAR |
YYYY格式的年份 |
1901~2155 |
理解为“没有值”或"未知值”
不要用NULL进行算术运算,结果仍为NULL
e. 如何选择数据类型
整数和浮点:如果存的数据没有小数就选整数,比如:学号;如果有小数就选DOUBLE,比如身高、成绩;货币就选DECIMAL
日期类型:主要记住DATETIME和TIMESTAMP就可以了,但是TIMESTAMP取值范围会小一点
char和varchar:要是要求速度快但是对空间没有要求就选char;要是对空间有要求但是对速度没有要求就选varchar
13. 数据字段属性 ①UNSIGNED
- 无符号的
- 声明该数据列不允许负数
- 0填充的
- 不足位数的用0来填充,如int(3),5则为005
文章图片
③AUTO_ INCREMENT
- 自动增长的,每添加一条数据,自动在上一个记录数上加1
- 通常用于设置主键【唯一区分一条数据记录,主键数据不能重复,加上PRIMARY KEY之后就是主键了】,且为整数类型
- 可定义起始值和步长默认都是1
自增列的起始值和步长都是1,可以改变成起始值为100【只影响当前表】,步长为5【影响所有使用自增列的表】
文章图片
④NULL和NOT NULL
- 默认为NULL,即没有插入该列的数值
- 如果设置为NOT NULL,则该列必须有值
- 默认的
- 用于设置默认值【例如,性别字段,默认为“男”, 否则为“女”; 若无指定该列的值,则默认为“男”的值】
14. MySQL系统帮助 语法:HELP 查询内容;
示例:
HELP contents;
HELP Data Types;
HELP INT;
删除表: 语法:
DROP TABLE [IF EXISTS] 表名; 【在删除表之前,先使用IF EXISTS语句验证表是否存在】
示例:
USE myschool;
DROP TABLE IF EXISTS `student`;
修改表: 语法:
1. 修改表名: ALTER TABLE 旧表名 RENAME AS 新表名;
2. 添加字段: ALTER TABLE 表名 ADD 字段名列类型[属性];
3. 修改字段: ALTER TABLE 表名 MODIFY 字段名 列类型 [属性];
ALTER TABLE 表名 CHANGE【会感觉改变力度比MODIFY大】 原字段名 新字段名 列类型 [属性];
4. 删除字段: ALTER TABLE 表名 DROP 字段名;
5. 删除数据表: DROP TABLE [IFEXISTS] 表名;
IF EXISTS为可选,判断是否存在该数据表。
如删除不存在的数据表会抛出错误
主键: 唯一区别一个表里面记录的一个标识,非空并且不允许重复,一个表里只能有一个,或者没有主键;有主键的表叫做主表
添加主键的语法:ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);
示例:设置grade表中gradeId字段为主键:
ALTER TABLE `grade` ADD CONSTRAINT `pk_grade` PRIMARY KEY `grade`(`gradeId`);
外键管理: 1. 外键作用 外键就是引用别人的键,可以用于在两个表之间建立连接,一旦建立连接就能保证数据引用的完整性【这也就是外键约束】,一个表里可以有多个外键;有外键的表叫做子表或者从表
2. 创建外键 ①创建子表的同时创建外键
语法:CONSTRAINT FK_外键名 FOREIGN KEY(外键字段) REFERENCES 主表(主键名)
示例:
#年级表(id\年级名称)
CREATE TABLE IF NOT EXISTS grade(
gradeid INT(10) PRIMARY KEY AUTO_INCREMENT,
gradename VARCHAR(50) NOT NULL
);
#学生信息表(学号、性别、年级、手机号、地址、出生年月、邮箱、身份证号)
CREATE TABLE IF NOT EXISTS student(
studentno INT(4) PRIMARY KEY,
studentname VARCHAR(20) NOT NULL DEFAULT '匿名',
sex TINYINT(1) DEFAULT 1,
gradeid INT(10),
phone VARCHAR(50) NOT NULL,
address VARCHAR(255),
birthday DATETIME,
email VARCHAR(50),
identitycard VARCHAR(50) NOT NULL,
CONSTRAINT FK_gradeid FOREIGN KEY(gradeid) REFERENCES grade(gradeid)
);
②创建子表后,修改子表添加外键
语法:ALTER TABLE student ADD CONSTRAINT FK_外键名 FOREIGN KEY(外键名) REFERENCES 主表(主键名);
示例:
#年级表(id\年级名称)
CREATE TABLE IF NOT EXISTS grade(
gradeid INT(10) PRIMARY KEY AUTO_INCREMENT,
gradename VARCHAR(50) NOT NULL
);
#学生信息表(学号、性别、年级、手机号、地址、出生年月、邮箱、身份证号)
CREATE TABLE IF NOT EXISTS student(
studentno INT(4) PRIMARY KEY,
studentname VARCHAR(20) NOT NULL DEFAULT '匿名',
sex TINYINT(1) DEFAULT 1,
gradeid INT(10),
phone VARCHAR(50) NOT NULL,
address VARCHAR(255),
birthday DATETIME,
email VARCHAR(50),
identitycard VARCHAR(50) NOT NULL
);
ALTER TABLE student ADD CONSTRAINT FK_gradeid FOREIGN KEY(gradeid) REFERENCES grade(gradeid);
3. 删除外键、删除表 ①删除具有主外键关系的表时,要先删子表,后删主表
ALTER TABLE 子表 DROP FOREIGN KEY FK_外键;
②删除之后系统还会有一个索引,所以还要把索引删除
ALTER TABLE 子表 DROP INDEX FK_外键;
总结:
文章图片
推荐阅读
- python青少年编程比赛_第十一届蓝桥杯大赛青少年创意编程组比赛细则
- HTML基础--基本概念--跟着李南江学编程
- py连接mysql
- 2019-01-18Mysql中主机名的问题
- MySql数据库备份与恢复
- 我的软件测试开发工程师书单
- mysql|InnoDB数据页结构
- mysql中视图事务索引与权限管理
- (六)Component初识组件
- 芯灵思SinlinxA33开发板Linux内核定时器编程