Maria-DB
mysql客户端可用选项:
-A, --no-auto-rehash 禁止补全
-u, --user= 用户名,默认为root
-h, --host= 服务器主机,默认为localhost
-p, --passowrd= 用户密码,建议使用-p,默认为空密码
-P, --port= 服务器端口
-S, --socket= 指定连接socket文件路径
-D, --database= 指定默认数据库
-C, --compress 启用压缩
-e “SQL“ 执行SQL命令
-V, --version 显示版本
-v --verbose 显示详细信息
--print-defaults 获取程序默认使用的配置
安全模式:
mysql -uroot -pcentos -U 安全模式进入,避免批量操作,没有where条件会报错
可以将-U选项写入alisa 或者脚本里或者写入/etc/my.cnf.d/client.cnf
vim /etc/my.cnf.d/client.cnf
[client]
safe_updates
创建远程用户
create user wang@'192.168.1.%' identified by 'centos'; 创建用户wang只能从192.168.1网段登陆,密码为centos,也可以指定只能某IP地址登陆
用户远程连接
mysql -uwnag -h'192.168.1.100' -pcentos -P3306; 连接IP地址为192.168.1.100端口为3306的数据库
删除用户:
delete from mysql.user where user='wang';
在/etc/my.cnf.d/client.cnf 里添加账户和密码,将这组账号密码设置为默认登陆设置,登陆时可省去密码和账户,默认以这组账号密码登陆
mysql --print-defaults; 可以查看默认账号密码
update user set password=password('centos') where user='root';修改密码,password('centos')加密centos,在数据库中不明文显示
在每次修改过数据库权限以后,都要刷新以启用新权限
授权:
grant select,delete on
grant all on *.* to wang@'192.168.1.%' identitied by 'centos'; 授权wang可以在这个网段登陆,拥有所有数据库和表的所有权限
show grants for wang@'192.168.1.%'; 查看wanng的授权
revoke delete on *.* from 'wang'@'192.168.1.%; 删除wang在所有库和表的delete权限
在每次修改过数据库权限以后,刷新以确认新权限启用
支持通配符:
% 匹配任意长度的任意字符
_ 匹配任意单个字符
SQL语言规范
在数据库系统中,SQL语句不区分大小写(建议用大写) 库名表名对大小写敏感
但字符串常量区分大小写
SQL语句可单行或多行书写,以“;”结尾
关键词不能跨多行或简写
用空格和缩进来提高语句的可读性
子句通常位于独立行,便于编辑,提高可读性
注释:
SQL标准:
/*注释内容*/ 多行注释
-- 注释内容 单行注释,注意有空格
MySQL注释:
#
select * mysql.user\G ; 竖列显示
create database [if not exists] 'db_name'; 创建数据库[如果不存在就创建]
drop database [if exists] 'db_name'; 删除数据库[如果存在就删除]
CHARACTER SET 'character set name'; 创建数据库时设定字符集
show variables like '%character_set%'; 查看默认字符集
SHOW COLLATION 查看排序规则
create table [if not exists] 'table_name' (col1 type1 修饰符,col2 type2 修饰符,...)
show table status from mysql\G; 显示mysql数据库里面所有的表结构,竖列显示
show table status like 'table'\G; 查看表信息
show engines; 查看数据库支持的引擎
mysql -uroot -pcentos -S /mysqldb/3306/socket/mysql.sock -e 'show databases;' 不进入数据库执行命令
desc tlb_name;查看表格式
select name as 姓名 from statudent; 使用as取别名,支持中文
将数据库里的表文件独立放置
vim /mysqldb/3306/etc/my.cnf
在[mysqld]下添加 innodb_file_per_table
导入数据库文件,每个表将独立存放
数据类型:
1、整型
tinyint(m) 1个字节 范围(-128~127)
smallint(m) 2个字节 范围(-32768~32767)
mediumint(m) 3个字节 范围(-8388608~8388607)
int(m) 4个字节 范围(-2147483648~2147483647)
bigint(m) 8个字节 范围(+-9.22*10的18次方)
取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~255)
int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,规定了MySQL的一些交互工具(例如MySQL命令行客户端)用来显示字符的个数。对于存储和计算来说,Int(1)和Int(20)是相同的
BOOL,BOOLEAN:布尔型,是TINYINT(1)的同义词。zero值被视为假。非zero值视为真
2、浮点型(float和double),近似值
float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位
double(m,d) 双精度浮点型16位精度(8字节) m总个数,d小数位
设一个字段定义为float(6,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位
3、定点数
在数据库中存放的是精确值,存为十进制
decimal(m,d) 参数m<65 是总个数,d<30且 d<m 是小数位
MySQL5.0和更高版本将数字打包保存到一个二进制字符串中(每4个字节存9个数字)。例如,decimal(18,9)小数点两边将各存储9个数字,一共使用9个字节:小数点前的数字用4个字节小数点后的数字用4个字节,小数点本身占1个字节,
浮点类型在存储同样范围的值时,通常比decimal使用更少的空间。float使用4个字节存储。double占用8个字节
因为需要额外的空间和计算开销,所以应该尽量只在对小数进行精确计算时才使用decimal——例如存储财务数据。但在数据量比较大的时候,可以考虑使用bigint代替decimal
4、字符串(char,varchar,_text)
char(n) 固定长度,最多255个字符
varchar(n)可变长度,最多65535个字符
tinytext可变长度,最多255个字符
text 可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext可变长度,最多2的32次方-1个字符
BINARY(M) 固定长度,可存二进制或字符,长度为0-M字节
VARBINARY(M) 可变长度,可存二进制或字符,允许长度为0-M字节
内建类型:ENUM枚举, SET集合
ENUM枚举:单选其中一项
SET集合:多选,可以随意选几项
修饰符:
所有类型:
NULL 数据列可包含NULL值
NOT NULL 数据列不允许包含NULL值
DEFAULT 默认值
PRIMARY KEY 主键
UNIQUE KEY 唯一键
CHARACTER SET name 指定一个字符集
数值型:
AUTO_INCREMENT 自动递增,适用于整数类型
UNSIGNED 无符号
示例:
CREATE TABLE students (id int UNSIGNED NOT NULL PRIMARY KEY,name VARCHAR(20)NOT NULL,age tinyint UNSIGNED);
DESC students;
CREATE TABLE students2 (id int UNSIGNED NOT NULL ,name VARCHAR(20) NOT NULL,age tinyint UNSIGNED,PRIMARY KEY(id,name));
表操作:
desc 'tbl_name'; 查看表格式
DROP TABLE [IF EXISTS] 'tbl_name'; 删除表
ALTER TABLE 'tbl_name' 修改表
字段:
添加字段:add
ADD col1 data_type [FIRST|AFTER col_name]
删除字段:drop
修改字段:
alter(默认值), change(字段名), modify(字段属性)
索引:
添加索引:add index
删除索引: drop index
create index index_name on students(name); 在students表的name字段上添加索引,名为index_name
drop index index_name on students; 在students表上删除索引名为index_name
truncate table students; 删表,速度最快的方式
create table newstudents select * from students; 根据旧表创建新表,但是会丢失主键和一些信息,原理是根据查询结果创建新表
create database students; 创建数据库,
use students; 切换数据库
create table class1 (id int primary key,name char(20) not null , sex enum('m','f') default 'm'); 创建表
desc class1; 查看表信息
insert class1 (id,name) values (1,'mage'); 添加表记录
insert class1(id,name) values (2,'zhaohuan') ,(3,'liuhuan');
insert class1(id,name,sex) values (4,'lili','m') ,(5,'zhanghuan','m');
update class1 set sex='f' where id=4; 修改id=4的sex记录
delete from class1 where id=1; 删除id=1的记录
select * from students order by age; 默认asc 正序,desc倒序
select * from students order by age asc;
排序中NULL值默认优先最高,会排在最前面,在查询值前加-即可处理为最低优先级,
如:select * from students order by -age asc;
select * from class1 order by age limit 5; 最多显示5行
select * from class1 order by age limit 3,5; 跳过前三个,再显示4个
select id,name 姓名 from class1 where id between 10 and 20;显示表里id在10和20之间的id,name两项,name使用了别名,省略了as
select id,name 姓名 from class1 where id >=10 and id <=20; 意义同上
select id,name 姓名 from class1 where name like 'x%'; 模糊匹配需要通配符_%配合
WHERE子句:指明过滤条件以实现“选择”的功能:
过滤条件:布尔型表达式
算术操作符:+, -, *, /, %
比较操作符:=, !=, <>, <=>, >, >=, <, <=
BETWEEN min_num AND max_num
IN (element1, element2, ...)
IS NULL
select * from students where classid is null
IS NOT NULL
select * from students where classid is not null
LIKE:
%: 任意长度的任意字符
_:任意单个字符
RLIKE:正则表达式,索引失效,不建议使用
REGEXP:匹配字符串可用正则表达式书写模式,同上
逻辑操作符: NOT,AND,OR,XOR
函数计算:
select sum(score) from scores where stuid=1; 计算学号为1的同学的总分数
select courseid,avg(score) from scores group by courseid;计算每个科目的平均成绩
select courseid,abg(score) from scores group by courseid having crouseid=1;查看科目1的平均成绩
group by .... having .... 语法固定
select courseid,abg(score) from scores group by courseid having crouseid in (1,3)查看科目1和3的平均成绩
内连接:
select st.name,sc.score from students as st,scores as sc where st.stuid=sc.stuid;
select st.name,sc.score from students as st inner join scores as sc on st.stuid=sc.stuid; 其他写法用了inner不能用where
select st.name,sc.score from students as st join scores as sc on st.stuid=sc.stuid; inner可以省略
select st.name,sc.score from students as st,scores as sc where st.stuid=sc.stuid and sc.score> 90;大于90分以上的学生
外连接:
select st.name,sc.score from students as st right outer join scores as sc on st.stuid=sc.stuid; 右外连接,显示右边表所有内容
select st.name,sc.score from students as st left outer join scores as sc on st.stuid=sc.stuid; 左外连接,显示左边表所有内容
自连接:
select e2.name,e1.name as 上司 from emp as e1 inner join emp as e2 on e1.id=e2.leaderid;
union:将两个不同结构的表合并输出显示,搜索的项必须是相同的
select t.tid,t.name from teachers as t union select s.stuid,s.name from students as s;
cross join: 由两个表生成第三个表,并添加了空白的评分列
select c.course,t.name," " as 评分 from teachers as t cross join courses as c;
子查询:查询显示比id=9的同学年纪更大的同学
select * from students where age > (select age from students where stuid=9);
Maria-DB的更多相关文章
- 为什么要 MySQL 迁移到 Maria DB
在Oracle收购了SUN公司之后, MySQL很不幸的落在了Oracle的手中,MySQL与Oracle DB存在竞争关系,很可能导致Oracle公司影响MySQL的开发与开放.MySQL之父Wid ...
- CentOS7系统安装 Maria Db(MYSQL)教程
一.背景Maria Db是流行的跨平台MySQL数据库管理系统的分支,被认为是MySQL 的完全替代品.Maria Db是由Sun在Sun Micro systems合并期间被Oracle收购后,于2 ...
- mariadb,maria db
mariadb,maria db 继续紧逼Oracle:在占领谷歌等公司之后,MariaDB迈向企业端 发表于2013-10-25 13:00|10618次阅读|10条评论 MariaDB在Googl ...
- Linux中数据库的安装和配置(MySQL与Maria DB)
目录 MySQL和Maria DB的介绍 MySQL和Maria DB的安装 yum源安装MySQL(Centos6.5+Mysql5.1) 源码包安装MySQL yum源安装Maria DB 源码包 ...
- Maria DB数据库基础知识
Maria DB连接 与MariaDB建立连接的一种方法是在命令提示符下使用mysql二进制文件. Maria DB命令行登录数据库服务: mysql -u root -p -- 换行输入密码 上面给 ...
- but this usually doesn’t gain you anything.
High Performance My SQL, Third Edition Date and Time Types My SQL has many types for various kinds o ...
- RHCE7.0练习题汇总[转]
RHCE7.0练习题汇总38 RHCSA部分 关于密码破解,在上午的考试中需要我们自己安装图形化界面和破解root密码,root的密码按照题目的要求来进行修改.可以使用单用户模式或者使用上课讲的re. ...
- 自动化运维——一键安装MySQL
根据项目需要,前段时间在搞EMM系统各种安装包的自动化部署工作,主要包括一键安装和一键启动\停止功能.总结记录下来,以供后用. 本文主要是自动安装MySQL5.7.11版,Linux版脚本在CentO ...
- 最受IT公司欢迎的50款开源软件
文章来自:云头条编译 本文介绍了多款知名的开源应用软件,科技公司可以用它们来管理自己的 IT 基础设施.开发产品. 过去十年间,许多科技公司已开始畅怀拥抱开源.许多公司使用开源工具来运行自己的 IT ...
- MySQL学习基础知识1
什么是数据库? 数据库就是存储数据的仓库. 存储方式: 变量 无法永久存储 文件处理,可以永久存储,弊端:文件只能在自己的计算机读写,无法被分享(局域网除外) 数据库分类: 1.关系型数据库 提供某种 ...
随机推荐
- BZOJ3033: 太鼓达人(欧拉回路)
题意 题目链接 Sol 第一问的答案是\(2^M\),因为每个位置只有\(0 / 1\)两种情况,最优情况下一定是每个位置代表着一个长度为\(K\)的字符串 考虑相邻两个字符串之间的转化,第二个字符串 ...
- 10th week task -2 Object 的起源
Objective-C与C++.Java等面向对象语言类似,不过很多方面有所差别.若是用过另一种面向对象语言,那么就能理解Objective-C所用的许多范式与模版了.然而语法上也许会显得陌生,因为该 ...
- 【代码笔记】XML深入学习:DTD约束与DTD语法(1)
2015-12-27 文件名 student.xml <?xml version="1.0" encoding="GB2312" standalon ...
- Bootstrap导航栏navbar源码分析
1.本文目地:分析bootstrap导航栏及其响应式的实现方式,提升自身css水平 先贴一个bootstrap的导航栏模板 http://v3.bootcss.com/examples/navbar- ...
- 今日头条极速版邀请码以及其它APP邀请码大全
现在大多手机新闻APP都需要输入码,在网上找了很久,最终找到一个比较全的文章,本人试过,都是可以使用的! 第1个比较好,可边看新闻,边收益!嘻嘻!平时写代码累了,休息刷一下!或者在睡觉前刷新一下,每天 ...
- alpinelinux
https://wiki.alpinelinux.org/wiki/Tutorials_and_Howtos https://nixos.org/nix/manual/#ch-installing-b ...
- file中mkdirs和mkdir的区别-文件上传
mkdirs()可以建立多级文件夹, mkdir()只会建立一级的文件夹, 如下: new File("/tmp/one/two/three").mkdirs(); 执行后, 会建 ...
- SQLServer存储过程 实例,很多语法可以以后参考
SQL代码 alter PROCEDURE sp_addnewdtgtype ( ), @dtgdllcontent image, ) ) AS BEGIN ); declare @v_count i ...
- SQL Server ->> 在SQL Server中创建ASSEMBLY
首先要把数据库的TRUSTWORTHY属性改为ON ALTER DATABASE [MYDB] SET TRUSTWORTHY ON GO 接下来直接创建ASSEMBLY应该就没问题了.但是往往有可能 ...
- win10安装mxnet cuda9.0-gpu版
类似于上一篇文章 Anaconda3.6 python3.6.5 cuda9.0+ cudnn7.0 安装MXNet 1.设置清华源 conda config --prepend cha ...