2017 09-25 mysql的基本应用

作者: 楠人帮 | 来源:发表于2017-09-25 19:58 被阅读39次

    一.客户端工具

    **采用命令行交互式客户端程序:mysql

    (1)mysql选项及其用法:
    首先通过mysql_secure_installation命令提高数据库的安全 
    1设置数据库管理员root口令 
    2 禁止root远程登录 
    3 删除anonymous用户帐号 
    4 删除test数据库


    image.png
    image.png

    (2)此时通过mysql命令来登录数据库
    mysql -uroot(指定登录用户) -p123456(登录密码) -hhost(指定服务器主机)


    image.png
    (3)mysql用户账号由两部分组成:
    'USERNAME'@'HOST' HOST用于限制此用户可通过哪些远程主机连接mysql服务
    支持使用通配符:
    % 匹配任意长度的任意字符
    172.16.0.0/16 或 172.16.%.%
    _ 匹配任意单个字符
    image.png
    (4)mysql中的一些其他命令选项
    mysql > status(查看数据库信息) image.png
    mysql> select version();——查看版本号
    image.png
    注意:服务端命令:通过mysql协议发往服务器执行并取回结果 每个命令都必须命令结束符号;默认为分号 SELECT VERSION();

    二.sql语句

    (1)SQL语句构成
    Keyword组成clause  多条clause组成语句
    SELECT * SELECT子句 
    FROM products FROM子句 
    WHERE price>400 WHERE子句
    这是一组语句,由三个子句构成,SELECT,FROM和WHERE 都是关键字
    例:

    image.png
    (2)SQL语句分类 
    SQL语句:
    DDL: Data Defination Language——数据定义语言
    CREATE(创建), DROP(删除), ALTER(修改)
    DML: Data Manipulation Language ——数据操作语言
    INSERT(增加), DELETE(删除), UPDATE(修改)
    DCL:Data Control Language——数据控制语言
    GRANT(授权), REVOKE(取消授权)
    DQL:Data Query Language——数据查询语言
    SELECT
    (3)sql语言规范
    1 大部分时候数据库系统不区分大小写,但是建议用大写
    2 字符串敞亮区分大小写
    3 在该语句中可以单行或多行书写,但都必须以“;”结尾
    4 关键字不能跨多行写或简写
    例: image.png
    5 注释
    SQL标准:
    /注释内容/ 多行注释
    -- 注释内容 单行注释,注意有空格 
    MySQL注释: #

    三.数据库操作

    1创建数据库
    create database db_name(数据库名);


    image.png

    删除数据库
    drop database db_name;
    查看数据库列表
    mysql> show databases;
    2 创建表
    命令: create table +表的名字
    字段信息:
    col type1
    PRIMARY KEY(col1,...)
    INDEX(col1, ...)
    UNIQUE KEY(col1, ...)
    表选项:
    ENGINE [=] engine_name
    SHOW ENGINES;查看支持的engine类型
    ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT |COMPACT}
    获取帮助:
    mysql> HELP CREATE TABLE;
    3 表操作
    查看所有的引擎:SHOW ENGINES; 

    查看表:SHOW TABLES [FROM db_name];  image.png
    查看表结构:DESC [db_name.]tb_name;  image.png
    删除表:DROP TABLE [IF EXISTS] tb_name; 

    查看表创建命令:SHOW CREATE TABLE tbl_name; 
    查看表状态:SHOW TABLE STATUS LIKE 'tbl_name'\G ——换行查看,易读模式
    4 数量类型
    mysql支持多种列类型;
    (1)数值类型
    (2)日期/时间类型
    (3)字符串类型
    选择正确的数据类型原则
    (1)更小的通常更好,尽量使用可正确存储数据的最小数据类型 
    (2)简单就好,简单数据类型的操作通常需要更少的CPU周期 
    (3)尽量避免NULL,包含为NULL的列,对MySQL更难优化
    数据类型一:整型
    • 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可以为整型类型指定宽度,例如Int(11),对绝大多数应用 这是没有意义的:它不会限制值的合法范围,只是规定了MySQL 的一些交互工具(例如MySQL命令行客户端)用来显示字符的个 数。对于存储和计算来说,Int(1)和Int(20)是相同的
    数据类型二:浮点型
    • float(m,d) 单精度浮点型 8位精度(4字节) m总个数,d小数位
    • double(m,d) 双精度浮点型 16位精度(8字节) m总个数,d小 数位
    • 设一个字段定义为float(6,3),如果插入一个数123.45678,实 际数据库里存的是123.457,但总个数还以实际为准,即6位
    数据类型三:定点数
    • 在数据库中存放的是精确值,存为十进制
    • 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
    数据类型四:字符串
    • char(n) 固定长度,最多255个字符
    • varchar(n)可变长度,最多65535个字符
    • tinytext 可变长度,最多255个字符
    • text 可变长度,最多65535个字符
    • mediumtext 可变长度,最多2的24次方-1个字符
    • longtext 可变长度,最多2的32次方-1个字符
    • BINARY(M) 固定长度,可存二进制或字符,允许长度为0M字节,
    • VARBINARY(M) 可变长度,可存二进制或字符,允许长度 为0-M字节
    • 内建类型:ENUM枚举, SET集合
    char与varchar对比:
    • 1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将 空格去掉。所以char类型存储的字符串末尾不能有空格,varchar 不限于此。
    • 2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个 字节,varchar是存入的实际字符数+1个字节(n< n>255),所以 varchar(4),存入3个字符将占用4个字节。
    • 3.char类型的字符串检索速度要比varchar类型的快 
    varchar和text:
    • 1.varchar可指定n,text不能指定,内部存储varchar是存入的实 际字符数+1个字节(n< n>255),text是实际字符数+2个字节。
    • 2.text类型不能有默认值
    • 3.varchar可直接创建索引,text创建索引要指定前多少个字符。 varchar查询速度快于text
    5 修饰符:
    所有类型:
    • NULL 数据列可包含NULL值
    • NOT NULL 数据列不允许包含NULL值
    • DEFAULT默认值
    • PRIMARY KEY 主键
    • UNIQUE KEY 唯一键
    • CHARACTER SET name 指定一个字符集 
    数值型
    • AUTO_INCREMENT 自动递增,适用于整数类型
    • UNSIGNED 无符号

    例子

    image.png

    6 表操作
    (1)删除表——drop table +表名;
    例: drop table students;该表被删除
    (2)修改表——alter table +表名;
    alter table students add(增加字段),drop(删除字段)
    示例1:
    alter table students3 add phone varchar(20) not null after name;


    image.png

    示例2:
    alter table students3 add sex varchar(20) not null default 'm' after name;


    image.png
    示例3:
    alter table students3 drop sex varchar(20) not null default 'm' after name;——删除表中的信息
    示例4:修改字段名
    alter table studenst3 change sex gender varchar(20) not null default 'm' after name;
    image.png
    示例5:修改字段属性
    alter table students3 modify phone int (20) not null after age;
    image.png
    示例6:给字段增加索引,给字段增加唯一键

    alter table students3 add index(age);


    image.png
    ALTER TABLE students ADD UNIQUE KEY(name);
    image.png
    创建索引——create index +索引名 +表名(对哪个字段增加索引)
    例:
    create index ageindex studenst3(age);
    创建索引后通过show index from students3\G来查看索引
    删除索引——drop index ageindex students3(age);

    四.DML语句

    要重点——增(insert) ,删(delete), 改(update)
    1 insert
    语法: insert into students3(id,name,age,phone,gender)values (1,'zhang',18,167878,'m');

    image.png
    创建多个信息:
    insert into students3(id,name,age,phone,gender)values (4,'sun',22,149378,'f'),(5,'lu',23,1232142,'f');
    image.png
    select s.id ,e.name from students3 as s,emp1 as e where s.id=e.id and s.name rlike '.[no].';——只要包含no就匹配对应的名字
    创建一个新表:
    create table emp1(表之前不存在) select * from students3;
    image.png
    insert into emp1 select * from students3;——表事先存在,并且表的结构和students3相同
    清空表:
    (1) truncate table +表名;
    (2)delete from +表名;
    2 update:
    update emp1 set age=29 where name='li';——修改li的年龄
    image.png
    示例:
    update emp1 set age=21 ,gender='m' where id=5;
    image.png

    五. DQL语句

    OL:select
    用例子来说明:
    例1:
    select * from emp1 where age>=18 and age <= 25;——查找年龄在18到25之间的人


    image.png

    例2:
    select * from emp1 where age between 18 and 25;
    例3:
    select * from emp1 where age between 18 and 25 order by age desc——按年龄倒序排序


    image.png
    select * from emp1 where age between 18 and 25 order by age ——正序排序 image.png
    例4:
    select id as 职员,name 姓名 from emp;——设置别名
    例5:

    倒序排名年龄跳过第一个人,看后两个人


    image.png
    例6:
    like用法:
    %——任意长度
    _:——任意单个字符
    rlike:正则表达式
    is nul,is null
    in ——代表指定特定的人
    select * from emp1 where name like 'li';
    image.png
    select * from emp1 where name like 'l%';
    image.png
    正则表达方式:select * from emp1 where name relike 'l.*';
    image.png
    查询指定的人:select * from emp1 where name in ('wang','zhang');
    image.png

    别名关联两个表


    六.用户账号

    创建用户
    create user 'username'@'host';
    例: create userr 'root'@'192.168.136.%' identified by 'magedu';—创建root用户并设置密码为magedu
    2 删除用户
    drop user 'username'@'host'
    3 更改口令
    1)et password for 'user'@'host'=password('newpassword');
    2)pdate user set password=password('newpassowrd') where user='root';
    注意:上面修改表的命令不会马上生效,需执行FLUSH PRIVILEGES生效
    4 查看当前用户
    select user();
    例: select user ,host ,password from mysql.user;


    image.png

    七.授权

    1. 权限级别:管理权限、数据库、表、字段、存储例程
    2. 授权的命令:
      grant all on zhangdb.* to root@'192.168.136.%';——授予所有权利
      此时在另一主机就可以通过 mysql -uroot -p1234 -h192.168.136.122进入数据库执行命令


      image.png

      赋予部分权限
      grant select,update,delete on zhangdb.* to root@'192.168.136.%';
      3 撤销权限
      revoke all on zhangdb.* from root@'192.168.136.%';
      注意:不论是授予权限还是撤销权限,都要执行FLUSH PRIVILEGES命令才能生效

    相关文章

      网友评论

        本文标题:2017 09-25 mysql的基本应用

        本文链接:https://www.haomeiwen.com/subject/iixdextx.html