虽然有一款非常好用的可视化工具NAVICAT FOR MYSQ,但是必要的数据库语句还是要掌握的,
下面我来介绍一个平时经常用到的一些语句。
一、用户操作
1、新建用户:
CREATE USER name IDENTIFIED BY 'srm';
2、更改密码:
SET PASSWORD FOR name=PASSWORD('123456');
二、数据库操作
1、查看数据库:
SHOW DATABASES;
2、创建数据库:
CREATE DATABASE db_name; //db_name为数据库名
3、使用数据库:
USE db_name;
4、删除数据库:
DROP DATABASE db_name;
三、创建表
1、创建表:
CREATE TABLE table_name(
id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT, //id值,无符号、非空、递增——唯一性,可做主键。
username VARCHAR(60) NOT NULL
password TINYINT UNSIGNED NOT NULL DEFAULT 0, //设置默认列值
PRIMARY KEY(id)
)ENGINE=InnoDB //设置表的存储引擎,一般常用InnoDB和MyISAM;InnoDB可靠,支持事务;MyISAM高效不支持全文检索
DEFAULT charset=utf8; //设置默认的编码,防止数据库中文乱码
2、复制表
CREATE TABLE tb_name2 SELECT * FROM tb_name;
或者部分复制:
CREATE TABLE tb_name2 SELECT id,name FROM tb_name;
3、创建临时表:
CREATE TEMPORARY TABLE tb_name(这里和创建普通表一样);
4、查看数据库中可用的表:
SHOW TABLES;
5、查看表的结构:
DESCRIBE tb_name;
也可以使用:
SHOW COLUMNS in tb_name; //from也可以
6、删除表:
DROP [ TEMPORARY ] TABLE [ IF EXISTS ] tb_name[ ,tb_name2.......];
实例:
DROP TABLE IF EXISTS tb_name;
7、表重命名:
RENAME TABLE name_old TO name_new;
还可以使用:
ALTER TABLE name_old RENAME name_new;
四、修改表
更改表结构:
ALTER TABLE tb_name ADD[CHANGE,RENAME,DROP] ...要更改的内容...
实例:
ALTER TABLE tb_name ADD COLUMN address varchar(80) NOT NULL;
ALTER TABLE tb_name DROP address;
ALTER TABLE tb_name CHANGE score score SMALLINT(4) NOT NULL;
五、插入数据
1、插入数据:
INSERT INTO tb_name(id,name,score)VALUES(NULL,'张三',140),(NULL,'张四',178),(NULL,'张五',134);
这里的插入多条数据直接在后边加上逗号,直接写入插入的数据即可;主键id是自增的列,可以不用写。
2、插入检索出来的数据:
INSERT INTO tb_name(name,score) SELECT name,score FROM tb_name2;
六、更新数据
1、指定更新数据:
UPDATE tb_name SET score=189 WHERE id=2;
UPDATE tablename SET columnName=NewValue [ WHERE condition ]
七、删除数据
1、删除数据:DELETE FROM tb_name WHERE id=3;
八、条件控制
1、WHERE 语句:
SELECT * FROM tb_name WHERE id=3;
2、HAVING 语句,having字句可以让我们筛选分组之后的各种数据
SELECT * FROM tb_name GROUP BY score HAVING count(*)>2
3、相关条件控制符:
=、>、、IN(1,2,3......)、BETWEEN a AND b、NOT
AND 、OR
Linke()用法中 % 为匹配任意、 _ 匹配一个字符(可以是汉字)
IS NULL 空值检测
九、MySQL的正则表达式
1、Mysql支持REGEXP的正则表达式:
SELECT * FROM tb_name WHERE name REGEXP '^[A-D]' //找出以A-D 为开头的name
2、特殊字符需要转义。
十、MySQL的一些函数
1、字符串链接——CONCAT()
SELECT CONCAT(name,'=>',score) FROM tb_name
2、数学函数:
AVG、SUM、MAX、MIN、COUNT;
3、文本处理函数:
TRIM、LOCATE、UPPER、LOWER、SUBSTRING
4、运算符:
+、-、*、\
5、时间函数:
DATE()、CURTIME()、DAY()、YEAR()、NOW().....
十一、分组查询
1、分组查询可以按照指定的列进行分组:
SELECT COUNT(*) FROM tb_name GROUP BY score HAVING COUNT(*)>1;
2、条件使用Having;
3、ORDER BY 排序:
ORDER BY DESC|ASC =>按数据的降序和升序排列
十二、键值操作
# 添加主键ALTER TABLE n ADD PRIMARY KEY(id);ALTER TABLE n ADD CONSTRAINT pk_n PRIMARY KEY(id); # 主键只有一个,所以定义键名似乎也没有什么用
# 删除主键ALTER TABLE n DROP PRIMARY KEY;
# 添加外键ALTER TABLE m ADD FOREIGN KEY (id) REFERENCESn(id); # 自动生成键名m_ibfk_1ALTER TABLE m ADD CONSTRAINT fk_id FOREIGN KEY (id) REFERENCESn(id); # 使用定义的键名fk_id
# 删除外键ALTER TABLE m DROP FOREIGN KEY`fk_id`;
# 修改外键ALTER TABLE m DROP FOREIGN KEY `fk_id`, ADD CONSTRAINT fk_id2 FOREIGN KEY (id) REFERENCESn(id); # 删除之后从新建
# 添加唯一键ALTER TABLE n ADD UNIQUE(name);ALTER TABLE n ADD UNIQUEu_name (name);ALTER TABLE n ADD UNIQUE INDEXu_name (name);ALTER TABLE n ADD CONSTRAINT u_name UNIQUE(name);CREATE UNIQUE INDEX u_name ONn(name);
# 添加索引ALTER TABLE n ADD INDEX(age);ALTER TABLE n ADD INDEXi_age (age);CREATE INDEX i_age ONn(age);
# 删除索引或唯一键DROP INDEX u_name ONn;DROP INDEX i_age ON n;
十三、联表查询
# 内联接,*的位置不可以放公共字段,因为不知道要的哪个SELECT * FROM m INNER JOIN n ON m.id =n.id;
# 左外联接,右边表中不满足指定的条件时,会在结果中以 NULL 呈现SELECT * FROM m LEFT JOIN n ON m.id =n.id;
# 右外联接SELECT * FROM m RIGHT JOIN n ON m.id =n.id;
# 交叉联接SELECT * FROM m CROSS JOINn; # 标准写法SELECT * FROMm, n;
# 类似全连接full join的联接用法SELECT id,name FROMmUNION
SELECT id,name FROM n;
十四、聚合函数
SELECT count(id) AS total FROMn; # 总数SELECT sum(age) AS all_age FROMn; # 总和SELECT avg(age) AS all_age FROMn; # 平均值SELECT max(age) AS all_age FROMn; # 最大值SELECT min(age) AS all_age FROMn; # 最小值
十五、索引
索引,在关系数据库中,是一种单独的、物理的对数据库表中的一列或多列的值进行排序的一种存储结构。
它是某个表中一列或若干列的集合和相应的指向表中物理标识。这些值得逻辑页的逻辑指针清单。索引的作用
相当于图书的目录,可以根据页码快速找到所找的内容。数据库根据索引找到特定值,然后顺指针找到该值的
行,这样可以使对应于表的sql语句执行的更快,可以快速访问数据库中的特定信息。
十六、b+树
B+树是一种树数据结构,通常用于数据库和操作系统的文件系统中。B+树的特点是能够保持数据稳定有序,
其插入与修改拥有较稳定的对数时间复杂度。B+树元素自底向上插入,这与二叉树恰好相反。
参考自:https://blog.csdn.net/c361604199/article/details/79479398?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.add_param_isCf