认识mysql数据库
数据库基础: 1.什么是数据库? 数据库:database 存储数据的仓库 数据库:高效的存储和处理数据的介质 2.数据库的分类 分为两种: 关系型数据库(SQL) 非关系型数据库(NOSQL:not only SQL) 3.不同的数据库阵营中的产品? 关系型的数据库 大型:oracle DB2 中型:SQL-SERVER,MYsql 小型:access 等 非关系型数据库:memcached,mongodb,redis 4.区别? 关系型数据库:安全(保存磁盘,基本不可能丢失)容易理解 非关系型数据库:效率高,不安全(断电丢失) d ----关系型数据库--------- 1.什么是关系型数据库? 是一种建立在关系模型(数据模型)上的数据库。 模型包含三个方面 数据结构: 二维表(列和行) 操作指令:所有sql语句 完整性约束:表(内数据约束),表与表之间约束(外键) 2.关系型数据库:维护实体内部,实体与实体之间的联系 如果表对应的某个字段没有值,但是系统还是会分配空间! ------------关键字说明------------------- 数据库:database 数据库系统:DBS(Database system)是一种虚拟系统 DBMS:database management system 数据库管理系统 DBA:database administrator,数据库管理员 行/记录:row/record。 列/字段:column/field. ------------------SQL 关系型数据库--------- SQL:structured query language 结构化查询语言 SQL分为三个部分 DDL:datadefinition language ,数据定义语言。 DML:数据操作语言;其中DML又分了一个DQL 数据查询语言 DCL:数据控制语言。主要负责权限管理(用户)grant,revoke SQL 是一种约束,但不强制(类似W3C)。 ------------Mysql数据库------------- Mysql数据库是一种c/s结构的软件: 客户端/服务器。 (服务器一直运行,客户端在需要使用的时候运行) 交换方式: 1.客户单链接认证:链接服务器,认证身份:mysql.exe -hpup mysql.exe -hlocalhost -p3306 -uroot -p 2.发送SQL指令 3.服务器接收SQL指令:处理SQL指令, 返回操作结果 4.客户端接收结果:显示结果 show databases--查看所有数据库 5.断开链接(释放资源,服务器并发限制) exit/quit/\q 退出 ------------------Mysql服务器对象-------------------- 将mysql服务器内部对象分成了四层:系统(DBMS)->数据库(DB)->数据表(Tabel)->字段() --------------SQL的基本操作-------------- 基本操作:CRUD SQL的基本操作对象进行分类: 库操作,表操作,数据操作 基本语法 创建库 create Create database 数据库名字[库选项]; 库选项:用来约束数据库,分为2个选择项 字符集设定:charset/character set 具体字符集(存储编码格式)常用的字符集:GBK和UTF8 校对集设定:colate 具体校对集 --------- 创建数据库 create database only charset utf8 -- 创建关键字数据库 create database database charset utf8 --(SQL语句保存:只会告诉用户的大概位置,不会说明保存愿意(静默模式)) --创建中文数据库 create database 中国 charset utf8; -- 解决方案:告诉服务器当前中文的字符集是什么 中文:GBK set names gbk; create database 中国 charset utf8; 当创建数据库SQL语句执行之后,发送了什么? destiny电脑 保存路径:C:\ProgramData\MySQL\MySQL Server 5.6\data 1. 在数据库系统中,增加了对应的数据库信息 2. 会在保存数据的文件夹下:data目录,创建一个对应的数据库名称的文件夹 3. 每个数据库下都有一个opt文件:保存了库选项 --校对集依赖字符集 --------查看数据库 1.查看所有数据库:show databases; 2.查看指定的数据库:模糊查询 show databases like 'pattern'; %:表示匹配多个字符 _:表示匹配单个字符 3.查看数据库的创建语句: show create database only; show create database ‘database‘; 只要需要用到关键字都得用反引号 -- 数据库在执行SQL语言之前会优化SQl; ----------更新数据库 数据库名字不可以修改 数据库的修改选项:字符集合校对集(校对集依赖字符集) alter database 数据库名称[库选项] Charset/charcter set[=]字符集 collate 校对集 修改数据库 名 字符集 alter database only charset gbk; -----删除数据库 所有的操作中:删除是最简单 drop database 数据库名字 1.删除数据库之后 在数据库内部看不到对应的数据库 2.在对应的数据库存储的文件夹内:数据库名字对应的文件夹也被删除 (级联删除:里面的数据表全部删除) 注意:数据库的删除,不能乱删除。要备份再删除! --------表操作 表与字段是密不看可分的。 ----新增数据表 create tabel[if not exists]表名( 字段名字 数据类型, 字段名字 数据类型--最后一行不需要逗号 )[表选项] if not exists:如果表名不存在,那么就创建,否则不执行创建代码:检查功能 表选项:控制表的表现 字符集:charset/character set 具体字符集; 校对集:collate 具体校对集; 存储引擎:engine 具体的存储引擎(innodb 和 myisam) 然后一个表的设计都必须设定数据库 创建表1. careat tabe if not exists (数据库名.)student( name varchar(10), gender varchar(10), number varchar(10), age int )charset utf8; 创建表2. 进入数据库环境 use 数据库名字; 先进入数据库,然后创建表 use 表名 use only create table class( name varchar(10), room varchar(10), sex varchar(2) )charset utf8; 创建表的SQL指令之后发生了什么(多了文件在对应数据库的文件夹下面) 1.指定数据库下已经存在对应的表 2.在数据库对应的文件夹下,会产生对应表的结构文件(跟存储引擎有关系) ------------查看数据表------------------------------------- 数据库能查看的分数,表都可以查看 1.查看所有表 show tables; 2.查看部分表 : 模糊匹配 show tables like '%关键字' 3.查看表创建语句 show create table student\g ---\g 等价于 分号; show create table student\G ---\纵向 4.查看表结构:查看表中的字段信息 Desc / describe /show columns from 表名 -- 查看表结构 desc class; describe class; show columns from class; Type 列表类型 字段类型: 数据类型 Field 字段名字 NULL 列属性 是否允许为空 Key 索引类型(PRI主键)UNI唯一等 Default 列属性 大部分字段默认为NUll Extra 列属性:扩充(额外的) ---------------修改数据表----------------- 表本身存在,还包含字段; 修改本身和字段 --修改表本身 表本身可以修改:表名和表选项 修改表名:rename table 老表名 to 新表名 --修改表选项:字符集,校对集合存储引擎 Alter table 表名 charset =GBK; --新增字段 Alter table 表名 add[column]字段名 数据类型[列属性][位置]; 位置:字段名可以存放表中的任意位置 First:第一个位置 after: 在哪个字段之后:after 字段名 ;默认是在最后一个字段之后 alter table my_student add column id int first; --修改字段:通常是修改属性还在数据类型 Alter table 表名 modify 字段名 数据类型【位置】【属性】; alter table student modify number char(10) after id; --重命名字段 Alter table 表名 change 旧字段 新字段 数据类型【属性】【位置】; --删除字段 alter table 表名 drop 字段名; ---删除数据表 drop table 表名1,表名2;--可以一次性删除多张表; ----------------数据操作----------------- 新增数据表 1. insert into 表名 values (值,值,值), (值,值,值) 2. 给部分字段插入数据 insert into 表名(字段列表)values (值,值),(值列表) ------查看数据 select * from 表名: [where 条件] --查看指定字段和条件数据 select 字段名 from 表名 条件 -------更新数据 Update 表名 set 字段=值 【where 条件】 --------删除 delete from 表名 【where 条件】 -------------------中文数据问题---------------------------------------------------------------------- 查看所有字符集 --基本上:服务器是万能,什么字符集都支持 show character set; -- 查看服务器默认的处理的字符集 show variables like 'character_set%'; --修改服务器认为的客户端数据的字符集为:GBK set character_set_client =gbk; --修改服务器给定数据的字符集为GBK set character_set_results=GBK; 快捷方式: set names 字符集 set names gbk; -------------------------------校对集问题--------------------- 校对集:数据比较的方式 有三种方式 _bin:binary,二进制比较,取出二进制位,一位一位的比较,区分大小写 _cs: case sensitive 区分大小写 _ci: case insensitice 不区分大小写 查看数据库所支持的校对集:show collation; --- 创建表使用不同的校对集 create table my_collate_bin( name char(1) )charset utf8 collate uft8_bin; create table my_collate_ci( name char(1) )charset utf8 collate uft8_qeneral_ci; --排序查找 select * from 表名_bin order by 字段名; select * from 表名_ci order by 字段名: -----------------Web乱码问题------------- 动态网页由三个部分构成: 浏览器、apache 服务器(PHP)、数据库服务器 都有自己的 字符集(中文) 统一编码(三码合一)

oneNate笔记
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。