数据库的基本操作命令
1.登录MySQL
-- 进入数据库的方法一
mysql -uroot -pmysql # mysql 数据库密码(显示) -- 进入数据库的方法二
mysql -uroot -p # 隐藏密码输入
2.数据库的基本操作
-- 显示数据库版本(记得加;
select version(); -- 显示当前的时间
select now(); -- 查看所有数据库
show databases; -- 创建数据库
create database 数据库名 charset=utf8;
-- 创建淘宝数据库
create database taobao;
-- 创建淘宝数据库并指定编码
create database taobao charset=utf8; -- 查看创建数据库的语句
show create database school
3.使用数据库taobao数据库
-- 使用数据库
use school; -- 显示数据库中所有的表
show tables; --删除数据库
drop database school;
4.数据表的基本操作
-- auto_increment :自动增长
-- not null :表示不为空
-- primary key :表示主键
-- default :默认值
-- 查看当前的数据库中所有的表
-- show tables; -- 创建students数据表
create table students(
id int unsigned not null auto_increment primary key,
name varchar(50) not null default "张三",
age tinyint unsigned not null default 18,
high decimal(5,2) not null,
gender enum("男", "女", "保密")default "保密",
cls_id int unsigned not null
); -- 插入一条数据到students表中
insert into students values(0, "mike", 18, 145,"保密",2) -- 查询students表中的所有的数据
select * from students; -- 查看创建表的语句
show create table students; -- 删除表
drop table students; -- 查看表的字段
desc students; -- 添加表的字段
alter table students add birth datetime; -- 修改字段:不改变字段名字
alter table students modify birth date; -- 修改字段:不重命名版
alter table students change birth birthday date default "2020-01-01"; -- 删除字段
alter table students drop cls_id; -- 插入数据 insert into 表明 value(...)
-- 主键可以用 0 null default来占位
insert into students values(null, "lily", 22, 168, 2, "1990-01-01"); -- 部分插入
insert into students(high) values(172); -- 多行插入
insert into students(name, high) values("李四", 178),("老王", 1.44);
-- 多行插入全部数据
insert into students values(null, "lily", 23, 173, 2, "1990-01-01"), (null, "xiao", 22, 189, 2, "1990-02-03"); -- 修改表
-- 修改全部年龄
update students set age= 30;
-- 修改指定id的年龄
update students set age=28 where id=1; --查询表的内容
select * from students; -- 定条件查询
select * from students where id=2;
select * from students where id>=1 and id<=3; --查询指定的列
select id, name from students where id>=1 and id<=3;
select name, id from students where id>=1 and id<=3; -- 可以用as来为列表指定别名(显示出来的名字就是指定的名字)
select name as 姓名, id as 学号 from students where id>=1 and id<=3; -- 物理删除
delete from student where id=6; --逻辑删除(用新的字段作为条件限制显示信息)
alter table students add is_delete bit default 0;
-- 把id=1的is_delete改为1
update students set is_delete=1 where id=1;
-- 查询然后条件限制为is_delete=0 就可以隐藏数据
select * from students where is_delete=0;
5.数据表的查询操作
-- 查询所有字段
select * from students; -- 查询指定字段
select name, age from students; -- 给字段起别名(用别名显示)
select name as 姓名, age as 年龄 from students; -- 从指定的表中寻找指定的字段
select students.name, students.age from students; -- 用as起别名再用别名调用字段
select s.name, s.age from students as s; -- 利用distinct字段消除重复行
select distinct gender from students; -- 条件查询(比较运算符)
select * from students where age>19;
select * from students where age<19;
select * from students where age!=18; -- 条件查询(逻辑运算符)
select * from students where age>=17 and age<=27;
select * from students where age>=13 or high>=159;
select * from students where not(age<=17 and gender=2); -- 模糊查询
-- 查询以"李"开头的所有名字
select * from students where name like "李%";
-- 查询以"王"字结尾的所有名字
select * from students where name like "%王";
-- 查询有"三"的所有名字
select * from students where name like "%三%";
-- 查询有两个字的名字
select * from students where name like "__";
-- 查询有三个字的名字
select * from students where name like "___";
-- 查询至少有两个的名字
select * from students where name like "%__%"; -- 空判断is null
select * from students where high is null;
6.数据表内数据的排序
-- order by 字段 查询改字段内的的排序
-- asc从小到大排序,默然从小到大
-- desc 从大到小排序
select * from students where (age between 18 and 26)and gender=2 order by age; -- 查询students表中,年纪17到30岁的女性 身高从高到矮
select * from students where (age between 17 and 30) and gender=2 order by high desc; -- order by 多个字段
-- 查询students表中,按high 降序, age升序
select * from students where(age between 17 and 37) and gender=2 order by high desc ,age asc;
7.数据表的集合函数
-- 聚合函数
-- count(*)统计列数,count(字段)一样
select count(*) from students where gender=2; -- 最大值,最小值,求和,平均
select max(age), min(age),sum(age),avg(age) from students;
8.分组
-- group by 按照性别分组
select gender from students group by gender; -- 在students表中,计算每个性别的人数
select gender, count(*) from students group by gender; --在students表中,通过性别分组显示名字
select gender, group_concat(name) from students group by gender; -- group by + having :用来分组查询后指定一些条件的查询结果
select gender,count(*) from students group by gender having count(*)>2;
9.分页
-- 查询前3行女生的信息
select * from students where is_delete=0 limit(n-1)*m,n
select * from students where gender=2 limit 0,3;
10.连接查询
-- 先建立一个班级表
-- 内连接查询班级表和学生表
select * from students inner join classes on students.cls_id=classes.id; -- 左连接查询班级表和学生表
select * from students as s left join classes as c on c.cls_id=c.id; -- 右连接查询班级表和学生表
select * from students as s right join classes as c on s.cls_id=c.id;
11.自关联
-- 表中的某一列,关联表中的另一列,这就是自关联
12.子查询
-- 在一个select语句中,嵌入另外一个select语句,那么嵌入的select语句被称为子查询语句
-- 子查询是嵌入到主查询中
-- 子查询是辅助主查询的,要么充当条件,要么充当数据源
-- 子查询是可以独立存在的语句,是一条完整的 select 语句 -- 标准子查询
select * from students where age > (select avg(age) from students); -- 列级子查询
select name from classes where id in (select id from students); -- 行级子查询
select * from students where (height,age) = (select max(height),max(age) from students);
13.视图
-- 有个查询结果,这个结果表作为创建视图基础,这个结果中不能出现同名字段
select g.id, g.name, c.name as cate_name, b.name as brand_name, g.price
from goods as g inner join goods_brands as b on g.brand_id=b.id inner join
goods_cates as c on c.id=g.cate_id; -- 新建了一个视图,这个视图它是一个虚拟表,这个表字段是原表字段的引用,可以简单理解为软链接
create view v_info as select g.id, g.name, c.name as cate_name, b.name as brand_name, g.price
from goods as g inner join goods_brands as b on g.brand_id=b.id inner join
goods_cates as c on c.id=g.cate_id; -- 删除视图
drop view v_info
14.事务
1.原子性
一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性 2.一致性
数据库总是从一个一致性的状态转换到另一个一致性的状态。(在前面的例子中,一致性确保了,即使在执行第三、四条语句之间时系统崩溃,支票账户中也不会损失200美元,因为事务最终没有提交,所以事务中所做的修改也
不会保存到数据库中。) 3.隔离性
通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。(在前面的例子中,当执行完第三条语句、第四条语句还未开始时,此时有另外的一个账户汇总程序开始运行,则其看到支票帐户的余额并没有被减去200美元。) 4.持久性
一旦事务提交,则其所做的修改会永久保存到数据库。(此时即使系统崩溃,修改的数据也不会丢失。) -- 开启事务
begin;
start transaction; -- 提交事务
commit; -- 回滚事务
rollback;
15.索引
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。 更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度(创建索引会缩短执行的时间) -- 查看索引
show index from 表名; --创建索引
create index 索引名称 on 表名(字符段名称(长度)) --删除索引:
drop index 索引名称 on 表名; --查询
--开启运行时间
set profiling=1; --查看执行时间
show profiles;
MySQL基本操作命令的更多相关文章
-
MySQL基础操作命令
MySQL基础操作命令 1. 查看MySQL进程 ps -ef|grep mysql |grep -v grep 2. 查看MySQL端口 ss -lnt | grep 3306 3. MySQL的启 ...
-
python3笔记二十四:Mysql数据库操作命令
一:学习内容 Mysql操作命令:启动服务.停止服务.连接数据库.退出数据库.查看版本.显示当前时间.远程连接 数据库操作命令:创建数据库.删除数据库.切换数据库.查看当前选择的数据库 表操作命令:查 ...
-
MYSQL数据库------操作命令笔记
一.数据库连接 * 连接数据库命令(前提需要安装mysq ): mysql -h hostIp -u userName -pPassWord 二.数据库操作 * 查看所有数据库: show datab ...
-
linux mysql 相关操作命令
1.linux下启动mysql的命令:mysqladmin start/ect/init.d/mysql start (前面为mysql的安装路径) 2.linux下重启mysql的命令:mysqla ...
-
Linux mysql常用操作命令
原文:http://blog.csdn.net/lifuxiangcaohui/article/details/46375931 1.linux下启动MySQL的命令:mysqladmin start ...
-
MYSQL日常操作命令再熟悉
1,创建用户及密码: CREATE USER 'user'@'%' IDENTIFIED BY 'password'; 2,创建数据库: create database PDB_chengang de ...
-
MySQL 数据库操作命令汇总
此文全部都是基本的数据库语言 1.登陆到mysql >mysql -h hostname -u username -p 然后等待系统提示输入密码即可登陆.如果想在登陆的时候就选择好数据库,可以使 ...
-
mysql常用操作命令
本章内容:(引用原文:http://www.cnblogs.com/suoning/p/5769141.html) 查看\创建\使用\删除 数据库 用户管理及授权实战 局域网远程连接法 查看\创建\使 ...
-
Windows下Mysql常用操作命令
以下命令中的服务启动及停止需要使用以管理员身份运行cmd.exe. 1.启动Mysql服务:net start [mysql服务名].示例: net start mysql57 结果: 2.停止Mys ...
随机推荐
-
Codeforces Round #260 (Div. 2)
A. Laptops 题目意思: 给定n台电脑,第i台电脑的价格是ai ,质量是bi ,问是否存在一台电脑价格比某台电脑价格底,但质量确比某台电脑的质量高,即是否存在ai < aj 且 bi & ...
-
svn比对
svn版本管理, 先要把你项目添加到svn版本管理中,添加完之后,文件夹就有一个绿色的勾,已经被svn进程管理了. 文件夹里面,每一层级,都有一个.svn文件夹,这个很重要,就是靠这个存放原有的文件, ...
-
Java中Thread类的start()和run()的区别
1.start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码. 通 过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪 ...
-
cocos2dx-lua调用C++
文参考:https://www.cnblogs.com/xiaonanxia/p/4987856.html 上面的文章是IOS版教程,用4部分说明原理,1部分说操作步骤. 这里用window VS20 ...
-
Log4J从基础到应用
1.API中核心的三个接口(org.apache.log4j) Class Logger This is the central class in the log4j package. Most lo ...
-
[AC自动机][学习笔记]
用途 AC自动机适用于一类用多个子串在模板串中匹配的字符串问题. 也就是说先给出一个模板串,然后给出一些子串.要求有多少个子串在这个模板串中出现过. KMP与trie树 其实AC自动机就是KMP与tr ...
-
自动化测试工具Katalon简单使用
前一段时间接触了下Katalon,当时只是简单用了下,今天看到Katalon给发邮件,发现都忘记了,因此重新学习并记录下来 Katalon是在Selemium相同的内核上构建起来的一个自动化测试工具 ...
-
LeetCode--No.003 Longest Substring Without Repeating Characters
Longest Substring Without Repeating Characters Total Accepted: 167158 Total Submissions: 735821 Diff ...
-
[luogu4551][POJ3764]最长异或路径
题目描述 给定一棵n个点的带权树,结点下标从1开始到N.寻找树中找两个结点,求最长的异或路径. 异或路径指的是指两个结点之间唯一路径上的所有边权的异或. 分析 处理出各个节点到根节点的异或距离,然后我 ...
-
JavaScript内置对象——Math对象
这几天在刷leetcode的时候用到了一些Math对象的知识,故作一下总结~ JavaScript中的Math对象也是一个常见的内置对象,然而与String等其它常见对象不同,Math对象没有构造函数 ...