Mysql 数据库 学习笔记

原创 Jeff Tang  2018-03-28 15:59  阅读 468 次 次

# 常用操作

SHOW DATABASES;    # 查看所有库

SELECT DATABASE();    # 查看当前连接的库

SHOW TABLES;    # 查看当前库下的所有表

SHOW CREATE DATABASE test;    # 查看创建库时的语句

SHOW GRANTS FOR 'root'@'localhost';    # 查询用户权限

SHOW CREATE TABLE test_table;    # 查看创建表时的语

DESC test_table; # 查看表结构

CREATE DATABASE IF NOT EXISTS easylinux DEFAULT CHARACTER SET UTF8 COLLATE UTF8_GENERAL_CI;    # 创建数据库 并指定默认的字符集是utf8

use test;    # 选中数据库
  # 通告MySQL把test数据库作为默认当前数据库使用,用于后续语句。该数据库保持为默认数据库,直到语段的结尾,或者直到出现下一个不同的use语句

DROP DATABASE test;    # 删除数据库

DROP TABLE test_table;    # 删除表

Delete FROM mysql.user Where User='service' and Host='%';    #删除用户

mysqladmin -u root -p password'P@ssw0rd'    # 修改用户登录密码

GRANT ALL PRIVILEGES ON easylinux.* TO easylinux@'%' IDENTIFIED BY 'P@ssw0rd';    # 创建用户授权指定数据库中所有表数据的权限

GRANT SELECT,INSERT,UPDATE,DELETE ON easylinux.* TO easylinux@'%' IDENTIFIED BY 'P@ssw0rd';    # 创建用户授权指定数据库 查询 插入 更新 删除 所有表数据的权限

FLUSH PRIVILEGES;    # 刷新权限

ALTER DATABASE test CHARACTER SET GBK COLLATE GBK_CHINESE_CI;    # 修改库编码字符集,不推荐使用

RENAME TABLE test_table TO test_table_1;    # 重命名表名

ALTER TABLE test_table ADD note VARCHAR(60);    # 表中添加字段

ALTER TABLE test_table DROP note;    # 表中删除字段

ALTER TABLE test_table CHANGE password passwd VARCHAR(60);    # 重命名表中的字段

ALTER TABLE test_table CHANGE passwd passwd VARCHAR(20); # 修改表中的字段类型

# 创建表

CREATE TABLE test_table(
    name VARCHAR(40) PRIMARY KEY,
    email VARCHAR(40),
    password VARCHAR(40)
);

# 增加一条数据

INSERT INTO `test_table`(name, email, password) VALUES('jeff1', '269728310@qq.com', '1');

INSERT INTO `test_table`(name, password) VALUES('jeff2', '2');

INSERT INTO `test_table` SET name = 'jeff3';

INSERT INTO `test_table` VALUES('jeff4', '269728310@qq.com', '4');

# 增加多条数据

INSERT INTO `test_table`(name, email, password)
    VALUES('jeff5', '269728310@qq.com', '5'),
          ('jeff6', '269728310@qq.com', '6'),
          ('jeff7', '269728310@qq.com', '7');

# 常用属性

PRIMARY KEY # 主键
AUTO_INCREMENT    # 自增
COMMENT 'easylinux'    # 注译
DEFAULT 'easylinux'    # 默认值1
NOT NONE    # 不能为空
UNIQUE    #唯一键

# 常用字段类型

# 日期和时间数据类型
 date # 日期,格式:2014-09-18
 time # 时间,格式:08:42:30
 datetime # 日期时间,格式:2014-09-18 08:42:30
 timestamp # 自动存储记录修改的时间
 year # 年份
 
# 整型
 tinyint # 范围(-128~127)
 smallint # 范围(-32768~32767)
 mediumint # 范围(-8388608~8388607)
 int # -2147483648~2147483647)
 bigint # 范围(+-9.22*10的18次方)
 
# 浮点型
 float(m, d) # 单精度浮点型,m总个数,d小数位
 double(m, d) # 双精度浮点型,m总个数,d小数位
 decimal(m, d) # decimal是存储为字符串的浮点数
 
# 字符串数据类型
 char(n) # 固定长度,最多255个字符
 varchar(n) # 可变长度,最多65535个字符
 tinytext # 可变长度,最多255个字符
 text # 可变长度,最多65535个字符
 mediumtext # 可变长度,最多2的24次方-1个字符
 longtext # 可变长度,最多2的32次方-1个字符

# 常用关系运算符

=    等于
>    大于
>=   等于等于
<    小于
<=   小于等于
!=   不等于

关系运算符需要放在 WHERE后面
SELECT 字段1, 字段2... FROM 表名 [WHERE 条件]


# 常用逻辑运算符

and  与
or   或
not  非

# 常用算术运算符

+    加法运算
-    减法运算
*    乘法运算
/    除法运算,返回商
%    求余运算,返回余数

# 例如  UPDATE `test_table` SET password = password+1 WHERE name = 'jeff5';

# 查询

SELECT * FROM `test_table`;    # * 代表查询某个表中所有字段

SELECT name, email From `test_table`;     # * 代表查询某个表中name, email 字段

SELECT name FROM `test_table` WHERE name = 'jeff4';    # 查询name等于jeff4的字段

SELECT name AS username, email AS mail FROM `test_table` WHERE name = 'jeff4';   # AS 给字段取别名

SELECT name, password FROM `test_table` AS t WHERE name = 'jeff4'; # AS给表取别名

SELECT t.name, t.password FROM `test_table` AS t WHERE name = 'jeff4'; # AS给表取别名

SELECT name username FROM `test_table` WHERE name = 'jeff4';   # 给字段取别名偷懒方式

SELECT * FROM `test_table` WHERE email='269728310@qq.com' and password >= 6;    #查询 邮箱=123456,并且密码>=6

SELECT * FROM `test_table` WHERE email='269728310@qq.com' OR password >= 2;    #查询 邮箱=269728310@qq.com,或密码>=2

# 同时查询多条记录

SELECT * FROM test_table1 WHERE id IN(1,3,4);    #判断在IN()中的列表
SELECT * FROM test_table1 WHERE id NOT IN(1,3,4);    #判断不在IN()中的列表

# 升降序查询

SELECT * FROM test_table1 ORDER BY id ASC;    # 升序

SELECT * FROM test_table1 ORDER BY id DESC;    # 降序

# 聚合函数

SELECT MAX(id) FROM test_table;    # 找出最大值

SELECT MIN(id) FROM test_table;    # 找出最小值

SELECT AVG(id) FROM test_table;    # 求平均数

SELECT SUM(id) FROM test_table;    # 求和

SELECT COUNT(id) FROM test_table;    # 匹配指定条件的行数

# 常用函数

# 时间函数
  SELECT NOW();    # 2018-04-24 14:37:09
  SELECT CURDATE();    # 2018-04-24
  SELECT CURTIME();    # 14:39:37

# 数学函数
  SELECT CEIL(2.3);    # 向上取舍
  SELECT FLOOR(2.3);    # 向下取舍
  SELECT RAND();    # 返回0~1之间的小数
  SELECT CEIL(RAND()*10000);    # 随机生成4位数字

# 修改

UPDATE `test_table` SET name = 'jeff4_update' WHERE name = 'jeff4';    # 查询name=jeff4改为name=jeff4_update

UPDATE `test_table` SET name = 'jeff5_update', password = '4' WHERE name = 'jeff5'; # 查询name=jeff5行修改字段name=jeff5_update password=4

UPDATE `test_table` SET password = 5 WHERE password = 4 and name = 'jeff5_update'; # 查询name=jeff5_update,password=4 行修改字段password=5

# 删除

DELETE FROM `test_table` WHERE password = '123456'; # 删除所有 password=123456 的行

TRUNCATE TABLE test_table;    # 删除整张表内容,如果有自增字段重新计数

# 查看mysql当前连接数

show global status like 'Threads_connected';

# 查看mysql最大连接数

show variables like 'max_connections';

# 查看mysql历史最大连接数

show global status like 'Max_used_connections';

# 查看mysql锁表数

mysql -uroot -p -e "show processlist;" |grep "Waiting for table level lock" |wc -l

# 查看mysql慢查询

mysql -uroot -p -e "show processlist;" |grep "Sending data" |awk '{if($6>4){print 1}}'

 

本文地址:https://www.easylinux.cn/archives/54
版权声明:本文为原创文章,版权归 Jeff Tang 所有,欢迎分享本文,转载请保留出处!

发表评论


表情