安装的一般都问题不大
sql语句分类
SQL是结构化查询语言(Structured Query Language),专门用于数据的存储、数据更新及数据库管理等操作。现在大多数市面上的数据库产品在操作上都差不多。
DDL(数据定义语言):
数据定义语言 (Data Definition Language, DDL) 是SQL语言集中,负责数据结构定义与数据库对象定义的语言,由create、alter 与 drop
三个语法所组成. DDL 主要操作的是 表的结构 不是表中的数据
create :创建、新增
alter:修改
drop:删除
注:该语言主要用于对数据库和表结构的操作,而不是DML语言一样对表中数据的操作
DML(数据操纵语言):
数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE
三种指令为核心,分别代表插入、更新与删除。
insert:插入新数据的意思
update:更新数据
delete:删除数据
注:这三个关键字的指令主要操作数据库中的表的数据,常说的增、删、改,不要和DDL中的alter、drop搞混了
DQL(数据查询语言):
数据查询语言(Data Query Language, DQL)是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。
最常用的select … from … 的语句,查询的主句,还包括order by、group by等子句
DCL(数据控制语言):
数据控制语言 (Data Control Language) 在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。对数据的权限进行控制的语言。
grant(授权)、revoke(撤销)等
TCL(事务控制语言):
事务处理语言(Transaction Control Language),它的语句能确保被DML语句影响的表的所有行及时得以更新。是一种事务控制语言。
comment(提交)、savepoint(保存点)、rollback(回滚)命令等
数据库分类
系型数据库介绍
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。例如在新员工入职的时候公司都会给你一个编号,这个编号和该员工是一一对应的,这就是一个二元关系,在关系数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类,合并,连接或者选取等运算实现数据的管理(结构化查询语言,sql语句来对数据进行处理)。
关系型数据库诞生至今已经已有40多年了(数据库诞生已经60多年了),从理论产生发展到现实产品,例如:大家最常见的myql和oracle数据库,oracle在数据库领域里上升到了霸主地位,形成每年高达数百亿美元的庞大产业市场,而mysql也会不容忽视的数据库,以至于被oracle重金收购了。(2008年 ysql【10亿美金】被sun收购了,之后sun公司又被oracle收购了)
非关系型数据库
非关系型数据库也被称为NOSQL数据库,nosql的本意是“not only sql”,指的是非关系型数据库,而不是no sql的意思,因此。Nosql数据库产生并不是要彻底的否定关系型数据库,而是作为传统关系型数据库的一个有效的补充,NoSql传统数据库在特定的场景下可以发挥出难以想象的高效率和高性能。
Nosql数据库存储不需要固定的表结构,通常也不存在连接操作,在大数据存取上具备关系型数据库无法比拟的性能优势,
当今应用体系结构需要数据存储在横向伸缩性上有能够满足需求。而Nosql存储就是为了实现这个需求而诞生的。googel的bigtable与amazon(亚马逊)的dynamo是非常成功的商业nosql实现。一些开源的nosql体系,如facebook的Cassandra,apache的HBase,也得到了广泛认同,Redis,mongodb也逐渐的越来越受到各大类中小型公司的欢迎和追捧。
数据库的操作
物理删除和逻辑删除
说一下什么是物理删除和逻辑删除,物理删除就是把一条数据从数据库中永远删除,就是再也找不到也不能恢复;逻辑删除就是给你设计的表再增加一列(比如:isDelete,设默认值为0),当你想删除数据时将这个字段的值设为1,当你再操作数据时把isDelete值为1的筛选掉就可以了,这样数据也不会丢失。对于重要的数据一定要设置这个字段,对于不重要的数据自己想怎么操作就怎么操作,大不了全部删除再重新建数据库。
常用的数据类型
<1>整数型
类型 大小 范围(有符号) 范围(无符号unsigned) 用途
TINYINT 1 字节 (-128,127) (0,255) 小整数值
SMALLINT 2 字节 (-32768,32767) (0,65535) 大整数值
MEDIUMINT 3 字节 (-8388608,8388607) (0,16777215) 大整数值
INT 4 字节 (-2147483648,2147483647) (0,4294967295) 大整数值
BIGINT 8 字节 () (0,2的64次方减1) 极大整数值
<2>浮点型
FLOAT(m,d) 4 字节 单精度浮点型 备注:m代表总个数,d代表小数位个数
DOUBLE(m,d) 8 字节 双精度浮点型 备注:m代表总个数,d代表小数位个数
<3>定点型
DECIMAL(m,d) 依赖于M和D的值 备注:m代表总个数,d代表小数位个数
<4>字符串类型
类型 大小 用途
CHAR 0-255字节 定长字符串
VARCHAR 0-65535字节 变长字符串
TINYTEXT 0-255字节 短文本字符串
TEXT 0-65535字节 长文本数据
MEDIUMTEXT 0-16777215字节 中等长度文本数据
LONGTEXT 0-4294967295字节 极大文本数据
char的优缺点:存取速度比varchar更快,但是比varchar更占用空间
varchar的优缺点:比char省空间。但是存取速度没有char快
<5>时间型
数据类型 字节数 格式 备注
date 3 yyyy-MM-dd 存储日期值
time 3 HH:mm:ss 存储时分秒
year 1 yyyy 存储年
datetime 8 yyyy-MM-dd HH:mm:ss 存储日期+时间
timestamp 4 yyyy-MM-dd HH:mm:ss 存储日期+时间,可作时间戳
MySql的约束:
这里的约束是指在创建表的时候,对表的字段所设置的约束条件,用来限制该列的数据类型和内容
> default:默认值
> not null :非空约束,其值不能为空,不是 0,也不是空字符串 ” ”,可以是 null
> unique:唯一性约束,强调该字段所有的值都是唯一的,不允许重复,但允许空值,且可以有多个空值
> primary key:主键约束,要求该字段数值不能为空,而且数值唯一
> auto_increment:自增约束,要求该字段不能为空,数值唯一,类型为整型,并根据前一条数据自动加 1
数据库基本操作(增删改查)
1、创建数据库
create database [if not exists] db_name [character set utf8];
注意:[if not exists]:最好加上,这样可以避免麻烦,每操作一次数据库就多一次风险
[character set utf8]就是设置编码格式,也可以不指定
2、查看数据
show databases;
3、查看数据库创建方式
show create database db_name;
4、修改数据库
alter database db_name [character set xxx];
5、删除数据库
drop database [if exists] db_name;
注意: [if exists]:如果你不确定数据库是否存在最好加上,存在就删除,不存在也不会报错
6、使用数据库
use db_name;
7、查看当前使用数据库
select database();
数据库用户管理
1、通过grant命令,给test数据库,添加用户***,密码123456
grant all privileges on *.* to '***'@'localhost' identified by '123456';
# 授予所有权限 所有数据库下的所有数据对象 给 这个用户 密码是 123456
2、修改用户密码
alter user '***'@'localhost' identified by '新密码';
# 下面这个是指定加密方式来修改密码的
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY'新密码';
3、显示用户
select user from mysql.user;
#或者
select user();
4、删除用户
drop user '***'@'localhost';
数据表的基本操作(增,删,改,查,约束)
1、查看数据表
show tables;
2、创建数据表
create table student(
id int primary key auto_increment, #主键 和 自增
name varchar(20) not null,
age int not null,
gender tinyint(1) default 1, #默认值为空
birthday date,
hobby varchar(20)
);
3、查看数据表结构
desc student;
4、查看创建数据表语句
show create table student;
5、增加数据(列,字段)
alter table student add address varchar(30);
6、增加多个数据
alter table student add address varchar(30),
add age int not null,
add height int not null;
7、修改一列列名
alter table student change address addr varchar(20);
8、修改一列类型
alter table student modify age tinyint default 20;
9、删除一列
alter table student drop height;
10、修改表名
rename table student to stu;
11、修改表所用的字符集
alter table student character set utf8;
12、删除表
drop table student;
create table users(id int not null,
name varchar(10),
age int,
height int
);
13、添加主键
alter table users add primary key (id);
14、删除主键
alter table users drop primary key;
15、添加唯一索引
alter table users add unique (name);
16、添加唯一索引设置索引名
alter table users add unique key user_name(name);
17、添加联合索引
alter table users add unique index name_age(name,age);
18、删除索引
alter table users drop index name;
注意 add 添加列不会影响数据,更改表的名称也不会影响到数据,而 modify 修改列类型,change 修改列名都会影响到数据,所以当表中有数据的时候,修改列名和列类型的时候要格外注意