mysql 数据类型和sql语句

时间:2020-11-30 13:53:35
sql:被称为结构化查询语言
其内部被分为:
DML语句:数据操作语言,用于增(insert),删(delete),查(select),改(update)
DDL语句:数据定义语言,用于实现数据存储,create,drop,alter
DCL语句:数据控制语言,一般用于权限控制。grant,revoke,commit, rollback
 
mysql发行版分为商业版(enterprise 收费),社区版(community  是免费版本)
官网: www.mysql.com
mysql 是c/s 架构的,有客户端还有服务器端
mysql提供的软件有三种软件包格式:1.软件包管理器独有的格式,如rpm包,2.通用2进制软件,无需安装直接解压配置即可使用。
3.源程序
 
官网提供了不同操作系统需要的软件包。Linux的可以下载 Linux Generic 这是通用二进制格式的,我们需要下载使用glibc编译的包。通用2进制
Linux - Generic (glibc 2.5) (x86, 32-bit), Compressed TAR Archive
 
红帽软件包管理器本身就提供了mysql
使用命令 yum list all |grep mysql 查看
mysql 数据类型和sql语句
 
其中mysql.i686  表示mysql客户端
mysql-server.i686 表示mysql服务器端数据库
mysql-bench.i686 表示数据库性能测试,压力测试组件
 
对应红帽官方提供了,最重要的是mysql  mysql-server,基本上都是5.1版本的比较老,最新的包只能去mysql官网下载。除非需要定制使用mysql才会用到源码包。
红帽系统上 mysql是客户端,mysqld叫服务器端,mysql监听在tcp3306端口,一般以mysql用户和mysql用户组去运行。红帽系统上默认mysql数据库的数据保存位置在/var/lib/mysql/目录下。
使用yum -y install mysql-server  会自动安装mysql服务器端和客户端。安装完成后mysql会有一个初始化的动作:mysql创建完成后里面就有一个独特的数据库名称叫mysql里面存放了源数据,就是存一些当前数据库里面有多少个数据库,每个数据库叫什么名字,总共有多个表,每个表叫什么名字,以及总共多少字段,字段属性,刚开始安装完成这个mysql数据库是不存在的,因此初始化就是建立这个数据库,因此第一个启动。使用命令
service mysqld start   就会执行初始化。mysql有一个root用户和Linux操作系统的root是两码事。不是同一个用户,刚安装完root密码为空。root就是最高权限用户
使用yum安装完成后,直接敲mysql命令。即可进入
使用 -u 可以指定使用哪个用户去连接。
-p 可以使用密码
-h 指定服务器地址,不使用-h 默认连接本地
例如 mysql -u root -p -h 192.168.1.111
退出mysql 使用quit命令
 
Linux连接本地mysql 是基于socket 连接,而socket文件通常在/var/lib/mysql下面
如果客户端和服务器端不在一台主机上面就必须使用tcp/ip协议连接
 
mysql客户端工作模式:交互式模式,批处理模式(可以实现mysql脚本)
 
交互式模式命令类别:
 客户端命令:可以在交互式模式下使用\h获取客户端命令帮助
mysql 数据类型和sql语句
 每个命令后面的 \ 代表可以使用这样的简写命令
服务器端命令:
服务器端命令都需要命令语气结束符 默认为分号 ;
 
SQL 接口:
oracle 的 PL/SQL
 
关系数据库对象:表,索引,视图,约束,存储函数,触发器,游标,用户,权限,事务
关系型数据库,核心是表。有行(row)和列(column)组成。
 
mysql数据类型: 字符,数值,日期,布尔
 
字符类型使用char 表示,定义字符类型还需要指定长度,比如 char(5)
varchar( ) 可变长字符类型。字符类型存储不区分大小写,要想区分大小写使用 BINARY() VARBINARY()可变长度  TEXT()  大对象字符存储。可用于存储长字符
 
数值类型:分为精确数值型:整型(TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT)
整型修饰符,可以使用UNSIGNED 是无符号整型。 NOT NULL 非空
近似数值型:浮点型(FLOAT,DOUBLE)
 
日期时间
DATE
TIME
DATETIME
STAMP
 
布尔:使用0和1表示
 
 
mysql 常用命令:
对mysql而言不区分大小写。
创建数据库:
create database 数据库名;
create database if not exists 数据库名称;
 
删除一个数据库
drop database 数据库名称;
注意mysql数据库没有回收站,删除就无法恢复
mysql 数据类型和sql语句
创建表
创建表之前先要选择使用哪个数据库创建表。
例如:我们有一个数据库叫做python。我们在上面建立一个表,先要选择这个数据库
use python;
创建表:
create table students(name char(20) not null,age tinyint unsignet,sex char(1) not null  )
 
查看表:
show tables;
查看库中的表 show tables from 数据库名;
查看表结构
desc  表名;
 
删除表:
drop table表名;
或者drop table if exists 表名;
 
修改表:
modify :修改某字段属性
change :改变字段名称
add :添加字段
drop :删除字段
比如给刚才的表 students 添加一个字段 
alter table students add course varchar(100); 
默认添加字段在最后,我们添加了一个course 字段
想要将course字段的第一个字母改成大写,并且放在name字段前面。
alter table students chang course Course varchar(100) after name;
 
删除字段:
drop 字段名称;
 
插入数据:
insert into  表名(字段1,字段2,.........)values ('字符',数字........)
如果是每个字段都要插入值,则不需要指定字段
批量插入:
insert into  表名(字段1,字段2,.........)values ('字符',数字........),('字符',数字.................)
例如往students 表的字段,name ,sex插入两名字 和性别
insert into students (name,sex) value('py1','M'),('py2','F');
 
插入完成再使用select * from students;  查询表中所有数据看看
替换数据:
replace into
 
 
修改数据:
update 表名  set  字段=值;  where 条件;
例如我们修改students 表中的字段的py1的性别 M 改为F
uptate students set sex='F'where name='py1';
 
删除某行:
delete   from  students where name='py1'
这里是删除掉name字段包含有py1的
 
选择:
selcet 字段 from 表名 where 条件
* :表示所有字段
创建用户:
 create user 'username'@'host' identified by 'passwd';
这样创建只能连接到mysql,进行一些查看而且,权限很小
删除用户:
drop user 'username'@'host';
host:可以使用ip,主机名,网络地址,通配符
_  : 表示匹配任意单个字符
%:匹配任意长度任意字符
 
授权用户
grant  权限1,权限2,权限....... on  db_name.tab_name to 'username'@'host'  [identified by 'passwd'];
 
授权所有权限:
all privileges
用户不存在自动创建
查看用户权限:
show grants for 'username'@'host';
取消授权:
revoke 权限1,权限2,......on db_name.tab_name from 'username'@'host';