• mysql 一些基础的语法和命令


    语法:

    SELECT 属性列表
           FROM 表名或视图名
           [ WHERE 条件表达式1 ]
           [ GROUP BY 属性名1 [ HAVING 条件表达式2 ] [ WITH ROOLUP ] ]
           [ ORDER BY 属性名2 [ ASC|DESC ] ]

    条件表达式1:指定查询条件
    条件表达式2:满足该表达式的结果才能输出
    WITH ROLLUP:在所有记录的最后增加一条记录,包含上面记录的总和
    单独使用GROUP BY 查询结果只显示一个分组的记录,所以它通常和集合函数一起使用
    查询条件:
    比较 =、<、<=、>、>=、!=、<>、!<、!>
    指定范围 BETWEEN AND、NOT BETWEEN AND
    指定集合 IN、NOT IN
    匹配字符 LIKE、NOT LIKE(只能匹配字符串,%代表任意长度,_代表单个字符)
    是否为空值 IS NULL、IS NOT NULL
    多个查询条件 AND、OR
    限制条件 LIMIT

    (一)普通查询
    ## 查询所有字段
    SELECT * FROM grade;
    ## 查询指定字段
    SELECT course FROM grade;
    ## 查询指定记录
    SELECT * FROM grade WHERE num=1;
    ## 查询指定集合内的记录
    SELECT * FROM grade WHERE course IN('语文','数学');
    ## 查询指定范围内的记录
    SELECT * FROM grade WHERE age BETWEEN 18 AND 19 ;
    ## 匹配查询
    SELECT * FROM grade WHERE course LIKE '英%';
    ## 查询空值
    SELECT * FROM grade WHERE score IS NULL;
    ## 多条件查询
    SELECT * FROM grade WHERE score>90 AND sex= 'M';
    SELECT * FROM grade WHERE score<90 OR sex= 'F';
    ## 查询结果不重复
    SELECT DISTINCT num FROM grade;
    ## 对结果排序(支持多字段排序,先按第一个字段排序,第一个字段相等时再按第二个字段排序)
    SELECT * FROM grade ORDER BY score DESC;
    SELECT * FROM grade ORDER BY num DESC, score ASC;

    ## 分组查询
    #单独使用GROUP BY时,只显示分组结果第一个,无实际意义,一般与集合函数一起使用
    SELECT * FROM grade GROUP BY sex;
    #与GROUP_CONCAT()一起使用,显示每个分组的字段,一个语句使用只使用一个
    语法:
    GROUP_CONCAT( [DISTINCT] 属性名 [ORDER BY 属性名 ASC|DESC] [SEPARATOR ‘;|,’] )
    SELECT sex,GROUP_CONCAT(name) FROM grade GROUP BY sex;
    #与集合函数一起使用,COUNT() SUM() AVG() MAX() MIN()
    SELECT sex,COUNT(sex) FROM grade GROUP BY sex;
    SELECT num,SUM(score) FROM grade GROUP BY num;
    #HAVING一起使用,该关键字用于选择满足条件的分组
    SELECT sex, COUNT(sex) FROM grade GROUP BY sex HAVING COUNT(sex)>3;
    ## 限制查询数量
    SELECT * FROM grade LIMIT 2;(前两个)
    SELECT * FROM grade LIMIT 2,3;(从第2个位置起(不含),显示之后3个记录)
    (二)使用集合函数查询
    ## 使用COUNT()函数查询记录数
    SELECT COUNT(*) FROM employee;
    SELECT d_id,COUNT(*) FROM employee GROUP BY d_id;
    ## 使用SUM()函数,该函数只适用于数值型字段
    SELECT num,SUM(score) FROM grade GROUP BY num;
    ## 使用AVG()函数
    SELECT course,AVG(score) FROM grade GROUP BY course;
    ## 使用MAX()和MIN()函数,可对字符串排序,a最新,z最大,依次排序直至结果
    SELECT MAX(age) FROM grade;
    SELECT MIN(age) FROM grade;
    (三)连接查询
    将两个及以上的表按某个条件连接起来,选取数据。不同的表中存在表示相同意义的字段时,可以通过该字段连接这些表。
    1. 内连接查询,只查询出指定字段取值相同的记录
    SELECT num,name,employee.d_id,age,sex,d_name,function
    FROM employee,department
    WHERE employee.d_id=department.d_id;
    2. 外连接查询
    语法:
    SELECT 属性名列表
           FROM 表名1 LEFT|RIGHT JION 表名2
           ON 表名1.属性名1=表名2.属性名2;


    ## 左连接,可以查询表名1中的所有记录和表名2中的匹配记录
    SELECT num,name,employee.d_id,age,sex,d_name,function
    FROM employee LEFT JION department
    ON employee.d_id=department.d_id;


    ## 右连接,可以查询表名2中的所有记录和表名1中的匹配记录
    SELECT num,name,employee.d_id,age,sex,d_name,function
    FROM employee.d_id=department.d_id;

    3. 复合条件连接查询
    SELECT num,name,employee.d_id,age,sex,d_name,function
    FROM employee,department
    WHERE employee.d_id=department.d_id  AND age>24;


    (四)子查询,即将一个查询语句嵌套在另一个查询语句中
    1. 带IN关键字的子查询,即一个查询语句的条件可能落在另一个SELECT语句的查询结果中
    ## 查询employee中的记录,且记录d_id的字段值必须在department表中出现过
    SELECT * FROM employee 
    WHERE d_id IN
     (SELECT d_id FROM department);
    ## 查询employee中的记录,且记录d_id的字段值必须没有在department表中出现过
    SELECT * FROM employee 
    WHERE d_id NOT IN
    (SELECT d_id FROM department);

    2. 带比较运算符的子查询
    ## 查询到一等奖学金(level 1)最低分数90分
    SELECT * FROM scholarship;
    ## 查询满足一等奖学金的学生
    SELECT id,name,score FROM computer_stu
    WHERE score >=
    (SELECT score FROM scholarship WHERE level=1);
    3. 带EXISTS和NOT EXISTS关键字的子查询,内层查询语句不返回查询记录,而是返回一个真假值;当内存查询语句返回true时,外层查询语句将进行查询,否则不进行查询或查询不出任何记录

    SELECT * FROM employee
    WHERE EXISTS
    ( SELECT d_name FROM department WHERE d_id=1003);

    上述查询语句中,内查询语句返回结果为true,所以外层查询语句执行
    4. 带ANY关键字的子查询,只要满足内层查询语句返回结果中的任何一个,就可以通过该条件来执行外层查询语句。
      ANY通常与比较运算符一起使用,>ANY表示大于任何一个值,=ANY表示等于任何一个值
    ## 
    SELECT * FROM computer_stu
    WHERE score >=ANY (SELECT score FROM scholarship)

    5. 带ALL关键字的子查询
    ## 查询分数大于所有奖学金最低分的学生信息
    SELECT * FROM computer_stu  WHERE score>=ALL  (SELECT score FROM scholarship);

    (五)合并查询结果
    将多个查询结果合并到一起显示。UNION,将所有查询结果合并到一起,然后去掉相同的记录;UNION ALL 关键字只是简单合并到一起。
    语法:
    SELECT 语句1
       UNION|UNION ALL
    SELECT 语句2
     ……;
    两个语句之间用UNION或UNION ALL连接
    ## 将department和employee表中的d_id字段合并到一起
    SELECT d_id FROM department
           UNION
    SELECT d_id FROM employee;

    SELECT d_id FROM department
           UNION ALL
    SELECT d_id FROM employee;


    (六)为表和字段去别名
    1. 为表取别名,可在查询中使用别名查询,单必须保证该数据库中没有其他表与该别名相同
    语法:
    表名 表的别名
    SELECT * FROM department d  WHERE d.d_id=1001;
    2. 为字段取别名
    属性名 [AS] 别名
    查询结果会直接显示字段的别名,但必须保证该表中没有其他字段与该别名相同
    SELECT d_id AS department_id, d_name AS department_name   FROM department;

    (七)使用正则表达式查询
    语法:
    属性名 REGEXP ‘匹配方式’
    正则表达式的模式字符 含义
    ^ 匹配字符串开始的部分
    $ 匹配字符串结束的部分
    . 代表字符串中任意一个字符,包括回车和换行
    [字符集合] 匹配”字符集合”中的任何一个字符
    [^字符集合] 匹配除了“字符集合”以外的任何一个字符
    S1|S2|S3 匹配S1、S2和S3中的任意一个字符串
    * 代表多个该符号之前的字符,包括0和1个
    + 代表多个该符号之前的字符,包括1个
    字符串{N} 字符串出现N次
    字符串{M,N} 字符串出现至少M次,最多N次


    1. 查询以特定字符或字符串开头的记录
    ## 查询name字段以L开头的记录
    SELECT * FROM computer_stu WHERE name REGEXP '^L';
    2. 查询以特定字符或字符串结尾的记录
    ## 查询name字段以m结尾的记录
    SELECT * FROM computer_stu WHERE name REGEXP 'm$';
    3. 用符号”.”来代替字符串中的任意一个字符
    ## 查询name字段以L开头,y结尾,中间有两个字符的记录
    SELECT * FROM computer_stu WHERE name REGEXP '^L..y$';4. 匹配字符串中的任意一个
    4. 匹配指定字符意外的字符
    ## 查询name字段中含有a和n任意一个字符的记录
    SELECT * FROM computer_stu WHERE name REGEXP '[An]';
    5. 匹配指定字符串
    SELECT * FROM computer_stu WHERE name REGEXP 'ic';
    6. 用“*”和“+”来匹配多个字符
    ## 查询name字段中字符c之前出现过a的记录,*表示≥0个,+表示>1个
    SELECT * FROM computer_stu WHERE name REGEXP 'a*c';
    SELECT * FROM computer_stu WHERE name REGEXP 'a+c';

    命令

    访问监控器:mysql -u [username] -p;(会提示密码)

    显示所有的数据库: show databases;

    Access数据库:mysql -u [username] -p [database](会提示密码)

    创建新的数据库: create database [database];

    选择数据库: use [database];

    确定是使用什么数据库: select database();

    显示所有表: show tables;

    显示表结构: describe [table];

    列表中的某个表的所有索引: show index from [table];

    创建列的新表: CREATE TABLE [table] ([column] VARCHAR(120), [another-column] DATETIME);

    添加一列: ALTER TABLE [table] ADD COLUMN [column] VARCHAR(120);

    添加列具有独特的自动递增ID: ALTER TABLE [table] ADD COLUMN [column] int NOT NULL AUTO_INCREMENT PRIMARY KEY;

    插入一条记录: INSERT INTO [table] ([column], [column]) VALUES ('[value]', [value]');

    MySQL的功能输入的日期时间: NOW()

    查看记录: SELECT * FROM [table];

    说明记录: EXPLAIN SELECT * FROM [table];

    选择记录部分: SELECT [column], [another-column] FROM [table];

    计数记录: SELECT COUNT([column]) FROM [table];

    计数并选择分组记录: SELECT *, (SELECT COUNT([column]) FROM [table]) AS count FROM [table] GROUP BY [column];

    选择特定的记录:SELECT * FROM [table] WHERE [column] = [value];(选择器:<>!=,合并多个选择与ANDOR

    含选择的记录[value]SELECT * FROM [table] WHERE [column] LIKE '%[value]%';

    首先是选择的记录[value]SELECT * FROM [table] WHERE [column] LIKE '[value]%';

    首先是选择记录val和结尾ueSELECT * FROM [table] WHERE [column] LIKE '[val_ue]';

    选择一个范围: SELECT * FROM [table] WHERE [column] BETWEEN [value1] and [value2];

    与客户订单和唯一的限制选择:SELECT * FROM [table] WHERE [column] ORDER BY [column] ASC LIMIT [value];(排序:DESCASC

    更新记录: UPDATE [table] SET [column] = '[updated-value]' WHERE [column] = [value];

    删除记录: DELETE FROM [table] WHERE [column] = [value];

    删除所有记录从一个表(不删除表本身): DELETE FROM [table]; (这也将重置自动生成的,就像一个id列列递增计数器。)

    删除表中的所有记录: truncate table [table];

    删除表列: ALTER TABLE [table] DROP COLUMN [column];

    删除表: DROP TABLE [table];

    删除数据库: DROP DATABASE [database];

    自定义列输出名称: SELECT [column] AS [custom-column] FROM [table];

    导出数据库转储(更多信息点击这里mysqldump -u [username] -p [database] > db_backup.sql

    使用--lock-tables=false的锁定表(更多信息选项这里)。

    导入数据库转储(更多信息点击这里mysql -u [username] -p -h localhost [database] < db_backup.sql

    登出: exit;

    聚合函数

    选择但不重复: SELECT distinct name, email, acception FROM owners WHERE acception = 1 AND date >= 2015-01-01 00:00:00

    计算记录总数: SELECT SUM([column]) FROM [table];

    算上总数[column]由和组[category-column]SELECT [category-column], SUM([column]) FROM [table] GROUP BY [category-column];

    获得最大的价值[column]SELECT MAX([column]) FROM [table];

    获取最小值: SELECT MIN([column]) FROM [table];

    获取平均值: SELECT AVG([column]) FROM [table];

    找圆润的平均值和组[category-column]SELECT [category-column], ROUND(AVG([column]), 2) FROM [table] GROUP BY [category-column];

    多个表

    从多个表中选择: SELECT [table1].[column], [table1].[another-column], [table2].[column] FROM [table1], [table2];

    结合不同表行: SELECT * FROM [table1] INNER JOIN [table2] ON [table1].[column] = [table2].[column];

    从不同的表合并行,但不需要连接条件:SELECT * FROM [table1] LEFT OUTER JOIN [table2] ON [table1].[column] = [table2].[column];(左表是出现在语句中的第一个表。)

    使用重命名列或表的别名SELECT [table1].[column] AS '[value]', [table2].[column] AS '[value]' FROM [table1], [table2];

    用户功能

    列出所有用户: SELECT User,Host FROM mysql.user;

    创建新用户: CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

    授予ALL访问用户为*表:GRANT ALL ON database.* TO 'user'@'localhost';

    找出Mysql的主机的IP地址

    SHOW VARIABLES WHERE Variable_name = 'hostname';

    来源于:https://gist.github.com/hofmannsven/9164408#commands

  • 相关阅读:
    httprunner学习-参数化与数据驱动
    httprunner学习4-variables变量声明与引用
    httprunner学习3-extract提取token值参数关联(上个接口返回的token,传给下个接口请求参数)
    HttpRunner基础使用一:环境安装
    yml运行时报错SSL: CERTIFICATE_VERIFY_FAILED 解决verify设置False.
    Selenium+Python日期控件小案例
    使用Navicat Keygen激活(破解)Navicat Premium 12
    robotframework(rf)中对时间操作的datetime库常用关键字
    【Selenium】不同chrome版本对应的chrome驱动版本
    1、jmeter工具&soapui工具做接口测试
  • 原文地址:https://www.cnblogs.com/nxld/p/6074717.html
Copyright © 2020-2023  润新知