MySQL(一)
一 ,说明
1,认识MySQL与创建用户
MySQL是最流行的关系型数据库管理系统之一,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
- 关系型数据库:采用关系模型来组织数据的数据库
- 关系:一张二维表,每个关系都有一个关系名,就是表名
- 模型:行和列(二维),具体指字段跟字段信息
2,常见数据库
数据库类型 | 特性 | 优点 | 缺点 |
---|---|---|---|
关系型数据库SQLite、Oracle、mysql | 1、关系型数据库,是指采用了关系模型来组织数据的数据库;2、关系型数据库的最大特点就是事务的一致性;3、简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。 | 1、容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解;2、使用方便:通用的SQL语言使得操作关系型数据库非常方便;3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率;4、支持SQL,可用于复杂的查询。 | 1、为了维护一致性所付出的巨大代价就是其读写性能比较差;2、固定的表结构;3、高并发读写需求;4、海量数据的高效率读写; |
非关系型数据库MongoDb、redis、HBase | 1、使用键值对存储数据;2、分布式;3、一般不支持ACID特性;4、非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。 | 1、无需经过sql层的解析,读写性能很高;2、基于键值对,数据没有耦合性,容易扩展;3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。 | 1、不提供sql支持,学习和使用成本较高;2、无事务处理,附加功能bi和报表等支持也不好; |
二,登录MySQL
不区分大小写,但是系统默认大写为系统代码,小写为程序员代码
1,通过root用户进入数据库
mysql -uroot -ppassword # 登录数据库
exit # 退出
\q # 退出
2,创建用户名及密码
# 创建用户三个步骤
create user 'juhao'@'%' identified by 'password'; # 创建用户名(%表示远程连接,可用此用户名登陆)
grant all on *.* to 'juhao'@'%'; # 赋予所有权限
flush privileges; # 刷新数据库 使权限生效
#修改root密码
update user set password=password(”123″) where user='root';
#用新账号登录
mysql -ujuhao -ppassword; # 新用户登录
select user(); # 查看当前用户
select database(); # 查看当前位于哪个数据仓库
3,创建数据库
show databases; # 查看当前有哪些数据库
create database mydb; # 创建数据库(数据库已存在会报错,如果没有,则创建)
create database if not exists mydb; # 数据库已存在不会报错,如果没有会创建
# 对于系统内部的,默认的数据库,不需要也不能去修改
drop database mydb; # 删除数据库
use mydb; # 进入数据库
select database(); #查看当前位于那个数据库中
4,创建数据表
create table student( # student为创建表的name
id int, # id 为字段编号,int为其数据类型
name varchar(20), # name为字段名,varchar为类型,20为长度
); # 建表,分号结尾
show tables; # 查看当前数据库内有哪些表格
5,查看数据表结构
desc student; # 查看student数据表的结构
(describe yablename)
show create table student; # 查看更详细的结构
drop table student; # 删除表格
6,mysql数据类型
数据类型 | 代表内容 | 事例 |
---|---|---|
int | 整型 | id int |
varchar(20) | 指定长度,最多65535个字符。变长(超出会自动截掉) | name varchar(20)(插入20个字符) |
char(4) | 指定长度,最多255个字符。定长 | sex char(4)(不管插入几个字符都会占4个) |
double(4,2) | 双精度浮点型,m总个数,d小数位 | price double(4,2) |
text | 可变长度,最多65535个字符 | detail text |
datetime | 日期时间类型YYYY-MM-DD HH:MM:SS | dates datetime |
enum(‘good’,’not good’) | 枚举,在给出的value中选择 | ping enum(‘good’,’not good’) |
流程
creat table tb2(
id INT,
name VARCHAR(20),
sex CHAR(4),
price DOUBLE(4,2),
detail TEXT,
date DATATIME,
ping ENUM('好评','差评')
);
insert intotb2 value(1,'裤子','男',20.0,'这条裤子超级好!',now(),'好评');
三,小结
1,常用方法
功能 | 用法 | |
---|---|---|
增 | insert into student (id,name) value (1,’句号’); | 增的第一个语法 |
insert into tanzhou value(2, ‘name’); | ()中的字段名可写可不写,默认按顺序添加 | |
insert into student value(3) | 也可只插入id | |
删 | delete from student where name=’句号’; | 删除所有name=句号的数据 |
查 | select * from student; | 查看student |
select * from student where id<2; | 查看student所有id小于4的内容 | |
select name from student where id<2; | 查看student 内的name 字段,并且id小于4的内容 | |
改 | update student set name=’句号1号’ where id=1; | 将id=1的那一行的name 改为’句号1号’ |
2,常用命令
功能 | 用法 | 注释 |
---|---|---|
登录数据库 | mysql -uroot -ppassword |
|
退出 | exit 或 \q |
|
创建用户 | create user 'juhao'@'%' identified by 'password'; |
%表示远程连接,可用此用户名登陆 |
赋予所有权限 | grant all on *.* to 'juhao'@'%'; |
|
使权限生效 | flush privileges; |
flush写入 |
查看当前用户 | select user(); |
|
查看当前位于哪个数据库 | select database(); |
|
查看当前有哪些数据库 | show databases; |
|
创建数据库 | create database mydb; 或 create database [if not exists] mydb; |
创建以mydb为名建立一个数据库,[]为可选参数 |
删除数据库 | drop database mydb; |
|
进入数据库 | use mydb |
|
创建数据表 | create table [if not exists] student( id int , name varchar(10) ); |
student为创建表的name id 表示(元组)字段编号,数据为int型 name为字段名,varchar为类型,20为长度 |
查看当前数据仓库内有哪些表 | show tables; |
|
查看表的结构 | desc student; |
|
查看创建表时的命令 | show creat table tanzhou; |
|
删除表格 | DROP TABLE tablename; |