zoukankan      html  css  js  c++  java
  • MySQL基础笔记

    创建数据库

    CREATE DATABASE database_name;

    create database mysql_test;
    

    删除数据库

    DROP DATABASE database_name;

    > drop database mysql_test;
    

    数据类型

    完整数据类型请参考MySQL 数据类型
    MySQL支持所有标准SQL数值数据类型,所以数据类型有很多,这里介绍几个常用的
    数值类型

    类型 大小 范围(有符号) 范围(无符号) 用途
    INT或INTEGER 4 bytes (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
    FLOAT 4 bytes (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度浮点数值
    DOUBLE 8 bytes (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度浮点数值
    DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

    日期类型

    类型 大小( bytes) 范围 格式 用途
    DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值

    字符串类型

    类型 大小 用途
    CHAR 0-255 bytes 定长字符串
    VARCHAR 0-65535 bytes 变长字符串
    TEXT 0-65 535 bytes 长文本数据

    总体来说整数用int,小数根据精度选择float,double和decimal,日期用date,字符串用varchar。
    然后再说一下字符串类型的区别, CHAR 和 VARCHAR 类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。所以经常变化的字段用 varchar, 知道固定长度的用 char。尽量用 varchar,超过 255 字符的只能用 varchar 或者 text,能用 varchar 的地方尽量不用 text。

    创建数据表

    CREATE TABLE table_name (column_name column_type);

    UNSIGNED 无符号,即非负
    AUTO_INCREMENT 自增
    NOT NULL 非空
    PRIMARY KEY 主键

    CREATE table student(
    id int PRIMARY KEY auto_increment,
    name VARCHAR(20) not null,
    address VARCHAR(20) not null)
    ;
    

    删除数据表

    DROP TABLE table_name ;

    插入数据

    INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );

    INSERT into student (name,address) VALUES ('张三','北京');
    

    查询数据

    SELECT column_name,column_name FROM table_name [WHERE Clause]

    SELECT id,name,address FROM student;
    

    UPDATE更新

    UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]

    UPDATE student set address = '长沙' WHERE `name` = '李四';
    

    DELETE语句

    DELETE FROM table_name [WHERE Clause]

    如果没有指定 WHERE 子句,MySQL 表中的所有记录将被删除。

    WHERE子句

    我们知道从 MySQL 表中使用 SQL SELECT 语句来读取数据。如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句中。

    SELECT field1, field2,...fieldN FROM table_name1, table_name2... [WHERE condition1 [AND [OR]] condition2.....

    查询语句中你可以使用一个或者多个表,表之间使用逗号, 分割,并使用WHERE语句来设定查询条件。

    • 你可以在 WHERE 子句中指定任何条件。
    • 你可以使用 AND 或者 OR 指定一个或多个条件。
    • WHERE 子句也可以运用于 SQL 的 DELETE 或者 UPDATE 命令。
    • WHERE 子句类似于程序语言中的 if 条件,根据 MySQL 表中的字段值来读取指定的数据。

    LIKE子句

    SQL LIKE 子句中使用百分号 %字符来表示任意字符,如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。

    SELECT field1, field2,...fieldN FROM table_name WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'

    你可以在 WHERE 子句中指定任何条件。
    你可以在 WHERE 子句中使用LIKE子句。
    你可以使用LIKE子句代替等号 =。
    LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
    你可以使用 AND 或者 OR 指定一个或多个条件。
    你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。

    SELECT id,name,address FROM student WHERE address LIKE '%京';
    

    UNION

    UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。

    SELECT expression1, expression2, ... expression_n
    FROM tables
    [WHERE conditions]
    UNION [ALL | DISTINCT]
    SELECT expression1, expression2, ... expression_n
    FROM tables
    [WHERE conditions];

    expression1, expression2, ... expression_n: 要检索的列。
    tables: 要检索的数据表。
    WHERE conditions: 可选, 检索条件。
    DISTINCT: 可选,删除结果集中重复的数据。默认情况下 UNION 操作符已经删除了重复数据,所以 DISTINCT 修饰符对结果没啥影响。
    ALL: 可选,返回所有结果集,包含重复数据。

    CREATE table teacher(
    id int PRIMARY key auto_increment,
    name VARCHAR(20) not null,
    address VARCHAR(20) not null);
    

    创建老师表并插入数据

    SELECT address FROM student UNION SELECT address FROM teacher;
    

    排序

    如果我们需要对读取的数据进行排序,我们就可以使用 MySQL 的 ORDER BY 子句来设定你想按哪个字段哪种方式来进行排序,再返回搜索结果。

    SELECT field1, field2,...fieldN FROM table_name1, table_name2...
    ORDER BY field1 [ASC [DESC][默认 ASC]], [field2...] [ASC [DESC][默认 ASC]]

    你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
    你可以设定多个字段来排序。
    你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
    你可以添加 WHERE...LIKE 子句来设置条件。

    SELECT * FROM student ORDER BY address;
    

    分组

    GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数。

    SELECT column_name, function(column_name)
    FROM table_name
    WHERE column_name operator value
    GROUP BY column_name;

    插入更多数据,并统计各个地址的人数

    SELECT address,COUNT(address) as '人数' FROM student GROUP BY address;
    

    连接的使用

    你可以在 SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。
    JOIN 按照功能大致分为如下三类:
    INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
    LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
    RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

    内连接

    新建一个分数表,链接两个表打印成绩和住址

    SELECT student.id,student.`name`,student.address,score.score FROM student JOIN score on student.id = score.id;
    

    左连接

    SELECT student.id,student.`name`,student.address,score.score FROM student left JOIN score on student.id = score.id;
    

    右连接

    SELECT student.id,student.`name`,student.address,score.score FROM student RIGHT JOIN score on student.id = score.id;
    

    ALTER命令

    删除,添加或修改表字段

    如下命令使用了 ALTER 命令及 DROP 子句来删除以上创建表的 i 字段:

    ALTER TABLE testalter_tbl DROP i;

    如果数据表中只剩余一个字段则无法使用DROP来删除字段。
    MySQL 中使用 ADD 子句来向数据表中添加列,如下实例在表 testalter_tbl 中添加 i 字段,并定义数据类型:

    ALTER TABLE testalter_tbl ADD i INT;

    执行以上命令后,i 字段会自动添加到数据表字段的末尾。
    如果你需要指定新增字段的位置,可以使用MySQL提供的关键字 FIRST (设定位第一列), AFTER 字段名(设定位于某个字段之后)。

    修改字段类型及名称

    如果需要修改字段类型及名称, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句 。
    例如,把字段 c 的类型从 CHAR(1) 改为 CHAR(10),可以执行以下命令:

    ALTER TABLE testalter_tbl MODIFY c CHAR(10);

    使用 CHANGE 子句, 语法有很大的不同。 在 CHANGE 关键字之后,紧跟着的是你要修改的字段名,然后指定新字段名及类型。尝试如下实例:

    ALTER TABLE testalter_tbl CHANGE i j BIGINT;
    ALTER TABLE testalter_tbl CHANGE j j INT;

    ALTER TABLE 对 Null 值和默认值的影响

    当你修改字段时,你可以指定是否包含值或者是否设置默认值。
    以下实例,指定字段 j 为 NOT NULL 且默认值为100 。

    ALTER TABLE testalter_tbl MODIFY j BIGINT NOT NULL DEFAULT 100;

    如果你不设置默认值,MySQL会自动设置该字段默认为 NULL。

    修改表名

    如果需要修改数据表的名称,可以在 ALTER TABLE 语句中使用 RENAME 子句来实现。
    尝试以下实例将数据表 testalter_tbl 重命名为 alter_tbl:

    ALTER TABLE testalter_tbl RENAME TO alter_tbl;

    MySQL函数

    完整MySQL函数请参考MySQL函数

  • 相关阅读:
    国内各地图API坐标系统比较与转换
    ubuntu下安装程序的三种方法
    使用微信公众平台测试账号开发“网页授权获取用户基本信息”功能
    centos中crontab(计时器)用法详解
    vb随机移动鼠标
    js中对函数设置默认参数值的3种方法
    Ubuntu 16.04安装配置VSFTPD(支持TLS/SSL加密)
    Spark scheduler
    Spark shuffle
    Spark存储体系
  • 原文地址:https://www.cnblogs.com/zllk/p/13246766.html
Copyright © 2011-2022 走看看