我爱编程

MySQL笔记

2018-04-14  本文已影响0人  GaGLee

1. 安装

下载地址:官网download地址

2018-04-14T03:15:52.711719Z 1 [Note] A temporary password is generated for root@localhost: k9CRxtbKgt?j

记住这里的密码:root@localhost: k9CRxtbKgt?j

(C:\Users\leegang\Anaconda3) D:\MySQL\bin>net start mysql
MySQL 服务正在启动 .
MySQL 服务无法启动。

服务没有报告任何错误。

解决办法:
重新运行mysqld --initialize进行初始化,必要时可把之前配置的data文件夹删除


再次尝试启动MySQL 服务:net start mysql

(C:\Users\leegang\Anaconda3) D:\MySQL\bin>net start mysql
MySQL 服务正在启动 .
MySQL 服务已经启动成功。
 mysql -u root -p
 alter user root@localhost identified by "123456";

需要确保①已经启动MySQL服务:net start mysql;②用管理员方式打开cmd
安装结束,记住启动MySQL服务的命令,记住你的root密码

2. 数据库系统DBS(Database System)

DBS=DBMS + DB

3. MySQL数据库

MySQL数据库 是一种C/S结构的软件:客户端/服务端。
C/S结构特点:

交互方式:

  1. 客户端连接认证,连接服务器,认证身份:mysql.exe -hPup

2.客户端发送SQL指令

3.服务器接收SQL指令:处理SQL指令,返回操作结果

4.客户端接收结果,显示结果

5.断开连接(释放资源):exit,quit,\q

例如:mysql.exe -hlocalhost -p3306 -uroot -p
(-h+主机)+(-p+端口,端口用于找软件)+(-u+)+(-p)
结构:

g

4. SQL基本操作

分为三类:库操作、表操作、数据操作
前注:

4.1库操作

A.新增数据库:

create database 数据库名字 [库选项];

例如:

create database mydatabase charset utf8;

创建中文名的database:

set names gbk
create database 我的数据库 charset utf8;

执行结果:

B.查看数据库:

show databases;
show databases like 'pattern';

-- pattern表示正则匹配模式

C.查看数据库的创建语句:

show create database 数据库名字

D.更新、修改数据库:
--数据库名字不可以修改
--数据库仅允许修改:字符集charset和校对集collation

alter database 数据库的名字 charset GBK;

E.删除数据库:

drop database 数据库名字

注意:删除不可逆

4.2 表操作

前注:表与字段是密不可分的;表的创建必须先明确所依附的数据库
A.新增数据表:

create table if not exists 表名(字段名字 数据类型,字段名字 数据类型)[表选项];

方法1显式指定该表所依附的数据库:

create table if not exists mydatabase.student(name varchar(10), gender varchar(10),
 number varchar(10), age int)charset utf8;

方法2隐式指定该表所依附的数据库:

use mydatabase;

create table student(name varchar(10), gender varchar(10),
 number varchar(10), age int)charset utf8;

B.查看数据表:

show tables 
show tables like 'pattern'

-- pattern表示正则匹配模式

show create table 表名;
desc columns from 表名
或者:
describe columns from 表名
或者:
show columns from 表名

C.修改数据表:
包括修改表本身、修改表中字段两类

修改表名:
rename table 老表名 to 新表名
修改表选项:
alter table my_student charset utf8

--新增字段:
alter table 表名 add columns 字段名 数据类型 [列属性][位置];
位置:first、“after 字段名”(默认在最后)

alter table my_student add column id int first;
其中:
my_student为目标数据表;
id为新增字段的名称;
int为新增字段的属性;
 first为新增字段的位置。

--修改字段:
alter table 表名 modify 字段名 数据类型 [属性] [位置];

--重命名字段
alter table 表名 change 旧字段 新字段名 数据类型 [属性] [位置];

--删除字段
alter table 表名 drop 字段名;

D.删除数据表
drop table 表名;

4.3数据操作

A.新增数据:insert
场景1:给table中的所有字段都插入数据:无需指定字段所属的列,但要求数据的顺序必须与表中字段列的顺序一致

insert into 表名 values (1列的值,2列的值,3列的值,……);

场景2:只在部分字段中插入数据,则需要选定字段列表:

insert into 表名 字段列表 values (值列表1),(值列表2),……;
insert into my_student(number, sex, name, id) values(“itcast001”,“male”,“Tom”,“3”,),(“itcast002”,“female”,“Mary”,“15”,)

B.查看数据

查看表中全部数据:
select * from 表名
按条件查看数据:
select 筛选列名 from 表名 where 筛选条件;
select id,number,sex from my_student where id=1;

C.更新数据

update 表名 set 字段 = 值 [where 筛选条件]
#这里不加table

D.删除数据

delete from 表名 where 筛选条件
#这里不加table

5.中文数据问题

参考:玩转MySQL数据库P20
编码矛盾:

第一步:查看服务器用于与客户端进行沟通的字符编码格式

show variables like 'character_set%';

第二步:修改服务器与客户端沟通的编码格式为gbk

set character_set_client = gbk;

--服务器端的中文显示正确!

第三步:修改服务器反馈给客户端的数据编码格式为GBK

set character_set_results = gbk;

--客户端从服务器接收中文数据后也能正确显示!

第四步:set = value的更改方法只是当前对话有效,重启后失效。
措施:

set names = gbk;

等效于设置服务器的编码:

set character_set_client, character_set_connection, character_set_results = gbk

其中,character_set_connection是连接层的编码格式,能够提高转码效率,不设也能正常转码。

6. Web乱码问题

参考:玩转MySQL数据库P22
动态网站由三部分构成:浏览器、apache、数据库服务器

7. 校对集问题

参考:玩转MySQL数据库P21
校队集:数据比较的方式,只有当数据产生比较的时候,校对集才会生效。
校对集的三种格式:
_bin:binary,二进制比较,取出二进制位,一位一位的比较,区分大小写;
_cs: case sentive, 大小写敏感,区分大小写;
_ci: case insensitive, 大小写不敏感,不区分大小写;
查看校对集:

show collation;

创建table表时指定校对集:

create table my_table(name char(a))charset utf8 collate utf8_bin;

这里指定了校对集为collate utf8_bin。在对该table进行排序等比较时,将按照二进制进行比较。

修改已存在table的校对集:
修改无效!

8.MySQL的数据类型

列类型

MySQL列数据类型
第一类:数值型
整数型:系统为了节省磁盘空间,将其细分为5类。

创建整型数据表:

create table my_table_int(
name1 tinyint, name2 smallint,
names int, name4 bigint
)charset utf8;

指定数据的显示宽度:当数据不够显示宽度的时候,就会自动添加前导0让数据变成相应的显示宽度。

create table my_table_int(name1 tinyint(5))charset utf8;
#这里name1 tinyint(5)的5就是指定显示宽度,不影响内部运算时的数据类型

第二类:小数型
SQL中将小数型又细分为浮点型和定点型。

上一篇下一篇

猜你喜欢

热点阅读