Linux-Mysql基本操作

#创建用户
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '密码';
#创建数据库zabbix
CREATE DATABASE `zabbix` CHARACTER SET utf8 COLLATE utf8_bin;
#赋予权限
grant all privileges on zabbix.*to zabbix@'localhost' identified by '密码';
#刷新权限
flush privileges;
show variables like '%datadir%'; 查看数据库本地存放位置
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 查询所有用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root'; 允许root远程访问
show grants for 'username'@'%';查看数据库中具体某个用户的权限
update mysql.user set host='%' where user='tongbu'; 更新host
drop user zabbix@'127.0.0.1'; 直接删除用户 drop user:将用户信息全部删掉,包括user表和mysql.db表中的权限信息。
flush privileges; 刷新权限   
show databases;    浏览所有库
create database 库名;   新建库
show create database 库名;    浏览库
create database if not exists 库名;    判断无库创建
create database 库名 character set 类型;    创建指定类型库
create database if not exists 库名 character set 类型;判断无库创建指定类型库
alter database 库名 character set 类型;修改库类型为
drop database 库名;删除库
drop database if exists 库名; 判断无库删除
select database();查询当前使用的数据库
use 库名;使用库
show tables;查询所有表
desc 表名;查询表的结构
ALTER TABLE:添加,修改,删除表的列,约束等表的定义。
查看列:desc 表名;
修改表名:alter table old_table rename to new_table;
添加列:alter table 表名 add column 列名 varchar(30);
删除列:alter table 表名 drop column 列名;
修改列名MySQL: alter table 表名 change oldname newname int;
修改列名SQLServer:exec sp_rename’t_student.name’,‘nn’,‘column’;
修改列名Oracle:alter table 表名 rename column nnnnn to hh int;
修改列属性:alter table 表名 modify name varchar(22);
创建表:
create table 表名; 创建空表
create table 表名(
	列名1 数据类型1,
	列名2 数据类型2
);
例子:
CREATE table student (
sno int(12) PRIMARY key,
sname VARCHAR(25) not null
);
int 整形
double(5{小数点前},2{小数点后}) 小数类型  
date 日期   yyyy-mm-dd
datetime    更精确日期     yyyy-mm-dd  hh:mm:ss
timestamp  不复制或为null以系统时间自动赋值
varchar(20)  字符串类型(字符串长度)
drop table 表名;删除表
drop table if exists 表名; 判断无表删除
create table 表名 like 被复制的表名;   复制
alter table 表名 rename to 新表名;  修改表名
alter table 表名 character set 字符集名称;  修改表的字符集
alter table 表名 add 列名 数据类型;   添加一列
alter table 表名 change 列名 新列名 新数据类型;   修改列的名称类型
alter table 表名 modify 列名 新数据类型;  修改列的类型
alter table 表名 drop 列名;    删除列
insert into 表名(列名1,列名2....列名n)values(数据)   添加数据;  {列名和数据要一一对应;如果表名后不定义,默认给所有列添加值;除了数字都要用引号}
select*from 表名;查询表中的记录
delete from 表名 where 条件;{不加where全删} 
teuncate table 表名;删除表再创建一样的空表
update 表名 set 列名1=值1,列名2=值2,...[where 条件];修改{不加条件修改全部 }
select 列名,列名 from 表名;字段列表查询
select distinct 列名,列名 from 表名;删除重复查询
select 列名, 列名,列名+列名 from 表名;计算和
select 列名, 列名,列名+ifnull(列名,0) from 表名;计算和(null改为0)
select 列名, 列名,列名+ifnull(列名,0) as 别名 from 表名;计算和(null改为0)结果起别名
where子句后跟条件
between。。。and 在什么什么之间
select * from 表名 where 列名 like‘x%’或‘_x%’(第二个字)或‘___’(三个字)或‘%x%’(包含x)
select * from 表名 order by 排序字段1 排序方式1(按前后优先条件),排序字段2 排序方式2;排序查询
asc 升序,默认的
desc 降序
聚合函数:将一列作为一个整体进行纵向计算
count 计算个数
avg 计算平均值
select count(列名) from 表名;计算个数语法(自动排除null)
select count (ifnull(列名,0)) from 表名;
select from 表名 group by 分组字段;分组查询
创建数据表: CREATE TABLE表名(字段名字段的数据类型);
添加字段: alter table表名add column字段名varchar(1);
修改字段类型: alter table表名modify column字段名varchar(2);
修改字段名称: alter table表名change column字段名1字段名2 varchar(2)
删除字段: alter table表名drop column字段名; 
修改表名称: alter table表名rename to字段名;
查看数据表: show tables;
查看表结构: desc 表名;
删除数据表: drop table表名;
增
    SQL语法:
        INSERT INTO table_ name ( field1, field...fieldN ) VALUES ( value1, value...valueN );
    实例:
    向user表中插入数据: 
        insert into user values(2, '李四', 18);
    向user表的指定列中插入数据:
        insert into user(id,name) values(1,'张E');
删
    SQL语法:
        DROP TABLE table name;
    实例:
    全表数据删除
        DELETE FROM student;
    按条件删除数据
        DELETE FROM student WHERE id=2;
改
    SQL语法:
        UPDATE table name SET field1 =new-value1, field2=new-value2 [WHERE Clause]
    实例:
    不按条件,修改整个字段
        update user set name='张三';
    按条件修改,修改一个字段
        update user set name='李四'where id=2;
    修改多个字段
        update user set name='王五',age=40 where id=1;
查询
    基本查询
        SQL语法:
            SELECT column name,column name FROM table name
        实例:
        查询所有字段
            SELECT * FROM表名;
        查询指定的字段
            SELECT字段名1,字段名2 FROM表名;
        查询时指定别名(AS可以省略)
            SELECT字段名1 AS '编号1',字段名1 AS '编号2' FROM表名;
        查询去除重复记录
            SELECT DISTINCT字段名FROM表名;
    条件查询
        SQL语法:
            SELECT field1, field...fieldN FROM table name1, table name2...[WHERE condition1 [AND [OR]] condition2.... 

        1)逻辑条件: and(与) or (或)
            select * from user where id =1 and name='张三; (两个条件必须同时满足)
            select * from user where id=1 or name = '张三; (两个条件满足- -个即可)
        2)比较条件:><<>=.<==<>(betweenand)
            select * from user where age> 18;
            select * from user where age =18; 
            select * from user where age <>18;
            select * from user where age >= 18;
            select * from user where age between 18 and 20;
        3)模糊条件: like
            模糊替代符号: %:替代任意个字符; _:替代一个字符
            select * from user where name like '张_';
            select * from user where name like '李%';
    分页查询
        SQL语法:
            SELECT column name,column_name FROM table name [LIMIT N]
        实例:
            select * from user limit 2;
            select * from user limit 2,3;
    聚合查询
        SQL语法:
            SELECT max(column_name),min(column__name),avg(column_name),count(column_name) FROM table_name
        实例:
        Max(): 取最大值;
            select max(age) from user;
        min(): 取最小值;
            select min(age) from user;
        avg(): 平均函数;
            select avg(age) from user;
        count():统计表的记录数量
            select count(*) from user;
    分组查询
        SQL语法:
        SELECT column_name,function(column_name)
        FROM table_name
        WHERE column_name operator value
        GROUP BY column_name;
        实例:
        select age,count(*)from user group by age;
    排序查询
        SQL语法:
            SELECT field1, field...fieldN FROM table name1, table name2...
            ORDER BY field1 [ASC [DESC][默认ASC]], [field2..]_[ASC [DESC][默认ASC]]
        实例:
        asc:升序。数值从小到大,字母a-z
            select * from user order by id asc; (对id字段进行升序排列)
        desc:降序。数值从大到小,字母z-a
            select * from user order by id desc; (对id字段进行降序排列)
常用的数据库常量
    Select @@tmpdir查看临时目录
    Select @@datadir数据存放的位置
    Select @@basedir数据库服务所在位置
    Select @@version查看版本号
    Select @@hostname查看当前用户名
常用数据库函数
    CHAR(ASCII)--返回ASCII码对应的字符
    select char(97);
    ASCII(字符)一返回字符对应的ASCII码
    select char( 'a' );
    IF(逻辑表达式,返回值1,返回值2)一如果逻辑表达式的值为真,则返回值1,为假,则返回值2.
    select if(1=1,3,2);
    MID(要截取的字符串,起始位置,结束位置)一
    截取字符串
    select mid('admin',1,1);
    SUBSTR(要截取的字符串,起始位置,结束位置)一截取字符串
    select substr(admin',1,1);
    LENGTH(字符串)一-返回字符串长度
    select length('aaaa');
    left(pa1,pa2)--pa1是被截取的字符串,从左开始截取,pa2是截取的位数
        select lef("abcdefg',2); 
    right(pa1,pa2)--pa1是被截取的字符串,从右开始截取,pa2是截取的位数
        select right( abcdefg',2); 
    select user()--获取登陆用户名
    select version()--获取当前版本号
    select database()--获取当前数据库
    sleep()--休眠.
#随机生成密码
DB_PASSWORD=`cat /dev/urandom | tr -dc A-Za-z0-9 | head -c 24` \
  && echo -e "\033[31m 你的数据库密码是 $DB_PASSWORD \033[0m";
内连接
    SELECT A.sno,B.cno,B.cname FROM sc A,course B WHERE A.cno=B.cno;
自连接(必须起别名)
    SELECT A.sno FROM sc A,sc B WHERE A.sno=B.sno AND A.cno='c01' AND b.cno='c04';
外连接
    左外连接 右外连接 全外连接 
    左外连接
        SELECT A.*,B.* FROM student A LEFT JOIN sc B on A.sno=B.sno;
    右外连接     
       SELECT A.*,B.* FROM sc B RIGHT JOIN student A on A.sno=B.sno;

版权声明:
作者:江霁月
链接:https://www.jiangjiyue.com/maintenance/database/490.html
来源:江霁月的私人小屋
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录