mysql - 学习笔记


数据类型:

TINYINT - 小整数值 (-128,127) 1 Bytes
SMALLINT - 大整数值 (-32 768,32 767) 2 Bytes
MEDIUMINT - 大整数值 (-8 388 608,8 388 607) 3 Bytes
NT或INTEGER - 大整数值 (-2 147 483 648,2 147 483 647) 4 Bytes
BIGINT - 极大整数值
FLOAT - 单精度/浮点数值
DOUBLE - 双精度/浮点数值
DECIMAL - 小数值
DATE - 日期值
TIME - 时间值或持续时间
YEAR - 年份值
DATETIME - 混合日期和时间值
TIMESTAMP - 混合日期和时间值,时间戳
CHAR - 定长字符串
VARCHAR - 变长字符串
TINYBLOB - 不超过 255 个字符的二进制字符串
TINYTEXT - 短文本字符串
BLOB - 二进制形式的长文本数据
TEXT - 长文本数据
MEDIUMBLOB - 二进制形式的中等长度文本数据
MEDIUMTEXT - 中等长度文本数据
LONGBLOB - 二进制形式的极大文本数据
LONGTEXT - 极大文本数据

关键字:

IS NULL: 当列的值是 NULL,此运算符返回 true
IS NOT NULL: 当列的值不为 NULL, 运算符返回 true

操作符:

= : 等号,检测两个值是否相等,如果相等返回true
<>, != :不等于,检测两个值是否相等,如果不相等返回true
‘>’ :大于号,检测左边的值是否大于右边的值, 如果左边的值大于右边的值返回true
< : 小于号,检测左边的值是否小于右边的值, 如果左边的值小于右边的值返回true
‘>=’ :大于等于号,检测左边的值是否大于或等于右边的值, 如果左边的值大于或等于右边的值返回true
<= :小于等于号,检测左边的值是否小于或等于右边的值, 如果左边的值小于或等于右边的值返回true
<=> :比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true


1.登录 - mysql -u root -p

u : 登录的用户名;
-p : 告诉服务器将会使用一个密码来登录, 如果所要登录的用户名密码为空, 可以忽略此选项。
-h : 指定客户端所要登录的 MySQL 主机名, 登录本机(localhost 或 127.0.0.1)该参数可以省略;

2.创建数据库

create database 数据库名;

3.删除数据库

drop database 数据库名;

4.选择数据库

use 数据库名;

5.创建数据表

 CREATE TABLE table_name (column_name column_type)

table_name : 表名
column_name : 列名
column_type : 列的类型
创建临时表:CREATE TEMPORARY TABLE runoob_tbl
删除临时表:DROP TABLE SalesSummary;(即便不主动删除,关闭连接时也会自动销毁)
例如:

CREATE TABLE IF NOT EXISTS `runoob_tbl`(
   `runoob_id` INT UNSIGNED AUTO_INCREMENT,
   `runoob_title` VARCHAR(100) NOT NULL,
   `runoob_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO runoob_tbl 
(runoob_title, runoob_author, submission_date)
VALUES
("学习 PHP", "菜鸟教程", NOW());

6.删除数据表:

 DROP TABLE table_name; 

6.1复制表:

获取数据表的完整结构:SHOW CREATE TABLE runoob_tbl \G;
创建新的克隆表 clone_tbl:CREATE TABLE clone_tbl
拷贝数据表的数据你可以使用 INSERT INTO… SELECT 语句来实现
例如:

INSERT INTO clone_tbl (runoob_id,
->                     runoob_title,
->                     runoob_author,
->                     submission_date)
-> SELECT runoob_id,runoob_title,
->        runoob_author,submission_date
-> FROM runoob_tbl;

7.插入数据:

 INSERT INTO runoob_tbl  

例:

INSERT INTO runoob_tbl 
(runoob_title, runoob_author, submission_date)
VALUES
("学习 PHP", "菜鸟教程", NOW());

8.查询数据:

SELECT column_name,column_name FROM table_name
  • 读取表里所有的数据:select * from runoob_tbl;

9.子句:WHERE 、 AND 、 OR

  • 可以在 WHERE 子句中指定任何条件
  • 可以使用 AND 或者 OR 指定一个或多个条件
  • WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令
  • WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据
    例如:SELECT * from runoob_tbl WHERE runoob_author='菜鸟教程' or runoob_author='菜鸟教程2';

10.更新数据库(修改数据表中的数据,且修改的字段不能为空):UPDATE

  • 可以同时更新一个或多个字段
  • 可以在一个单独表中同时更新数据
    例如:UPDATE runoob_tbl SET runoob_title='学习 C++' WHERE runoob_id=3;

11.删除数据表中的数据:DELETE

  • 如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。
  • 可以在 WHERE 子句中指定任何条件
  • 可以在单个表中一次性删除记录
    例如:DELETE FROM runoob_tbl WHERE runoob_id=3;

12.字句:LIKE

  • 可以使用LIKE子句代替等号 =
  • LIKE 通常与 % 一同使用,类似于一个元字符的搜索
  • 可以在 DELETE 或 UPDATE 命令中使用 WHERE…LIKE 子句来指定条件
    例如:SELECT * from runoob_tbl WHERE runoob_author LIKE '%COM';
    ±----------±--------------±--------------±----------------+
    | runoob_id | runoob_title | runoob_author | submission_date |
    ±----------±--------------±--------------±----------------+
    | 3 | 学习 Java | RUNOOB.COM | 2015-05-01 |
    | 4 | 学习 Python | RUNOOB.COM | 2016-03-06 |
    ±----------±--------------±--------------±----------------+

13.操作符:UNION

  • 用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中
  • 将两个表中的相同字段下的所有值列出来,不会重复列出
  • 使用 UNION ALL 来选取重复的值
    例如:
SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;

14.排序:ORDER BY

  • 使用 ORDER BY 子句将查询数据排序后再返回数据:
  • 以使用任何字段来作为排序的条件,从而返回排序后的查询结果
  • 可以设定多个字段来排序
  • 可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列
  • 可以添加 WHERE…LIKE 子句来设置条件
    例如:SELECT * from runoob_tbl ORDER BY submission_date ASC;
    ±----------±--------------±--------------±----------------+
    | runoob_id | runoob_title | runoob_author | submission_date |
    ±----------±--------------±--------------±----------------+
    | 3 | 学习 Java | RUNOOB.COM | 2015-05-01 |
    | 4 | 学习 Python | RUNOOB.COM | 2016-03-06 |
    | 1 | 学习 PHP | 菜鸟教程 | 2017-04-12 |
    | 2 | 学习 MySQL | 菜鸟教程 | 2017-04-12 |
    ±----------±--------------±--------------±----------------+

15.分组;GROUP BY

  • 根据一个或多个列对结果集进行分组
    例如: SELECT name, COUNT(*) FROM employee_tbl GROUP BY name;
    ±-------±---------+
    | name | COUNT(*) |
    ±-------±---------+
    | 小丽 | 1 |
    | 小明 | 3 |
    | 小王 | 2 |
    ±-------±---------+

16.连接:

  • INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录
  • 将两个表中拥有的相同数据打印出来
    例如: SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b WHERE a.runoob_author = b.runoob_author;
    ±------------±----------------±---------------+
    | a.runoob_id | a.runoob_author | b.runoob_count |
    ±------------±----------------±---------------+
    | 1 | 菜鸟教程 | 10 |
    | 2 | 菜鸟教程 | 10 |
    | 3 | RUNOOB.COM | 20 |
    | 4 | RUNOOB.COM | 20 |
    ±------------±----------------±---------------+

LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录
例如:SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;

RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录
例如:SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a RIGHT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;

17.NULL值处理

关于 NULL 的条件比较运算是比较特殊的。你不能使用 = NULL 或 != NULL 在列中查找 NULL 值

SELECT * FROM runoob_test_tbl WHERE runoob_count IS NULL;

18.事物:主要用于处理操作量大,复杂度高的数据

  • 比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等

19.命令:ALTER

当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令
新增字段:ALTER TABLE testalter_tbl ADD i INT;
删除字段:ALTER TABLE testalter_tbl DROP i;
设定为第一列:ALTER TABLE testalter_tbl ADD i INT FIRST;
设定为于某个字段之后:ALTER TABLE testalter_tbl ADD i INT AFTER c;
显示表中的所有字段:SHOW COLUMNS FROM testalter_tbl;
修改表名: ALTER TABLE testalter_tbl RENAME TO alter_tbl;
设置字段的默认值:ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
删除字段的默认值:ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

修改字段类型及名称:可以在ALTER命令中使用 MODIFY 或 CHANGE 子句
例如:在 CHANGE 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型

 ALTER TABLE testalter_tbl MODIFY c CHAR(10);
 ALTER TABLE testalter_tbl CHANGE i j BIGINT;

20.索引

添加索引:ALTER table tableName ADD INDEX indexName(columnName)
删除索引:DROP INDEX [indexName] ON mytable;

21.自动增长序列:AUTO_INCREMENT

例如:id INT UNSIGNED NOT NULL AUTO_INCREMENT,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值