mysql学习录(一)简单数据库、用户、表的操作

安装的一般都问题不大

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 字节    (-128127)                (0255)                 小整数值
       SMALLINT  2 字节    (-3276832767)            (065535)               大整数值
       MEDIUMINT 3 字节    (-83886088388607)        (016777215)            大整数值
       INT       4 字节    (-21474836482147483647)  (04294967295)          大整数值
       BIGINT    8 字节     ()            		     (0264次方减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 修改列名都会影响到数据,所以当表中有数据的时候,修改列名和列类型的时候要格外注意

CRUD操作见二

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值