zoukankan      html  css  js  c++  java
  • MSQL基础知识

    MSQL基础知识

    一、DDL(data definition language)数据库定义语言:

    建表

    CREATE TABLE table_name(

    id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,

    score TINYINT UNSIGNED NOT NULL DEFAULT 0

    )ENGINE=InnoDB,DEFAULT charset=utf8,AUTO_INCREMENT=7;

    删表

    DROP TABLE IF EXISTS tb_name;

    显示表

    SHOW TABLES;

    查看表结构

    DESCRIBE tb_name;

    表重命名

    RENAME TABLE name_old TO name_new;

    修改表

    ALTER TABLE tb_name ADD COLUMN address varchar(80) NOT NULL;

    ALTER TABLE tb_name DROP address;

    ALTER TABLE tb_name CHANGE score score SMALLINT(4) NOT NULL;

    二、DML(data manipulation language)数据操纵语言:

    选择数据

    select  column1,column2  from tablename  where   column1 <> column2    group by ...    hiving .....;

    插入语句

    INSERT INTO tb_name(id,name,score)VALUES(NULL,'张三',140),(NULL,'张四',178),(NULL,'张五',134);

    数据更新

    UPDATE tb_name SET score=189 WHERE id=2;

    删除数据

    DELETE FROM tb_name WHERE id=3;

    三、DCL(Data Control Language)数据库控制语言:

    创建用户

    CREATE USER name IDENTIFIED BY 'ssapdrow';

    更改密码

    SET PASSWORD FOR name=PASSWORD('fdddfd');

    查看权限

    SHOW GRANTS FOR name;    //查看name用户权限

    授权

    grant select, insert, update, delete on testdb.* to name;       //给name用户下所有testdb数据库所有数据授权select、insert, update, delete等;

    去除权限

    REVOKE SELECT ON db_name.* TO name;    //GRANT的反操作,去除权限;

    四、数据类型

    数值型数据类型

    类型说明存储需求(取值范围)
    tinyint 很小整数 1字节([0~255]、[-128~127]); 255=2^8-1;127=2^7-1
    smallint 小整数 2字节(0~65535、-32768~32767) ;65535=2^16-1
    mediumint 中等 3字节(0~16777215) ;16777215=2^24-1
    int(integer) 普通 4字节(0~4294967295) ;4294967295=2^32-1
    bigint 大整数 8字节(0~18446744073709551615);18446744073709551615=2^64-1
    float 单精度浮点数 4字节
    double 双精度浮点数 8字节
    decimal 压缩的“严格”定点数 M+2字节

    说明:语句decimal(5,2)规定了存储的值将不会超过5位数字,开且小数点后面有2位数字。

    字符类型

    类型说明存储需求(取值范围)
    char(n) 字符数小于n,则以空格补于其后 固定长度,最多255个字符
    varchar(n) varchar是存入的实际字符数+1个字节 固定长度,最多65535个字符
    tinytext   可变长度,最多255个字符
    text   可变长度,最多65535个字符
    mediumtext   可变长度,最多2的24次方-1个字符
    longtext   可变长度,最多2的32次方-1个字符

    日期时间类型

    类型说明存储需求(取值范围)
    date 日期 '2008-12-2'  
    time 时间 '12:25:36'  
    datetime 日期时间 '2008-12-2 22:06:44'   
    timestamp  自动存储记录修改时间  

     五、触发器

     触发器语句

    CREATE TRIGGER 触发器名 BEFORE|AFTER 触发事件 ON 表名 FOR EACH ROW  
    BEGIN 执行语句列表 END
    说明:其中触发事件为INSERT、DELETE或者UPDATE
    实例
    DELIMITER || //将结尾改为 ||
    CREATE TRIGGER demo BEFORE DELETE
    ON users FOR EACH ROW
    BEGIN
    INSERT INTO logs VALUES(NOW());
    INSERT INTO logs VALUES(NOW());
    END
    ||
    DELIMITER ;
    六、存储过程与游标
    创建存储过程
    CREATE PROCEDURE StatisticStore(out s1 int,in s2 int) 
    BEGIN 
    END
    调用存储过程
    call StatisticStore(s1,s2);
    创建游标
    declare cur cursor for select name,count from store where name = 'iphone';  
    // cur为游标变量
    指定游标结束时返回值
    declare 
    continue HANDLER for not found set done = true; 
    循环读取游标中的数值
    open cur;
    while not done do
    fetch cur into var1,var2;
    end while;
    close cur;
    实例
    1. delimiter //  
    2. drop procedure if exists StatisticStore;  
    3. CREATE PROCEDURE StatisticStore()  
    4. BEGIN  
    5.     --创建接收游标数据的变量  
    6.     declare c int;  
    7.     declare n varchar(20);  
    8.     --创建总数变量  
    9.     declare total int default 0;  
    10.     --创建结束标志变量  
    11.     declare done int default false;  
    12.     --创建游标  
    13.     declare cur cursor for select name,count from store where name = 'iphone';  
    14.     --指定游标循环结束时的返回值  
    15.     declare continue HANDLER for not found set done = true;  
    16.     --设置初始值  
    17.     set total = 0;  
    18.     --打开游标  
    19.     open cur;  
    20.     --开始循环游标里的数据  
    21.     read_loop:loop  
    22.     --根据游标当前指向的一条数据  
    23.     fetch cur into n,c;  
    24.     --判断游标的循环是否结束  
    25.     if done then  
    26.         leave read_loop;    --跳出游标循环  
    27.     end if;  
    28.     --获取一条数据时,将count值进行累加操作,这里可以做任意你想做的操作,  
    29.     set total = total + c;  
    30.     --结束游标循环  
    31.     end loop;  
    32.     --关闭游标  
    33.     close cur;  
    34.     --输出结果  
    35.     select total;  
    36. END;  
    37. --调用存储过程  
    38. call StatisticStore();  
    七、视图
    视图是一种虚拟表,不改变表结构就可以对表中数据进行计算,对数据提供安全性。
    创建
    create view v1 as select from where ;
    优点:
    1.简化用户操作
    2.能以不同的角度观察同一个数据库
    3.对重构数据库提供了逻辑独立性:利用视图将需要的数据合并或者筛选,但是不影响原表的数据和结构;
    4.对机密数据提供安全保护: 可以建立不同的视图对用不同的用户,以达到安全的目的。
    八、函数
    字符串函数
    CHAR_LENGTH(str) //返回字符串长度
    CONCAT(s1,s2,...) //字符串拼接
    CONCAT_WS(x,s1,s2,...) //字符串拼接中间用X间隔
    LEFT(s,n)、RIGHT(s,n) //返回字符串s最左边/最右边n个字符串
    LTRIM(s)、RTRIM(s) //删除字符串s左边(右边)的空格
    TRIM(s1 FROM s) //删除字符串s左边和右边S1的字符串,没有S1删除空格
    REPEAT(s,n) //返回由一个重复字符串s重复n次的字符串
    REPLACE(s,s1,s2) //用字符串s2代替字符串s中s1的字符串的值
    STRCMP(s1,s2) //s1与s2相同返回0,大于返回1,小于返回-1
    SUBSTRING(s,n,len) //返回s中位置n开始的长度为len的字符串
    LOCATE(str1,str)、POSITION(str1 IN str)、INSTR(str,str1) //返回字符床str1在str中开始的位置
    REVERSE(s) //反转字符串
    日期函数
    CURDATE() //返回现在"YYYY-MM-DD"
    CURRENT_DATE() //返回日期"YYYYMMDD"
    DATE_ADD('2010-12-31 23:59:59', INTERVAL 1 SECOND) //表示的就是把第一个时间加1秒
    DATE_SUB(date,INTERVAL expr type) //表示的就是把第一个时间加1秒
    CURRENT_TIMESTAMP()、LOCALTIME()、NOW()、SYSDATE() //返回当前日期和时间值,格式为"YYYY_MM-DD HH:MM:SS"或"YYYYMMDDHHMMSS"
    UNIX_TIMESTAMP(date) //返回一个格林尼治标准时间1970-01-01 00:00:00到现在的秒

    mysql常用语句:https://blog.csdn.net/sinat_35861727/article/details/78866904
    mysql正则表达式:https://www.runoob.com/mysql/mysql-regexp.html
    mysql触发器:https://www.cnblogs.com/zzlback/p/12660560.html
    mysql面试题:https://www.cnblogs.com/diffrent/p/8854995.html 或者 https://blog.csdn.net/hwq1987/article/details/6670300
    sql随机数:https://www.cnblogs.com/wuming/archive/2010/02/24/1672906.html
    mysql数据的导入及导出:https://www.runoob.com/mysql/mysql-database-import.html
    mysql操作大全:https://www.runoob.com/mysql/mysql-sql-injection.html
    mysql中的函数:https://www.cnblogs.com/poloyy/archive/2004/01/13/12890763.html
     

       

  • 相关阅读:
    委托与事件的关系
    分布式存储ceph——(1)部署ceph
    neutron二
    openstack第五章:cinder
    openstack第六章:dashboard
    openstack第一章:keystone
    openstack第二章:glance
    openstack第三章:nova
    openstack第四章:neutron— 网络服务
    openstack安装
  • 原文地址:https://www.cnblogs.com/moss-yang/p/10846894.html
Copyright © 2011-2022 走看看