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函数

  • 相关阅读:
    Representation Data in OpenCascade BRep
    Render OpenCascade Geometry Surfaces in OpenSceneGraph
    Render OpenCascade Geometry Curves in OpenSceneGraph
    OpenCascade Shape Representation in OpenSceneGraph
    Geometry Surface of OpenCascade BRep
    Geometry Curve of OpenCascade BRep
    Tyvj2017清北冬令营入学测试
    Spfa算法模板
    洛谷1016 旅行家的预算
    洛谷1290 欧几里得的游戏
  • 原文地址:https://www.cnblogs.com/zllk/p/13246766.html
Copyright © 2011-2022 走看看