初始数据库与简单语句

初识数据库

为什要用数据库

第一,将文件和程序存在一台机器上是很不合理的。
第二,操作文件是一件很麻烦的事

数据库的优势

1.程序稳定性 :这样任意一台服务所在的机器崩溃了都不会影响数据和另外的服务。
2.数据一致性 :所有的数据都存储在一起,所有的程序操作的数据都是统一的,就不会出现数据不一致的现象
解决了多个服务同时使用数据的一致性间题
3.并发 :数据库可以良好的支持并发,所有的程序操作数据库都是通过网络,而数据库本身支持并发的网络操作,不需要我们自己写socket   解决了并发问题
4.效率 :使用数据库对数据进行增删改查的效率要高出我们自己处理文件很多  操作文件的效率和便捷问题

认识数据库

什么是数据(Data)

描述事物的符号记录称为数据,描述事物的符号既可以是数字,也可以是文字、图片,图像、声音、语言等,数据由多种表现形式,它们都可以经过数字化后存入计算机

什么是数据库(DataBase,简称DB)

数据库是长期存放在计算机内、有组织、可共享的数据集合。

数据库管理系统分类

MySQL、Oracle、SQLite、Access、MS SQL Server
#数据库分类:
    #关系型数据库:mysql oracle. sglserver. sgllite accesse  表的形式 关联性强 模糊查询 查询稍慢 
    #非关系型数据库:redis. mongodb. memcache(内存级别)  键值对形式 利用键查询快 利用值查询慢

sql语句的种类

SQL语言按照实现的功能不同,主要分为3类:数据操纵语言(DML),数据定义语言(DDL),数据控制语言(DCL)。
1.数据操纵语言(DML):主要用来处理数据库中的数据内容。允许用户对数据库中的数据进行查询 ,插入,更新和删除等操作
常用的DML语句及其功能:
DML语句	功能说明
SELECT	从表或视图中检索数据行
INSERT	插入数据到表或视图
UPDATE	更新数据
DELETE	删除数据
CALL	调用过程
MERGE	合并(插入或修改)
COMMIT	将当前事务所做的更改永久化(写入数据库)
ROLLBACK	取消上次提交以来的所有操作

2.数据定义语言(DDL):是一组SQL命令,用于创建和定义数据库对象,并且将对这些对象的定义保存到数据字典中。通过DDL语句可以创建数据库对象,修改数据库对象和删除数据库对象等。
常用的DDL语句及其功能:
DDL语句	功能说明
CREATE	创建数据库结构
ALTER	修改数据库结构
DROP	删除数据库结构
RENAME	更改数据库对象的名称
TRUNCATE	删除表的全部内容
注:每一条DDL语句执行后,Oracle都将提交当前事务。

3.数据控制语言(DCL):数据控制语言用于修改数据库结构的操作权限。DCL语句主要有2种:
DCL常用语句及其功能:
DCL语句	功能说明
CRANT	授予其他用户对数据库结构的访问权限
REVOKE	收回用户访问数据库结构的权限


4.SQL语句规范
编写SQL语句时需要遵循一定的规则:
1.SQL关键字、对象名、和列名不区分大小写。
2.字符值和日期值要区分大小写。
3.在应用程序中如果SQL语句文本很长,可以将语句分布到多行上,并且可以通过使用跳格和缩进提高代码的可读性
4.SQL*Plus中的SQL语句以分号(;)结束。

mysql操作命令

select user(); #查看当前用户名
select database();#查看当前库
show databases;#查看当前所有库
show tables;#查看当前库所有表
desc 表名 #查看表结构
show create table d1;
查看字符集编码的指令:
show variables like "%char%";

登录账号

创建用户和授权
https://www.cnblogs.com/clschao/articles/10050473.html

自己的电脑 管理员用户
# 登录方式 mysq 进入客户端
    # 需要使用管理员root用户登陆   之前不输入msql
    # mysql -uroot -p   # mysql5.6默认是没有密码的
    # #遇到password直接按回车键
    #第2种  mysql -u用户名 -p用户密码
    
    # mysql>  set password = password('123'); # 给当前数据库设置密码 123密码
    
# 使用公司的数据库   管理员会创建-个账号给你用
# 自己的数据库借给别人用 也可以创建一个账号给别人
# mysql -uroot -p   # mysql5.6默认是没有密码的
    # #遇到password直接按回车键
    #第2种  mysql -u用户名 -p用户密码
    
    
MySQL客户端连接服务端时的完整指令
mysql -h 127.0.0.1 -P 3306 -u root -p

修改密码

4.1第一种修改密码方式,当你忘记密码的时候使用这种方式修改
如果密码忘了怎么办?
1 停掉MySQL服务端(net stop mysql)
2 切换到MySQL安装目录下的bin目录下,然后手动指定启动程序来启动mysql服务端,指令: mysqld.exe --skip-grant-tables
3 重新启动一个窗口,连接mysql服务端,
4 修改mysql库里面的user表里面的root用户记录的密码:
    update user set password = password('666') where user='root';
5 关掉mysqld服务端,指令:
    tasklist|findstr mysqld #查看mysqld 的id
    taskkill /F /PID 进程号    #关闭进程
6 正常启动服务端(net start mysql)



4.2第二种当你没有忘记密码的时候,想要去修改密码建议使用这种方式,因为简单
        mysqladmin -uroot -p1234 password 123

创建子账号

#创建账号
    # mysql> create user 'saoqiang'@'192.168.13.%' identified by '123';# 指示网段
    # mysql> create user 'eva'@'192.168.10.5'   # 指示某机器可以连接
    # mysql> create user 'eva'@'%' identified by '123';   #指示所有机器都可以连接
    # mysql> show grants for 'eva'@'192.168.10.5';查看某个用户的权限
# # 创建账号并授权
# mysql> grant all on *.* to 'eva'@'%' identified by '123'
# 查看所有用户
#select user,host from mysql.user;
#mysql>     select user();  #查看当前用户名
    #mysql>     exit     # 也可以用q quit退出

用户授权

# 给账号授权 登录情况下(*代表所有)增删改查all所有  select查看
# mysql> grant all on *.* to 'eva'@'%';
# mysql> grant all on *.* to '用户名'@'对应用户名IP地址';

# mysql> grant select on *.* to 'eva'@'%';#查看
# mysql> grant all on 数据库.表 to '用户名'@'地址'; # 给一个存在的eva账号授权
# mysql> flush privileges;    # 刷新使授权立即生效


# # 创建账号并授权
# mysql> grant all on *.* to 'eva'@'%' identified by '123'

删除子用户

drop user '骚强'@'host'; #删除已存在的用户 host 代表他的id
实列
drop user '骚强'@'127.01.0.1'; #删除已存在的用户 host 代表他的id

远程登陆他人账户

# 远程登陆  未登录情况下
# $ mysql -uroot -p123 -h 192.168.10.3 #对方的ip
mysql -uroot -p1031 -h 192.168.16.153