MySQL基础二

### 数据库概述
* 区分数据库和数据库管理系统
* 人们通常用数据库这个术语来代表他们使用的数据库软件。这是不正确的,它是引起混淆的根源。
* 确切地说,数据库软件应称为DBMS(数据库管理系统)。数据库是通过DBMS创建和操纵的容器。
* 数据库究竟是文件还是别的什么东西并不重要,因为你并不直接访问数据库;你使用的是DBMS,它替你访问数据库。

### 主键的重要性
* 主键的重要性:主键用来表示一个特定的行
应该总是定义主键 虽然并不总是都需要主键,但大多数数据
库设计人员都应保证他们创建的每个表具有一个主键,以便于
以后的数据操纵和管理


## 主键的条件:
1. 任意两行都不具有相同的主键值
2. 每个行都必须具有一个主键值(主键列不允许NULL值)。
3. 主键可以是一个字段也可以是多个字段的组合


### DISTINCT关键字
不能部分使用DISTINCT 
DISTINCT关键字应用于所有列而不仅是前置它的列。如果给出SELECT DISTINCT vend_id,
prod_price,除非指定的两个列都不同,否则所有行都将被检索出来。


* 什么是数据库
* 用来存储数据的仓库。
* 数据库(database) 保存有组织的数据的容器(通常是一个文件或一组文件)。




* 为什么要学习数据库
* 目前存储数据的地方有哪些
* 内存
* 文件


* 数据存在在内存中的优缺点
* 优点:存取速度快。
* 缺点:不能永久保存。


* 数据存储在文件中的优缺点
* 优点:可以永久存储。
* 缺点:
* 存取速度慢
* 查询数据很麻烦,不能单独查询某一条数据。
* 数据存在在数据库中
* 优点
* 可以永久存储。
* 查询方便,查询速度快。
### 数据库的安装和配置
* 安装和配置过程见pdf文档。


* MySQL目录结构

│-- bin:存放可执行文件
│-- data:默认数据库的存放目录
│-- include:  存放C语言头文件
│-- lib: c++动态链接库
│-- my.ini MySQL默认配置


* MySQL启动和登录(需要先配置了环境变量,才可以直接从控制台进入,不然首先需要进入MYSql的安装bin目录下才能运行)
* 启动
* 通过服务启动
* 登录
* 格式1:mysql -uroot -proot
* 格式2:mysql --host=ip地址 --port=端口号 --user=用户名 --password=密码
* mysql --host=127.0.0.1 --port=3306 --user=root --password=root


### 数据库管理系统和数据库,数据表的关系
* 关系型数据库
* 二维表来存储数据。


* MySQL数据库的结构
* 先有数据库
* 再创建数据表
* 最后存储数据


* 数据库中的主要对象


1) 表(Table):在数据库中存储数据记录的容器,一个表中包含多行数据记录。


2) 视图(View):是从一个或多个表导出的虚拟表,视图本身并不存储数据。
3) 索引(index):是对数据库表中一列或多列的值进行排序的一种结构,
       使用索引可快速访问数据库表中的特定信息,类似于书籍的目录。
4) 存储过程(Procedure):一组为了完成特定功能的SQL语句集,存储
   在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指
   定存储过程的名字并给出参数来执行它。
   简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法。


5) 触发器(Trigger):触发器是一种特殊类型的存储过程,它在指定的表
   中的数据发生变化时自动生效。唤醒调用触发器以响应 INSERT、
   UPDATE 或 DELETE 语句。
   简单的说,就是一张表发生了某件事(插入、删除、更新操作),然后自动触发了预先编写好的若干条SQL语句的执行。


   提示:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的,且功能比触发器更加强大,触发器是某件事触发后自动调用。


### SQL语句概述
* SQL语句介绍
* 概述:Structured Query Language 结构化查询语言。
* 作用:用来操作数据库,数据表以及表中的数据,对数据的增删改查操作。


* SQL语句的分类
* DQL(Data Query Langauage) 数据查询语言
* select / show
* DCL(Data Control Langauage) 数据控制语言
* 用来创建用户,设置用户的访问权限 
* grant / revoke 


* DML (Data Manipulation Language) 数据操作语言
* Insert/ Delete/ Update


* DDL (Data Definition Langauage) 数据定义语言
* create / drop / alter


* MySQL中的三种注释
* 单行注释
* # 注释内容。  # 是MySQL特有
* -- 注释内容。 -- 是所有数据库都有的


* 多行注释
/* 多行注释 */


### MySQL管理数据库
* 查看所有数据库
* show databases; -- 查看数据库服务器中所有的数据库。


* 创建数据库
* create database 数据库名; 
* 使用默认的字符集UTF8创建数据库。
* create database 数据库名 default character set gbk;
* 根据指定的字符集创建数据库。


* 查看数据库的创建语句
* show create database 数据库名; -- 查看创建数据库的语句


* 删除数据库
* drop database 数据库名; 

* 修改数据库默认字符集
* alter database 数据库名 default character set utf8; // 不能是utf-8


* 注意事项
* 每一条SQL语句结尾必须加分号;


### 校对规则概述(了解)
* 概念
* 它是一组规则,负责决定某一字符集下的字符进行比较和排序的结果。
* 如:a,B,c,D,如果使用utf-8的编码,按照普通的字母顺序,而且不区分大小写。
* 如果想使用字母的二进制比较和排序,则可以修改它的校对规则。

utf8_general_ci 按照普通的字母顺序,而且不区分大小写
(比如:a B c D)
utf8_bin 按照二进制排序(比如:A排在a前面,B D a c) 


* 查看字符集和校对规则
* show character set; -- 显示所有字符集及其默认的校对规则
* show collation like 'utf8%'  -- 显示所有utf8的校对规则


* 修改字符集
* set names gbk;




* 创建数据库同时指定字符集和校对规则

create database 数据库名 default character set gbk collate gbk_chinese_ci;


* 修改数据库的校对规则 

alter database 数据库名 collate utf8_general_ci;
### MySQL的数据类型
* 数值类型
● BIT  位  0或1 
● TINYINT或BOOLEAN   微整型  占1个字节  -128到127
● SMALLINT  小整型  占2个字节  0到65535
● INT 或 INTEGER  整型  占4个字节 
● BIGINT        大整型  占8个字节
● FLOAT(M,d)    单精度浮点型 M 总位数, d 小数位数
● DOUBLE(M,d) 双精度浮点型 M 总位数, d 小数位数

* 文本、二进制类型
● CHAR(SIZE):  定长的字符串 char(10) 
● VARCHAR(SIZE): 可变长的字符串  name varchar(20)
● BLOB:  Big Large Object Binary 大对象二进制数据  (音频,视频等数据) 
范围:
TINYBLOB    占1个字节 0-255
BLOB 占2个字节 0-65535
MEDIUMBLOB  占3个字节  0-16M
LONGBLOB    占4个字节  4G
● TEXT:   文本类型 (简历,一本书)
其中
TINYTEXT 占1个字节 0-255
TEXT 占2个字节 0-65535
MEDIUMTEXT   占3个字节  0-16M
LONGTEXT     占4个字节  4G


* 日期和时间类型
● DATE :  日期 
● TIME:   时间
● DATETIME: 日期时间


### 数据库表操作
* 查询所有表
* use 数据库名; -- 选择数据库。
* show tables; -- 查看数据库的所有表


* 创建表
* 创建一个student学生表,用来存放学生的信息(学号,姓名,年龄)
* create table 表名(
字段名1 数据类型,
字段名2 数据类型,
...
字段名n 数据类型
);


* 注意事项:最后一个字段后面不能有逗号,其他必须有逗号分隔。
    
* 查看表结构
* show create table 表名; -- 查看创建表时的SQL语句
* desc 表名; -- 以表格形式查看表结构。


* 复制表
* create table 表名 like 已有表名; 


* 删除表
* drop table 表名;


* 修改表
* 添加字段:add
* 给学生表添加一个性别字段,类型char(2)  
* alter table student add gender char(2);
* 同时添加多个字段,一个名为a int,一个名为b int(每个字段都需要有add)
* alter table student add a int, add b int;


* 修改字段类型:modify
* 把学生表的gender字段类型改为varchar(2)
* alter table student modify gender varchar(2);


* 修改字段名称:change
* 把学生表的gender字段名改为sex,类型不变。
* alter table student change gender sex varchar(2);

* 删除字段:drop
* 删除学生表中的字段a和字段b(使用两个drop) 
* alter table student drop a,drop b;

* 修改表名:rename
* 将学生表student改名为stu
* alter table student rename stu; 


### 表操作之插入数据
* SQLyog客户端的使用
* 服务器连接
* 工具栏常用按钮介绍
* 字体设置


* 使用SQLyog创建库和创建表
* 字段命名规范
* 在SQL中不区分大小写
* 表名使用单数形式。如:学生表使用STUDENT,不要使用STUDENTS
* 采用有意义的名字,一般不超过三个英文单词,单词之间使用下划线分割
* 不要在列的名称中包含数据类型
* 不要使用关键字


* 创建学生表
* 查看表的数据
* 插入数据
* 插入所有列数据的SQL语句格式

INSERT INTO 表名 VALUES(值1,值2,值3,值4....); 
例如
INSERT INTO student VALUES(1,'张三',23,'1990-10-20'); 
INTO 可以省略
INSERT  student VALUES(1,'张三',23,'1990-10-20');

* 注意事项
* 插入的数据值与字段的数据类型要一致。
* 数据长度或大小应该在规定范围内。比如不能将长度为80的字符串插入到长度为40列中,超出范围的数据就会被截取掉。


* 插入部分列数据的SQL语句格式

INSERT INTO 表名(字段名1,字段名3,字段名4) VALUES(值1,值3,值4);
例如
INSERT INTO student (id,age,birthday) VALUES(1,23,'1990-10-20'); 
* 注意事项
* 列名和值的顺序一致,数量保持一致!


### 表操作之修改和删除数据
* 修改数据的语句格式

UPDATE 表名 SET 字段名=新值,字段名=新值,... where 条件;
例如
UPDATE student SET name='rose' where id=1;
* 注意事项
* 如果没有where语句,则表示更新所有行。

* 删除数据的语句格式
* 删除表中的所有数据语句格式1

DELETE FROM 表名;

* 注意细节
* 后面可以带条件语句:where 子句。

* 删除表中的所有数据语句格式2


TRUNCATE TABLE 表名;
* 注意细节
* 后面不能带条件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值