Brief description of basic usage of MySQL database

 overview

Basic use of database

 Permissions + configuration files + log

 Password-free login configuration

# Skip password 
skip-grant-tables

SELECT user,host,authentication_string FROM mysql.user ;

import .sql file

mysql -uroot -proot < tarena.sql

SELECT Basic

show databases ;

show tables ;

SELECT DATABASE();

SELECT USER() ;

SELECT VERSION() ;

AS + Computing + Chinese

SELECT 123 AS MATHS ;

SELECT '你哈' AS "问候语" ;

SELECT 2 * 2 AS result;

CONCAT + LIMIT

-- 字符串连接
SELECT id, name, CONCAT(id, "-", name ) AS CONCAT FROM user LIMIT 3;

DISTINCT

-- 去重
SELECT DISTINCT shell FROM user ;

 WHERE

-- =
SELECT id, name , shell FROM user WHERE shell = "/bin/bash" LIMIT 3 ;
-- !=
SELECT id, name , shell FROM user WHERE shell != "/bin/bash" LIMIT 3 ;
-- <=
SELECT id, name , shell FROM user WHERE id <= 10 LIMIT 3 ;
-- >=
SELECT id, name , shell FROM user WHERE id >= 10 LIMIT 3 ;
-- BETWEEN AND
SELECT id, name , shell FROM user WHERE id BETWEEN 10 AND 20 LIMIT 3 ;
-- IN
SELECT id, name , shell FROM user WHERE name in ("root", "bin") ;
-- NOT IN
SELECT id, name , shell FROM user WHERE name not in ("root", "bin") LIMIT 3 ;

IS NULL + IS NOT NULL

SELECT id, name, comment FROM user WHERE comment is null ;

SELECT id, name, comment FROM user WHERE comment IS NOT NULL ;

%  _  LIKE

SELECT id , name FROM user WHERE name LIKE "s%";

SELECT id , name FROM user WHERE name LIKE "___";

REGEXP

-- 匹配含有 a 
SELECT id, name FROM user WHERE name REGEXP "a" ;

-- 匹配 a 开头的 ^
SELECT id, name FROM user WHERE name REGEXP "^a" ;

-- 匹配 c 结尾 $
SELECT id, name FROM user WHERE name REGEXP "c$" ;

-- [] 匹配多个字符或者数字
SELECT id, name FROM user WHERE name REGEXP "[0-9]" ;

-- 匹配数字开头
SELECT id, name FROM user WHERE name REGEXP "^[0-9]" ;

-- 匹配数字结尾
SELECT id, name FROM user WHERE name REGEXP "[0-9]$" ;


-- 或者 | 
SELECT id, name FROM user WHERE name REGEXP "^[0-9]|[0-9]$" ;

-- . 表示任意一个字符 + * 匹配所有
SELECT id, name FROM user WHERE name REGEXP "^r.*$" ;


^ 匹配行首
$ 匹配行尾
[] 匹配范围内任意一个
*  前边的表达式出现零次或多次
|  或者
.  任意一个字符

 

AND(&&) + OR(||) + NOT(!)

-- AND
/*
mysql> SELECT 
    -> *
    -> FROM
    -> user
    -> WHERE
    -> id BETWEEN 1 AND 10 
    -> AND
    -> shell = "/sbin/nologin" ;
*/


SELECT * FROM user WHERE name = "root" OR uid = 3 ;
SELECT * FROM user WHERE name = "root" || uid = 3 ;

SELECT  * FROM user WHERE id BETWEEN 1 AND 10 && shell = "/sbin/nologin";
SELECT  * FROM user WHERE id BETWEEN 1 AND 10 AND shell = "/sbin/nologin";

SELECT  * FROM user WHERE id BETWEEN 1 AND 10 && shell != "/sbin/nologin";
SELECT  * FROM user WHERE id BETWEEN 1 AND 10 && NOT shell = "/sbin/nologin";

priority()

SELECT  id, name, uid FROM user WHERE name = "root" OR name = "bin" AND uid = 1;

SELECT  id, name, uid FROM user WHERE (name = "root" OR name = "bin") AND uid = 1 ;

GROUP BY + ORDER BY + HAVING

/*
语法格式1 不加添加查找数据
select    字段名列表  from   库.表    分组|排序|过滤|分页 ;

语法格式2 加条件查找数据
select    字段名列表  from   库.表   where  筛选条件    分组|排序|过滤|分页 ;


Select 查询命令   group by   表头名;
Select 查询命令   order by   表头名  ;升序
Select 查询命令   order by   表头名  desc;   降序

select  字段名列表  from   库.表     having   筛选条件;
select  字段名列表  from   库.表  where   条件     having   筛选条件;
select  字段名列表  from   库.表 [ where   条件 ] limit 数字;
*/

SELECT shell,count(name) FROM user GROUP BY shell ;

SELECT id,name,uid FROM user WHERE uid BETWEEN 10 AND 500 ORDER BY uid DESC ;
SELECT id,name,uid FROM user WHERE uid BETWEEN 10 AND 500 ORDER BY uid  ;

SELECT dept_id,count(name) FROM employees GROUP BY dept_id HAVING COUNT(name) > 50;

 

 

function

Functions can be called + nested within each other

SELECT NOW();
SELECT YEAR(NOW());
SELECT DAY(NOW());
SELECT MONTH(NOW());
SELECT TIME(NOW());

SELECT MAX(uid) FROM user ;
SELECT MIN(uid) FROM user ;

string functions

SELECT id, name, CHAR_LENGTH(name), LENGTH(name) FROM user WHERE name = "root" ;

SELECT id, name, UPPER(name), UCASE(name) FROM user WHERE name = "root" ;

SELECT id, name, LOWER(name), LCASE(name) FROM user WHERE name = "root" ;

SELECT id, name, SUBSTR(name, 2, 5) FROM user WHERE id = 14 ;

SELECT id, name, INSTR(name, "net") FROM user WHERE id = 14 ;

-- LENGTH(str)	     	    返字符串长度,以字节为单位
-- CHAR_LENGTH(str)		    返回字符串长度,以字符为单位
-- UPPER(str)和UCASE(str)   将字符串中的字母全部转换成大写
-- LOWER(str)和LCASE(str)	将str中的字母全部转换成小写
-- SUBSTR(s, start,end) 	从s的start位置开始取出到end长度的子串
-- INSTR(str,str1)		    返回str1参数,在str参数内的位置
-- TRIM(s)			        返回字符串s删除了两边空格之后的字符串

aggregate function

SELECT AVG(id) FROM user ;

SELECT SUM(id) FROM user ;

SELECT COUNT(id) FROM user ;

SELECT MAX(id) FROM user ;

SELECT MIN(id) FROM user ;

-- 聚集函数可以 与 GROUP BY 或者 其他聚集函数 或者 单独 使用


SELECT id, name FROM user WHERE mod(id,2) = 0 LIMIT 3 ;
SELECT id, name FROM user WHERE mod(id,2) = 1 LIMIT 3 ;

   

time function

SELECT DAYOFMONTH(NOW()) ;

SELECT DAYOFYEAR(NOW()) ;

SELECT MONTHNAME(NOW()) ;

SELECT QUARTER(NOW()) ;

SELECT WEEKDAY(NOW()) ;

SELECT WEEK(NOW()) ;

SELECT CURTIME();

SELECT CURDATE();

Process control function (judgment) IF + CASE + IFNULL

-- if(条件,v1,v2)   如果条件成立,则返回v1,否则返回v2
-- ifnull(v1,v2)   如果v1不是空,则返回v1,否则返回v2

SELECT IFNULL("bbb", "AAA");
SELECT IFNULL(NULL, "AAA");

SELECT IF(1=2,"t","f") ;
SELECT IF(1=1,"t","f") ;

SELECT id,name,uid,IF(uid < 1000, "sys-user", "cus-user") AS "user-type" FROM user ;
SELECT id, name, homedir, IFNULL(homedir, "No Home") AS "HOME-DIR" FROM user;

   

/*
case语句 语法格式  (可以有多个判断添加)
如果字段名等于某个值,则返回对应位置then后面的值并结束判断,
如果与所有值都不相等,则返回else后面的结果并结束判断

语法格式1
CASE 表头名              
WHEN 值1 THEN 结果 
WHEN 值2 THEN 结果  
WHEN 值3 THEN 结果 
ELSE 结果  
END 

语法格式2
CASE              
WHEN  判断条件 THEN 结果 
WHEN  判断条件  THEN 结果  
WHEN  判断条件 THEN 结果 
ELSE 结果  
END
*/;

SELECT 
    dept_id, dept_name,
CASE 
WHEN 
    dept_name IN ("开发部","测试部","运维部") THEN "技术部"
WHEN 
    dept_name IN ("人事部","财务部","法务部") THEN "综合部"
ELSE 
    "开拓部" 
END 
    AS dept_style
FROM 
    departments ;


SELECT
    dept_id, dept_name,
CASE
WHEN
    dept_name IN ("开发部","测试部","运维部") THEN "技术部"
WHEN
    dept_name IN ("人事部","财务部","法务部") THEN "综合部"
WHEN
    dept_name = "市场部" THEN "ACD"
ELSE
    "ABC" 
END 
    AS "dept_style"
FROM 
    departments ;

 

 Wrong way:

  

SELECT 
    dept_id, dept_name,
CASE 
    dept_name
WHEN 
    '运维部' THEN '技术部门-1'
WHEN 
    '开发部' THEN '技术部门-2'
WHEN 
    '测试部' THEN '技术部门-3'
ELSE 
    '非技术部门'
END AS 部门类型 
FROM  
    departments;

 

INSERT Basic

-- 写入数据
INSERT INTO user(name) VALUES ("yaya9") ;

Database system variables@@ 

SELECT @@hostname ;

 SHOW VARIABLES ;

SHOW CREATE + DESCRIBE

-- 查看表头名
DESCRIBE TABLE user ;

DESC user ;

-- 查看建表语句
SHOW CREATE TABLE user ;
-- 查看数据库基本信息
SHOW CREATE DATABASE tarena ;
-- 语法错误
DESCRIBE DATABASE tarena ;

Guess you like

Origin blog.csdn.net/m0_59267075/article/details/130302849