MySQL学习笔记

第一章 数据库的建立
1、mysql>PROMPT 标识符名        //修改标识符
常用:mysql>PROMPT \[email protected]\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;//将表更名    

第四章 操作记录
创建一个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);
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中

第五章 子查询与连接
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 DATA_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 STATUS\G 显示数据库中的函数信息

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; //@不可少

第十章 存储引擎
1、MyISAM 存储限制达256TB,支持索引、表级锁定、数据压缩

2、InnoDB 存储限制为64TB,支持事务和索引,行锁定
时间: 2024-10-21 05:57:51

MySQL学习笔记的相关文章

MySQL学习笔记-基础入门

MySQL学习笔记

MySql学习笔记(一)之DQL常用查询

MySql学习笔记(一)之DQL常用查询 前言:mysql是中小型的数据库软件,SQL语言分为DDL,DCL,DML,DQL四种,在这里重点讲解DQL的单表查询. 正文:在学习mysql单表查询之前,我们先做一些准备工作. 需要安装的软件如下: 1.mysql,版本可以选择5.1或者5.5,安装过程可以参考博客:http://www.cnblogs.com/ixan/p/7341637.html 2.mysql图形化管理软件:Navicate,sqlyog(二选一,推荐使用sqlyog). 本文

MySQL学习笔记-自定义函数

MySQL学习笔记-自定义函数 1.自定义函数简介 自定义函数:用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同 自定义函数的两个必要条件:(1)参数  (2)返回值 自定义函数: 创建自定义函数 CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body 关于函数体: 1.函数体可以由合法的SQL语句构成: 2.函数体可以是

Mysql学习笔记(三)对表数据的增删改查。

写在前面:(一些牢骚,可以直接跳到分割线后) 太过敏感的人不会快乐,不幸的是我正是这种性格的人. 从培训机构毕业后,迫于经济方面的压力,和当时的班里的一个同学住在了一起,我们在一个公司上班.谁知道这都是不开心生活的源头,从每天早晨开始心情就很糟糕.他是个脾气很慢的人,我是个急脾气,特别是在早上上班的时候.由此种种吧,实在是不胜枚举.算了,还是不说了,太痛苦了,我不太喜欢说别人的坏话.我是学心理学的,已经用各种方法去安慰自己,但是都不太奏效. 回想以往和朋友的交往中,我虽然不算十分合群的人,但绝对

mysql 学习笔记(一)

查询:show databases;show status;show tables; desc  table-name: 更改root密码:方法一:mysqladmin -uroot -poldpassword  password newpassword方法二:mysql -uroot -puse mysqlupdate user set password=password("newpasswd") where user="root";select host,use

MySQL学习笔记-数据类型与操作数据表

MySQL学习笔记-数据类型与操作数据表 数据类型:  1.字符型  2.整型  3.浮点型  4.日期时间型 数据表操作:  1.插入记录  2.查找记录 记录操作:  1.创建数据表  2.约束的使用 1.数据类型 [1]整型: 数据类型 存储范围 字节 TINYINT 有符号型:-128~127(-2^7~2^7 -1),无符号型0~255(0~2^8 -1) 1 SMALLINT 有符号型:-2^15~2^15 -1,无符号型0~2^16 -1 2 MEDIUMINT 有符号型:-2^2

mysql学习笔记 第五天

使用分区数据表: 分区数据表和merge数据表具有相似的作用,但是分区数据表确确实实是一个数据表 ,不像merge是列出数据表的逻辑关系,并且分区数据表可以包括像myisam以外的 的数据表.创建分区数据表: create table 里给出数据列和索引,然后用partition by 定义一个用来把数据行分配 到各个分区的分区函数:[将数据表分成四个区] create table log_partition( dt datetime not null, info varchar(100) no

mysql学习笔记 第四天

mysql引擎: archive(档案)[数据插入以后不能被修改,只读] blackhole[这种写操作是删除数据,读操作是返回空白记录] CSV[在储存数据时以逗号作为数据项之间的分隔符] example[示例(存根)储存引擎] Falcon[用来进行处理事务的储存类型] federated[用来访问远程数据表的储存引擎] InnoDB[具备外键支持功能的事务处理引擎] memory[内存里的数据表] merge[用来管理多个MyISAM数据表构成的数据表集合(merg-myisam)] my

mysql 学习笔记 第二天

插入表格数据: Insert into table_name set columns_1=value1,columns_2=value2,对于没有赋值的列,将会取默认值,并且这个方法只能一次插入一个数据 利用文本方式插入数据: Load data local infile‘径’into table table_name: Select 的通用形式: Select columns from table or tables where conditions;from一般不能少的,但是当查询的时候没有

MySQL学习笔记(一)

命令行中的取消操作 如果你决定不想执行正在输入过程中的一个命令,输入\c取消它: mysql> SELECT -> USER() -> \c mysql> 这里也要注意提示符,在你输入\c以后,它切换回到mysql>,提供反馈以表明mysql准备接受一个新命令. 使用SHOW语句找出服务器上当前存在什么数据库: mysql> SHOW DATABASES; +----------+ | Database | +----------+ | mysql | | test |