zoukankan      html  css  js  c++  java
  • MySQL学习笔记

    第一章 数据库的建立
    1、mysql>PROMPT 标识符名        //修改标识符
    常用:mysql>PROMPT u@h d
    u:当前用户  h:服务器名称  d:当前打开的数据库
    MySQL语法规范:
    ·关键字与函数全部大写
    ·数据库名、表名全部小写
    ·SQL语句必须以‘;’结尾
    
    2、mysql>USE x;        //使用x数据库
    
    3、mysql>CREATE DATABASE t1 CHARACTER SET = utf8;//创建数据库t1,编码为utf8
    
    4、mysql>SHOW DATABASES;        //显示所有数据库
    
    5、mysql>SHOW CREATE DATABASE t1;//显示数据库t1的属性
    
    6、mysql>ALTER DATABASE t1 CHARACTER SET = utf8;//将数据库t1的编码方式改为utf8
    
    7、mysql>DROP DATABASE t1;//将数据库t1删除
    
    8、mysql>SHOW WARNINGS;//显示警告
    
    第二章 关系表的建立
    1、mysql>SELECT DATABASE();//查询当前所打开的数据库
    
    2、mysql>SHOW TABLES;//显示当前所打开的数据库中的表格
    
    3、mysql>SHOW TABLES FROM t1;//显示t1数据库中的表
    
    4、mysql>SHOW COLUMNS FROM tb1;//显示关系表t1的属性,t1必须在当前所打开的数据库中
    
    5、mysql>CREATE TABLE tb1(
           ->username VARCHAR(20),
           ->userage TINYINT UNSIGNED,
           ->salary FLOAT UNSIGNED);//创建一个关系表格
    
    6、mysql>INSERT tb1 VALUES('Tom',25,7500,50);//在tb1中插入一个实例
    
    7、mysql>INSERT tb1(username,salary) VALUES('John',6900.00);//实例部分赋值
    
    8、mysql>SELECT * FROM tb1; //完整显示tb1;
    
    9、mysql>SELECT *
           ->FROM tb1
           ->WHERE username = 'Tom';//显示表tb1中Tom的全部信息
    
    10、id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY 
        //AUTO_INCREMENT 插入实例时id增1,且必须为PRIMARY KEY
    
    11、sex enum('','','保密') DEFAULT '保密' //若sex为赋值,则默认为'保密'
    
    12、一个较为完整操作的实例:
        mysql>CREATE TABLE tb1(
            ->id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
            ->name VARCHAR(20) UNIQUE NOT NULL,
            ->class SMALLINT UNSIGNED DEFAULT '9011',
            ->sex enum('f','m','s') DEFAULT 's');
    
    13、mysql>SHOW CREATE TABLE tb1; //显示关系表的属性
    
    14、mysql>DROP TABLE tb1;//将表tb1删除
    
    第三章 约束与修改
    1、参照约束方式 
    ①.CASCADE //父表中删除某行时子表相参照的值的行也删除 
    ②.SET NULL//父表中删除某行时子表相参照的列的值设为NULL
    注意:参照属性与被参照属性的结构必须相同
    实例:
    mysql>CREATE TABLE provinces(
        ->pname VARCHAR(30) UNIQUE NOT NULL,
        ->pid SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY);
    mysql>CREATE TABLE client(
        ->cname VARCHAR(30) UNIQUE NOT NULL,
        ->cid SMALLINT UNSIGNED,
        ->FOREIGN KEY (cid) REFERENCES provinces(pid) ON DELETE CASCADE);
    
    2、mysql>ALTER TABLE tb1 ADD age SMALLINT UNSIGNED;//在数据表中加一个新属性
    
    3、mysql>ALTER TABLE tb1 ADD class SMALLINT AFTER age;//在age插入一个属性
        将AFTER age改为FIRST则在表的最前面插入一属性
    
    4、mysql>ALTER TABLE tb1 ADD(
           ->major VARCHAR(32) NOT NOLL,
           ->score FLOAT);//插入多列,位置只能位于最后
    
    5、mysql>ALTER TABLE tb1 DROP score,DROP major;//删除多列
    
    6、mysql>ALTER TABLE tb1 ADD PRIMARY KEY(id);//添加主键约束
       mysql>ALTER TABLE tb1 DROP PRIMARY KEY;//删除主键约束   
    
    7、mysql>ALTER TABLE tb1 ADD UNIQUE(name);//添加唯一约束
    
    8、mysql>ALTER TABLE tb1 ADD FOREIGN KEY(id) REFERENCES provinces(pid);
        //添加参照约束
    
    9、mysql>ALTER TABLE tb1 ALTER num SET DEFAULT 15;//添加默认约束 
    
    10、mysql>ALTER TABLE tb1 MODIFY id INT;
        //将id原来SMALLINT的结构改为INT, 修改结构时必须将其他定义了的结构也列上
        //例如:id若定义了NOT NULL,则上语句改为:
          mysql>ALTER TABLE tb1 MODIFY id INT NOT NULL;
    
    11、mysql>ALTER TABLE tb1 CHANGE id i_d INT;//将id的名称改变,其定义了的
        约束必须一个不少的加上去
    
    12、mysql>ALTER TABLE tb1 RENAME tb2;//将表更名    
    
    13、mysql>CREATE TABLE user(
            ->ID INT,
        ->name CHAR(10),
            ->CONSTRAINT C1 PRIMARY KEY(ID,name));//将属性组设为主键
    第四章 操作记录
    创建一个user数据表
       mysql>CREATE TABLE user(
           -> id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
           -> name VARCHAR(20) NOT NULL,
           -> password VARCHAR(32) NOT NULL,
           -> age TINYINT DEFAULT 10,
           -> sex BOOLEAN);
        //alter table user auto_increment = 10; 自增号码将从10开始
    1、插入记录
      ①mysql>INSERT user VALUES(,,,) //若user不跟属性,则必须所有属性均赋值
        // DEFAULT属性可用DEFAULT 代替,AUTO_INCREMENT 属性可用NULL,DEFAULT代替
      ②mysql>INSERT user SET 属性名=属性值,,,,//只能一次插入一条记录    
    2、插入多条记录
       mysql>INSERT user VALUES(,,,),(,,,)//插入多条记录
    
    3、更新记录
       mysql>UPDATE user SET age=20;//将表中所有记录的age属性均设为10
    
    4、同时更新多条记录
       mysql>UPDATE user SET age = age - id, sex = 0;//将所有记录的年龄减去其id,
        且将sex设为0
    
    5、mysql>UPDATE user SET sex = 1 WHERE id % 2 = 0;//将id为偶数的记录sex设为0
    
    6、删除记录
       mysql>DELETE FROM user WHERE id = 5;//将id号为 5 的记录删除
    
    7、查找记录
       mysql>SELECT id AS ID FROM user;//将结果集中属性id改名为ID
    
    8、mysql>SELECT name, id FROM user;//结果集中第一列显示name, 第二列显示id;
    
    9、mysql>SELECT * FROM user ORDER BY age DESC,id ASC;
        //显示表中的全部结果以age降序,若age相同则以id升序排列;
    
    10、mysql>SELECT * FROM user LIMIT 2,2;
        //从上到下,从0开始数,返回以第2个开始的2条记录
    
    11、mysql>CREATE TABLE tb(
            ->id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
            ->name VARCHAR(20));
        mysql>INSERT tb(name) SELECT name FROM user WHERE id > 2;
        //将user中id>2的记录插入tb中
    
    12、mysql>CREATE TABLE date_test(
        ->day_ DATE,
        ->time_ DATETIME);
        mysql>INSERT date_test VALUES('2013-12-3','2013-12-3 11:30:30');
              //DATE 及 DATETIME 类型的插入方式
    13、mysql>UPDATE tb1,tb2 SET tb1.score = tb2.score WHERE tb1.ID=tb2.ID;
        //用tb2的数据对tb1进行更新
    
    第五章 子查询与连接
    1、mysql>CREATE TABLE class(
           ->ID SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
           ->monitor VARCHAR(32) NOT NULL UNIQUE
           ->);
       mysql>CREATE TABLE student(
           ->classNum SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
           ->name VARCHAR(32) NOT NULL,
           ->age SMALLITNT UNSIGNED DEFAULT 20
           ->);
       mysql>SELECT monitor,name,age
           ->FROM class INNER JOIN student //INNER JOIN内部连接、LEFT JOIN左连接、RIGHT JOIN右连接
           ->ON ID = classNum;
    
    第六章 字符串函数
    1、字符串连接函数
       ①CONCAT
         mysql>SELECT CONCAT('imooc','-','MySQL');将'imooc''-''MySQL'连接
         mysql>SELECT CONCAT(first_name,last_name) AS FULLNAME FROM Name;
       ②CONCAT_WS('分隔符''字符串','',,,);
         mysql>SELECT CONCAT_WS('|','A','B','C');
    2、格式转换函数,将实数转化为字符串
         mysql>SELECT FORMAT(实数,保留小数点位数);
         例如 mysql>SELECT FORMAT(212003.89,1) 结果为 212,003.9 //千分位表示法
    3、字符串大小写转换函数
         mysql>SELECT LOWER('MySQL'); //结果为 mysql
         mysql>SELECT UPPER('Mysql'); //结果为 mysql
    4、取头尾函数
         mysql>SELECT LEFT('MySQL',2);//结果为 My
         mysql>SELECT RIGHT('MySQL',2);//结果为 QL
    5、求字符串长度
         mysql>SELECT LENGTH('MySQL'); //结果为5
    6、去前导、后续函数
         mysql>SELECT TRIM(LEADING ' ' FROM '  MySQL  '); //去前导' ',结果为'MySQL  ';
         mysql>SELECT TRIM(TRAILING ' ' FROM '  MySQL  '); //去后续' ',结果为'  MySQL';
         mysql>SELECT TRIM(BOTH ' ' FROM  '  MySQL  ');//两者均去,结果为'MySQL'
    7、字符串替代函数
         mysql>SELECT REPLACE('??MySQL???','?','*');//将字符串中的?改为 *
    8、取子串函数
         mysql>SELECT SUBSTRING('MySQL',1,2);//从第1位往后取2个,结果为My
    9、字符串比较函数 '%'代表任意个字符, '_'代表任意一个字符
         mysql>SELECT last_name FROM Name WHERE last_name LIKE 'L%';
        //查找以'L'开头的last_name
         mysql>SELECT last_name FROM Name WHERE last_name LIKE '%1%%' ESCAPE '1';
            //查找含有'%'的last_name
    
    第七章 数值函数
    1、CEIL 向上取正
       mysql>SELECT CEIL(3.01);//结果为 4;
    
    2、FLOOR 向下取整
       mysql>SELECT FLOOR(3.99);//结果为 3;
    
    3、DIV 整数取整
       mysql>SELECT 3 DIV 4; //结果为 0;3/4 为 0.75;
    
    4、MOD 取余数 等价于 %
       mysql>SELECT 5 MOD 2;//小数亦可
    
    5、POWER 指幂函数
       mysql>SELECT POWER(2,3);//结果为8
    
    6、ROUND 四舍五入函数
       mysql>SELECT ROUND(3.56,1);//保留小数点后1位,结果为3.6
    
    7、TRUNCATE 非四舍五入
       mysql>SELECT TRUNCATE(125.89,1)//保留小数点后1位,结果为125.8,不做四舍五入
    
    第八章 日期时间函数
    1、SELECT NOW(); 显示当前日期和时间
    
    2、SELECT CURDATE(); 显示当前日期
    
    3、SELECT CURTIME(); 显示当前时间
    
    4、SELECT DATE_ADD('2014-3-12',INTERVAL 365 DAY); 
        //得到2014-3-12加上365天的结果 DAY 可以换为 YEAR,WEEK,MONTH
            //若将365改为负数则为减去
    
    5、SELECT DATEDIFF('2012-3-12','2011-3-12');
            //求2012-3-12 与 2011-3-12 相差的天数
    
    6、SELECT DATE_FORMAT('2012-3-12','%m/%d/%Y');//结果为03/12/2012; 
        //%m,%d,%Y位置可以互换
    
    第八章 密码函数
    1、SELECT MD5('student'); //给字符串'student'加密
    
    2、修改登录密码
       mysql>SET PASSWARD = PASSWARD('%新密码%');
    
    第九章 自定义函数
    1、创建实例 求两个数的平均值
       mysql>CREATE FUNCTION f1(num1 INT, num2 INT)//参数
           ->RETURNS FLOAT    //返回值类型
           ->RETURN (num1+num2)/2;
    
    2、调用函数
       mysql>SELECT f1(12,21);
    
    3、mysql>DELIMITER % //将%替代';'作为结束语句
    
    4、函数体包含多语句
       mysql>CREATE FUNCTION f1(username VARCHAR(32))
           ->RETURNS INT
           ->BEGIN  符合结构必须包含在BEGIN...END 中
           ->INSERT user VALUES(username);
           ->RETURN LAST_INSERT_ID(); 返回最后插入记录的ID
           ->END//
    
    5、mysql>DROP FUNCTION f1;//将函数f1删除
    
    6、mysql>SHOW FUNCTION STATUSG 显示数据库中的函数信息
    
    7、每个函数最多有一个返回值
    
    第九章 存储过程
    1、具体示例
       mysql>DELIMITER %  第一步
       mysql>CREATE PROCEDURE removeuser(IN id INT UNSIGNED)
           ->BEGIN 
           ->DELETE FROM user WHERE user.ID = id;
           ->END%
       mysql>CALL removeuser(3); //将id为3的记录删除 CALL调用过程体
    
    2、mysql>DROP PROCEDURE removeuser; //将过程体删除
    
    3、存储体可带出多个返回值
       mysql>DELIMITER %
       mysql>CREATE PROCEDURE removeuser(IN age INT,OUT des INT,OUT res INT)//OUT 定义的变量将返回值带出
           ->BEGIN 
           ->DELETE FROM users WHERE users.age = age;
           ->SELECT ROW_COUNT() INTO des;  //ROW_COUNT 返回由于上句操作,变动的记录个数
           ->SELECT COUNT(*) FROM users INTO res;
           ->EDN//
       mysql>DELIMITER ;
       mysql>CALL removeuser(21,@des,@res); //@不可少
       mysql>SELECT @des,@res; //@不可少
    
    4、实例 
      用存储过程访问表中前 几个 记录
      DELIMITER %
      CREATE PROCEDURE tt(p INT UNSIGNED)
      BEGIN
      DECLARE n INT DEFAULT 0;
      DECLARE i INT DEFAULT 0;
      SELECT COUNT(*) INTO n FROM 销售主表;
      SET i = n DIV p;
      SELECT * FROM 销售主表 ORDER BY 订单金额 DESC LIMIT 0,i;
      END%
      CALL tt(2)%//查询前50%的记录
    5、while语句范例
      DELIMITER %
      CREATE PROCEDURE tt()
      BEGIN
      DECLARE x INT DEFAULT 0;
      WHILE x <= 5 DO
      SELECT x;
      SET x = x + 1;
      END WHILE;
      END%
    6、if语句范例
      DELIMITER %
      CREATE PROCEDURE tt(score FLOAT)
      BEGIN 
      IF score > 90 THEN SELECT 'A' AS class;
      ELSEIF score <= 90 AND score >= 60 THEN SELECT 'B' AS class;//注意else与if之间无' '
      ELSE SELECT 'C' AS class;
      END IF;
      END%
    第十章 存储引擎
    1、MyISAM 存储限制达256TB,支持索引、表级锁定、数据压缩
    
    2、InnoDB 存储限制为64TB,支持事务和索引,行锁定
  • 相关阅读:
    MySQL存储树形数据优化技笔记
    收集18个高大上的浏览器小技巧
    收集18个高大上的浏览器小技巧
    盘点15个不起眼但非常强大的 Vim 命令
    盘点15个不起眼但非常强大的 Vim 命令
    为什么开发者应该摒弃敏捷?(转)
    为什么开发者应该摒弃敏捷?(转)
    MySQL 中事务、事务隔离级别详解
    pandas数据对齐
    Bokeh绘图
  • 原文地址:https://www.cnblogs.com/program-ccc/p/4868315.html
Copyright © 2011-2022 走看看