mysql——基本使用语句

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/FlyLikeButterfly/article/details/82712326

----数据库操作
1.查看数据库列表
    SHOW DATABASES;
2.查看数据库表(先需要use数据库)
    SHOW TABLES;
3.查看数据库状态
    SHOW TABLE STATUS FROM tableA LIKE 'tab%'\G;
4.创建数据库
    CREATE DATABASE dbA;
5.使用数据库
    USE tableA;
6.删除数据库
    DROP DATABASE dbA;
    
----数据表操作
1.创建表
    CREATE TABLE tableA ('id' INT AUTO_INCREMENT,'name' VARCHAR(50));
2.删除表
    DROP TABLE tableA;
3.清空表
    TRUNCATE FROM tableA;
4.查看表的列
    SHOW COLUMNS FROM tableA;
5.查看表索引
    SHOW INDEX FROM tableA;
    SHOW KEYS FROM tableA;
6.创建索引,无法创建主键索引
    CREATE INDEX index_name ON tableA ('name');
    CREATE UNIQUE index_name ON tableA ('name');
    CREATE FULLTEXT index_name ON tableA ('name');
    CREATE INDEX index_name ON tableA (a,b,c);(联合索引,注意索引定义顺序,会创建(a)(a,b)(a,b,c)三个索引,从最左顺序开始索引,断开之后的索引无效,where里使用顺序无关)
7.查看表的创建信息
    SHOW CREATE TABLE tableA;
8.修改表
    ALTER TABLE tableA RENAME TO table_a;(修改表tableA的名字为table_a)
    ALTER TABLE tableA DROP name;(删字段)
    ALTER TABLE tableA ADD age INT;(添加字段)
    ALTER TABLE tableA ADD age INT FIRST;(第一列添加age字段)
    ALTER TABLE tableA ADD age INT AFTER name;(name列后添加age字段)
    ALTER TABLE tableA ADD INDEX index_name ('name');(添加普通索引)
    ALTER TABLE tableA ADD UNIQUE ('name');(添加唯一索引,可为null)
    ALTER TABLE tableA ADD PRIMARY KEY ('no');(添加主键)
    ALTER TABLE tableA ADD FULLTEXT ('content');(添加全文索引,只用于varchar和text类型,只用于MYISAM引擎,对英文检索)
    ALTER TABLE tableA MODIFY name VARCHAR(100);(修改name列类型为VARCHAR(100))
    ALTER TABLE tableA MODIFY name CHAR(50) NOT NULL DEFAULT "NoName";(修改name列类型为CHAR(50)不为空,默认值“NoName”)
    ALTER TABLE tableA CHANGE name address VARCHAR(100);(修改name和address列类型为VARCHAR(100))
    ALTER TABLE tableA ALTER age SET DEFAULT 0;(修改age字段默认值为0)
    ALTER TABLE tableA ALTER age DROP DEFAULT;(删除age字段默认值设置)
    
----数据操作
1.增
    INSERT INTO tableA (id,name) VALUES (1,'hello'),(2,'world');
    INSERT INTO tableA (id,name) SELECT (no,name) FROM tableB WHERE id<5;
2.删
    DELETE FROM tableA WHERE id = 2;
3.改
    UPDATE tableA SET name="hello" , age=18 WHERE id = 4;
4.查
    SELECT DISTINCT * FROM tableA WHERE id < 5 AND name IS NOT NULL;(DISTINCT去重,ORDER BY有类似功能)
    SELECT id AS no FROM tableA WHERE id BETWEEN 2 AND 5;(AS重命名)
5.LIKE模糊查询
    SELECT * FROM tableA WHERE name LIKE "h_llo wor%";(%代表多个,_代表一个,注:%在最前的时候不使用索引)
6.UNION连接两个select语句,UNION ALL包括重复值
    SELECT name FROM tableA UNION SELECT name FROM tableB;
7.分组查询
    SELECT COUNT(age),SUM(age),MAX(age),MIN(age),AVG(age) FROM tableA GROUP BY age;
8.分页查询
    SELECT * FROM tableA LIMIT 3;(前3)
    SELECT * FROM tableA LIMIT 2,3;(偏移2取前3个)
    SELECT * FROM tableA LIMIT 3 OFFSET 2;
9.排序查询
    SELECT * FROM tableA ORDER BY age ASC;(升序,默认)
    SELECT * FROM tableA ORDER BY age DESC;(降序)
    SELECT * FROM tableA ORDER BY age DESC,name ASC;(先age降序,age相同再name升序)
10.正则查询
    SELECT name FROM tableA WHERE name REGEXP '^hell';
11.JOIN查询
    SELECT a.name FROM tableA a INNER JOIN tableB b ON a.id = b.id WHERE a.id < 10;(内连接,inner可省略)
    SELECT * FROM tableA INNER JOIN tableB b USING(id);
    SELECT a.name AS Aname FROM tableA AS a LEFT JOIN tableB AS b ON a.id = b.id WHERE a.id < 10;(左连接,a表全部数据)
    SELECT a.name AS Aname FROM tableA AS a RIGHT JOIN tableB AS b ON a.id = b.id WHERE a.id < 10;(右连接,b表全部数据)
12.IN查询
    SELECT * FROM tableA WHERE id IN (2,3,4);
    SELECT * FROM tableA WHERE id IN (SELECT id FROM tableB);(用到了tableA上的id索引)
13.EXISTS查询
    SELECT * FROM tableA WHERE EXISTS(SELECT id FROM tableB WHERE id=tableA.id);(用到了tableB上的id索引,EXISTS后的查询有数据则返回true,主表该行数据放入结果里)
14.ALL、ANY或SOME查询
    SELECT * FROM tableA WHERE id > ANY(SELECT no FROM tableB);(IN等同于=ANY,ANY与SOME同义)
    SELECT * FROM tableA WHERE age < ALL(SELECT age FROM tableB);(NOT IN等同于<>ALL)
15.IF(arg1,arg2,arg3),arg1为true(不为0不为NULL),则返回arg2,否则返回arg3
    SELECT *,IF(score>60,"及格","不及格") AS 成绩 FROM table_Score;
    SELECT *,IF(name="" OR name IS NULL,"未命名",name) FROM tableA;
16.IFNULL(arg1,arg2),arg1不为null返回arg1,否则返回arg2
    SELECT IFNULL(name,"空") FROM tableA;
17.CASE WHEN
    SELECT CASE id WHEN 1 THEN 'A' WHEN 2 THEN 'B' ELSE 'C' END FROM tableA;
18.变量
    SELECT a.*,@abc:=@abc+1 as abc FROM tableA a,(SELECT @abc:=0) b;

----mysql参数和性能相关
1.查询最大连接数(默认100)
    show variables like 'max_connections';
2.设置最大连接数(上限16384)
    set global max_connections = 200;
    set global 参数名 = 参数值;(设置全局参数)
3.查看当前连接mysql的线程列表
    show processlist;
4.查看当前被使用的连接(通常设置为最大的85%)
    show global status like 'max_user_connections'
5.使用explain检测查询
    EXPLAIN SELECT * FROM tableA;
6.显示当前状态
    show status;
7.查看InnoDB缓冲池信息
    show global status like 'innodb_buffer_pool_pages_%';
8.获取建议PROCEDURE ANALYSE([max_elements,[max_memory]])
    select * from tableA PROCEDURE ANALYSE();(默认(256,8192),max_elements关注的每列不同值最大数(如果不同值超过则把Enum作为建议类型),max_memory每列不同值可能分配的最大内存)
    select * from tableA PROCEDURE ANALYSE(100);
    select * from tableA PROCEDURE ANALYSE(100,1000);

猜你喜欢

转载自blog.csdn.net/FlyLikeButterfly/article/details/82712326