Mysql 入门
2017-11-20 本文已影响23人
chcvn
认识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笔记