这篇文章是黑马程序员 MySQL 教程的笔记,好好学习哦。
和 MySQL 数据库的交互
MySQL 数据库属于 C/S 架构,所以开启服务器程序后,需要通过客户端连接它。MySQL 会自带一个客户端程序,可以直接输入账号和密码即可连接。
如果你是在 Windows 系统上使用 MySQL ,那么可以通过 cmd 命令打开命令行窗口,输入以下指令,同样可以连接上 MySQL 服务器程序。首先要配置 Path 环境变量,这样就可以不用输入 mysql.exe 的完整路径,操作系统也能找到这个可执行文件。
mysql -hlocalhost -p3306 -uroot -p //此时回车,紧接着输入密码再回车,就可以连接上 MySQL 服务器了。
//其中 -h 表示 MySQL 服务器程序所在主机的地址, -p 表示应用程序所使用的端口号, -u 表示用户名, -p 表示密码
show databases; //查询所有数据库
exit
SQL 基本操作
在学习sql 指令使可以按照操作对象分为三类:数据库操作指令,数据表操作指令,数据操作指令。
新增数据库:
create database 数据库名字 [库选项]
create database newdatabase cahrset utf8;
执行新增操作后,MySQL 服务器程序会在它的 data 文件夹中创建一个以数据库名字命名的文件夹,文件夹内还有一个 db.opt 文件,里面保存的是库选项,内容如下:
default-character-set=utf8 //默认字符集是 utf8
default-collation=utf8_general_ci //默认校对集是 utf8_general_ci
//字符集很好理解,这里的校对集是什么呢?通常从数据库中查询数据时候,需要进行数据的比对,比如按照价格升序取出,这个校对集就是一种规定如何进行比对的规范
查询数据库:
show databases; //查询 DBMS 中所有的数据库
show databases like 'my%' //这是模糊查询的方式,如果有转义字符,不要忘了转义
show create database newdatabase; //查询创建某个数据库的 sql 语句
//此处查询后发现和自己写的 sql 语句不一样,只是因为 MySQL 在执行指令前,会先优化 sql 语句,再执行。
更新数据库:
数据库的修改仅限于修改库选项:alter database 数据库名 charset 字符集 collate 校对集
alter database newdatabase charset gbk
//此指令执行后,db.opt 文件的字符集选项同时会立即更改,因为校对集依赖于字符集,所以它也会随之改变
删除数据库:
drop database newdatabase;
// 删除指令执行后,它在磁盘上的文件也会删除
新增数据表:
create table [if not exists] 表名 (字段名字 数据类型 ,字段名字 数据类型 )[表选项] ;
create table student(
name varchar(11),
gender varchar(11),
number varchar(11),
age int
)
//数据库执行此操作后,默认会生成一个对应的表文件
查看数据表:
show tables; //查看次数据库所有表
show tables like 's%'; //模糊查询
show create student; //查看表创建语句
show columns from student //查看表结构,也就是查看表的字段名
修改数据表:
表本身可以修改,修改表名和表选项
rename table student to ne_student; //修改表名
alter table ne_student chaeset gbk; //修改表选项
项目写着就发现数据库设计的不够合理,需要更改,掌握修改字段真的很重要。
alter table ne_student add id int first;//添加 id 字段到表的第一个位置、
alter table ne_student add phone varchar(11) after age; //添加 phone 字段到 age 后面
alter table ne_student modify gender varchar(10); //修改 gender 字段的数据长度
alter table ne_student change gender sex varchar(10); //重命名 gender 为 sex
alter table ne_student drop sex; //删除 sex 字段
删除数据表
drop table student; //删除 student 单张表
drop table ne_student,ne_teacher; //删除多张表
插入数据:
insert into ne_student(id,name) values(1,'kk'); //这种插入操作只要字段名和值对应就可以了,并不需要全部字段都写上。
insert into ne_student values(2,'kkk','male','123'); //这种插入操作,就必须要按照表中字段的顺序,每一个字段都插入相对应的值。
查看数据:
select * from ne_student; //查看所有数据
select * from ne_student where name like 'k%'; //限制查询条件
//关于查询的操作非常多,这里只是简单展示下
更新数据:
update 表名 set 字段 = 值 [where条件];
update ne_student set id = 3 where name = 'kkk'; //将 kkk 的 id 改为 3
删除数据:
delete form ne_student where name='kkk';//删除名字为 kkk 的这条记录
//这里之所以能够查询,是因为校对集在起作用
讲到这里,对于数据库、表、,表中字段以及数据的增删改查都已经展示完了。主要还是起到一个建立框架的作用,明确数据库中有哪些对象,针对这些对象来进行相应操作。
库选项的相关介绍
学习编程时,通常会遇到中文乱码问题。其实总结下来,就是因为编码和解码采用不同的字符集,产生了乱码。MySQL 数据库自然不能免俗啊。
通过show charsets;
可以查看 MySQL 支持的所有字符集,它默认采用的是 utf-8 编码,只要同一字符集就不会出现乱码问题。
通过show collation;
可以查看 MySQL 支持的所有校对集,有 129 种,不要惊讶,这是因为校对集是依赖于字符集的,每种字符集都有几种校对集。
校对集有三种格式:
_bin: binary 二进制比较, 取出二进制位,一位一位的比较, 区分大小写。例如,数据库会认为 aaa 不等于 Aaa;
_cs: case sensitive 大小写敏感, 区分大小写。例如,数据库会认为 aaa 不等于 Aaa;
_ci: case insensitice 大小写不敏感,不区分大小写。例如,数据库会认为 aaa 等于 Aaa;
所以,我们要根据实际情况,选择对应的校对集。