虽然有一款非常好用的可视化工具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) REFERENCES n(id); # 自动生成键名m_ibfk_1 ALTER TABLE m ADD CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES n(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) REFERENCES n(id); # 删除之后从新建 # 添加唯一键 ALTER TABLE n ADD UNIQUE (name); ALTER TABLE n ADD UNIQUE u_name (name); ALTER TABLE n ADD UNIQUE INDEX u_name (name); ALTER TABLE n ADD CONSTRAINT u_name UNIQUE (name); CREATE UNIQUE INDEX u_name ON n(name); # 添加索引 ALTER TABLE n ADD INDEX (age); ALTER TABLE n ADD INDEX i_age (age); CREATE INDEX i_age ON n(age); # 删除索引或唯一键 DROP INDEX u_name ON n; 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 JOIN n; # 标准写法 SELECT * FROM m, n; # 类似全连接full join的联接用法 SELECT id,name FROM m UNION SELECT id,name FROM n;
十四、聚合函数
SELECT count(id) AS total FROM n; # 总数 SELECT sum(age) AS all_age FROM n; # 总和 SELECT avg(age) AS all_age FROM n; # 平均值 SELECT max(age) AS all_age FROM n; # 最大值 SELECT min(age) AS all_age FROM n; # 最小值
十五、索引
索引,在关系数据库中,是一种单独的、物理的对数据库表中的一列或多列的值进行排序的一种存储结构。
它是某个表中一列或若干列的集合和相应的指向表中物理标识。这些值得逻辑页的逻辑指针清单。索引的作用
相当于图书的目录,可以根据页码快速找到所找的内容。数据库根据索引找到特定值,然后顺指针找到该值的
行,这样可以使对应于表的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