msyql 关于数据库的安装和操作

来源:互联网 发布:疯狂java讲义在线 编辑:程序博客网 时间:2024/06/04 18:34

数据库安装注意点:

(1).MySQL安装时候注意以前是否安装过,如果安装过,再次安装时候注意一定要把以前安装的清理干净要不容易出现安装冲突,安装失败问题;
(2)这里清理时候系统盘的log内容也要清除:
(3)注意安装时3306端口冲突问题;
注意【MySQL的卸载】
1.7 卸载数据库
1.在任务管理器的服务中停止MySQL的服务
2.在控制面板的程序中 卸载MySQL
3.把安装目录删除
4.在注册表中清除MySQL相关的注册
终端语句regedit --> 打开注册表
HKEY_LOCAL_MACHINE
SYSTEM
Controlset001
Controlset002
CurrentControlset
这三个下面查找services [MySQL - 右键删除]
eventlog - application - Mysql 右键删除

C盘下有一个隐藏目录 搜索programdata -- MySQL删除

5.电脑重启 

关于MySQL的启动,登录:

1.启动和关闭数据库服务器以及客户端的操作
服务器的操作
开启服务器
net start mysql
关闭服务器 【避免电脑卡顿 尤其oracle 一定要关闭 否则内存都会被侵吞】
net stop mysql
如果出现拒绝访问的错误
需要切换管理员模式 【要求我们使用管理员身份运行cmd程序】


客户端的操作 【前提是 数据库服务器已经开启】
-登录数据库服务器 
mysql -u用户名 -p密码 -h服务器地址

登录本地数据库服务器
mysql -uroot -p123 -hlocalhost
如果不写-hlocalhost 默认就是本地地址


如果用户名是root -h后面的地址跟随什么都可以
如果是自己创建的其他用户 -h后面的地址是写死的

-退出数据库服务器
exit 或者是 quit

SQL语句:

2.1 SQL语句的作用
客户端与服务器之间发生对话 客户端需要使用SQL语句来操作服务器
2.2 什么是SQL
结构化查询语言 【Structured Query Language】
2.3 SQL的标准
是由国际化标准组织(ISO)制定的 对数据库进行统一操作的方式
2.4 SQL方言
这种方言并不是适合所有的数据  例如mysql 有一个limit 只适合mysql
2.5 SQL语法
-SQL语句可以在单行 或者 多行书写 以分号结尾
- 通过空格和缩进增强语句的可读性
- 不区分大小写 【但是建议大写】
2.6 SQL语句的分类【重点】
-DDL(Data Definition Language) 【重要】
数据定义语言 用来定义数据库对象的:库  表  列
简单而言的话:创建 删除 修改库和表结构的

-DML(Data Manipulation Language) 【重要的】
数据操作语言 用来定义 数据库记录的(数据库的数据)
简单而言的话 :增 删 改 表记录的


-DCL(Data Control Language)
数据控制语言 用来定义访问权限和安全级别的
- 数据库用户创建时
由root管理员来创建其他用户【在工作中很少有人能获得root权限】
设置其他用户对数据库的访问权限和安全级别
例如【在root权限下有很多数据库 创建子用户时可能只会分配给该用户操作其中一个数据库的权限】

-DQL(Data Query Language)【重点加难点】
数据查询语句 用于查询数据库记录的【获得数据库中的数据】
分别解释:
DDL
-数据库的操作
创建数据库
create database [if not exists] 数据库名称;
【中括号中的内容代表可以没有】
查看该用户下的所有数据库
show databases;
切换数据库【如果想对对应的数据库进行操作 得在该数据库下】
use 数据库名称;
删除数据库
drop database 数据库名称; [注意:使用数据库时不能删除]
-常用的表中的数据类型
-int 整型
-double 浮点型  double(5,2) 表示该数最多有5位 其中2位是小数 例如999.99
-decimal 浮点型 一般应用在钱的方面  不会出现精度损失的问题
-char 固定长度字符串类型 最大长度为255个字节 一般使用是会指定长度
例如char(10)  如果char(255) 赋值a 他也会占255个字节 其他的用空格补 超过长度就会报错
 
常用于 身份证号 手机号 用户id等
-varchar 可变长度字符串类型 最大长度是65535个字节 
varchar(65535) 但是赋值的时候达不到65535个字节 不会使用空格补起
-text 字符串类型
tinytext   占的最大字节  2^8 -1
text 2^16 - 1
mediumtext 2^24 - 1
longtext2^32 - 1
-date 日期类型  格式为 yyyy-MM-dd
-time 时间类型  格式为 hh:mm:ss
-timestamp 时间戳类型


表:
创建表
create table [if not exists] 表名(列名1 列的类型,
列名2 列的类型,
...); 

查看数据库中所有的表
show tables;
查看表结构
desc 表名;
修改表 【修改表的前缀alter table 表名
添加列
add(
列名 列的类型,
...
);

修改列的类型
modify 列名 新的列的类型;
修改列名
change 原列名 新列名 列的类型;
删除列
drop 列名;
修改表名
rename to 新表名; //或直接rename tale tb_name to newtb_name;不需要前缀alter table tb_name
删除表
drop table 表名;

2.8 DML
在表中增删改数据
DQL中的查询语句 查询表格中的所有数据
select * from 表名;
select name,age...,sex from tb_name;//指定查询

在表中插入数据
insert into 表名(列名,列名1,..) values(列值1,列值2,...),(列值1,列值2,...);//一次多条插入
或者快捷插入 insert into tb_name()values(列值1,列值2,...),(列值1,列值2,...)...;
报错:1366(这时候不能插入汉字)
解决方法:插入前先进行set names gbk;的操作,就行了,不过这样select的时候也要先行此操作
设置数据库时 编码设置为utf8 但是终端处编码为gbk 【先别写汉字了 写英文或者拼音】


修改表中的数据
update 表名 set 列名=值, 列名1=值 [where 条件]
如果不加where条件 是把该列的值都修改


条件:
= 等于
!=     不等于
>
<
>=
<=
between 20 and 30  在20-30之间
not between 20 and 30不在20-30之间的  
in(值1,值2)  where  city in('北京','上海') 在指定项内
not in(值1,值2) 不在指定项内
like  模糊匹配 where like 'A';
no like
is NULL  空值判断符
is not null 非空判断符
not
and 并且
or  或者的关系
% 模糊匹配符 与like结合使用的


删除表中的数据
delete from 表名 where 条件 【不加where相当于全删了】

2.9 DCL 【以理解为主】
工作状态:
一个项目对应的一个用户  一个项目对应的数据库一般只有一个
这个用户对该数据库有进行操作的权限  但是对其他数据库时没有权限的


如何创建子用户
create user 用户名@ip地址 identified by ‘密码';
-子用户只能在指定地址上进行登录


如果想使子用户 能够操作某个数据库 需要给该用户分配权限
分配权限
grant 权限1,权限2,.. on 数据库名.* to 子用户@IP地址;
将某个数据库的权限分配给子用户(*泛指的是数据库中的所有内容)
【授权同样是由root管理员来授权的】


grant all on 数据库名.* to 子用户@IP地址;
all -  指的是把该数据库的所有权限都给了该用户
like: grant all on table1.* user1@localhost;

撤销权限【由root来操作的】
revoke 权限1,权限2,.. on 数据库名.* from 子用户@ip地址;
查看权限
show grants for 子用户@localhost;
删除用户
drop user 子用户名@ip地址;


2.10 DQL
数据查询语言 【查询的操作是不会修改数据库数据的】

基本查询
查询所有列
select * from 表名;
查询指定列
select 列名1,列名2,... from 表名;


完全重复的记录只出现一次
当查询是多行记录是一模一样时 只显示一行
select distinct *[列名..] from 表名;


> 列运算
1.数量类型的列可以做加减乘除的运算
select 列名+[数值|列名] from 表名;


2.有的数量列中有的值为null 在数值相加是如何把null置为0
select ifnull(列名,0) from 表名;
3.如果是字符串数据类型的列 可以做拼接
select concat("拼接符",列名,"拼接符",列名...) from 表格;

4.给列起别名
select 列名 as 别名,列名1 as 别名.. from 表格;
as是可以省略的



条件查询
select [*|列名] from 表名 where条件
模糊查询
select [*|列名] from 表名 where 列名 like 'A' - 查的内容的值就是A

like 'A_'- 查的内容的值是以A开头的两个字
like '%A' - 查的内容的值以A结尾
like '%A%' - 查的内容的值包含A







排序
升序
select *|列名,列名 from 表名 [where条件]  order by 列名 asc;
[asc可以省略]
降序
select *|列名,列名 from 表名 [where条件] order by 列名 desc;

使用多列作为排序条件 【降序升序由需求来定 这里只是举例】
select *|列名,列名 from 表名 order by 列名1 asc, 列名2 desc,..;
先按列名1升序 如果列名1相同 按列名2降序




聚合函数
是来用作某列的纵向运算的
1.count
select  count(*|列名) from 表名;
计算所有列[某一列]中记录不为null的行数
 
2.某个条件下的最高值
select max(列名) from 表名 where 条件;
3.某个条件下的最小值
select min(列名) from 表名 where 条件;
4.某个条件下求和
select sum(列名) from 表名 where 条件;
5.求某个条件下的平均值
select avg(列名) from 表名 where 条件;




分组查询
把记录使用某一行进行分组 然后查询组的信息

select 列名, 聚合函数 from 表名 [where条件] group by 列名 [having 条件]
having条件出现的原因是 where 没有办法和聚合函数一起使用
 




小编这里先做这些整合,以后有其它补充在进行添加。。。请各位多指教。