MySQL数据库常见命令

一、MySQL数据库是什么?

数据库有很多种,按照时间发展来,大致分为网状形数据库、层次型数据库、关系型数据库、面向对象数据库。其中关系数据库是理论最成熟,应用最广泛的数据库。目前关系型数据库有 Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL。

其中MySQL具有功能强使用简单管理方便运行速度快可靠性高安全保密性强等优点(而且是免费的。。。),使用得很广泛。

二、SQL语句是什么?

SQL的全称是 Structured Query Language ,也就是结构化查询语言。是操作和检索关系数据库的标准语言,标准的SQL语言可用于操作任何关系型数据库

通常SQL语句可分为:

查询语言:主要有select关键字完成,查询语言是SQL语言里功能最多的语句
DML语句:数据操作语言,主要由 insertupdatedelete关键字完成
DDL语句:数据定义语言,主要由createalterdroptruncate四个关键字构成
DCL语句:数据控制语言,主要由 grantrevoke两个关键字完成,一般不用程序员完成,用的很少
事务控制语句:主要由commitrollbacksavepoint三个关键字完成

三、关于数据库的基本命令

登录数据库(为了安全,语句中的密码也可以先不写)

mysql  -u  用户名  -p  密码 ;

用户创建新的数据库

create  database  数据库名;

用户删除指定数据库

drop  database  数据库名;

使用指定数据库

use    数据库名;

查看数据库的所有表(先使用数据库)

show  tables;

查看表结构

desc  表名

四、DDL语句

DDL语句是操作数据库对象的语句,可以创建(create)、删除(drop)和修改(alter)数据库对象,而最基本的数据库对象是表(数据库不仅仅只有表)

1. 要创建一张 test 表
编号 姓名 年龄 性别

建表语句,需要约束,以保证数据的完整性,后面说,这里只是定义了表的结构,定义简单的类型,还没添加数据

create table test(
	-- 可以有多个列定义,每列逗号分隔,最后一列没有
	test_id      int , --定义第一列名为 test_id,为 int 类型
	test_name    varchar(20),--第二列名为 test_name,长度不超过20的字符串
	test_age     int,--第三列名为 test_age ,为 int 类型
	test_gender  char(1)--第四列名为 test_gender ,字符串
	......
);
2. 修改表结构的语法

使用alert table ,可以增加列修改列删除列重命名等操作

增加列定义语法:

alert table test add(
	-- 可以有多个列定义
	test_add  varchar(50)
	......
);

修改列定义语法:

--将test表中的 test_id 列该成 int 类型的 test_day 列
alert table test test_age modify test_day int;

删除列定义语法:

--将test表中的 test_day 列删除
alert table test drop test_day;

数据表的重命名语法:

--将 test 表中的改名为 demo 表
alert table test rename to demo;
  1. 删除表的语法
    删除表的语法为:drop table 表名
--例如删除 demo 表
--drop table  表名
drop table demo;

五、数据库的约束

在创建数据表时,不仅仅是向前面那样指定列定义,具备数据表的基本功能,还需要增加约束,约束是在表上强制执行数据的校验规则,可以更好的保证数据表里数据的完整性,而且,当多张表之间存在依赖关系时,还可以保护相关的数据不被删除

5种完整性约束(大部分数据库都支持),可以在建表的时候指定,也可以在建表完成后再进行修改表操作,完成增加约束:

NOT NULL非空约束,指定某列不能为空
NUIQUE唯一约束,指定某列或者几列组合不能重复
PRIMARY KEY主键,指定该列的值可以唯一的标识该条记录
FOREIGN KEY外键,指定该行记录从属主表中的一条记录,用于保证参照的完整性
CHECK检查,指定一个布尔表达式,用于指定对应列的值必须满足该表达式

例如重新创建上面的 test 表

create table test(
	-- 可以有多个列定义
	test_id  int  primary key,   --主键(唯一,默认非空)	
	test_name  varchar(20) unique,  --唯一(该表数据名字不能重复)
	test_age  int not null,    --非空
	test_gender  char(1)--第四列名为 test_gender ,字符串
	check(test_age>0) --CHECK约束 
	......
);

外键约束,下面创建教师表和学生表

--先创建主表
create table teacher(
	t_id int auto_increment, --自动增长
	t_name varchar(30) ,
	primary key (t_id) --这种方式同样可以设置主键
);
create table student(
	s_id in auto_increment primary key,
	s_name varchar(30),
	--外键格式:foreign key(外键列列名) references 主表名(主表的主键)
	foreign key(mysql_teacher) references teacher(t_id)
);

六、DML语句是什么?

DDL操作的是数据库对象,而DML操作的是数据表里的数据,可以完成:插入新数据、修改数据、删除数据

1. insert into 语句

往这张表插入数据(“1”,“张无忌”,“24”,“男”)

编号 姓名 年龄 性别

语法格式:

--insert  into 表名(列1,列2...)value(列1值,列2值...);
insert into test(t_id,t_name,t_age,t_gender) value("1","张无忌","24","男");

或者可以这样写,省略列名,但是后面的值注意要和表的列一致

insert into test value("2","叶孤城","31","男");

结果为

编号 姓名 年龄 性别
1 张无忌 24
2 叶孤城 31
2. update 语句

用于修改数据表的记录,通过使用 where 限定条件,省略 where 条件会将该表该列同时修改,比如将上表的张无忌年龄改成30

语法格式为:

--update 表名 set 列名=30 where 条件;
update test set t_age=30 where t_id=1;
3. delete from语句

用于删除指定数据表的记录,不需要指定列名,因为是整行删除,后面可以用 where 指定记录,当不写where条件时,整张表数据都被删除

语法格式为:

--删除test表中 t_id等于1的记录
--delete from 表名  [ where  条件 ]
delete from test  where t_id=1;

七、功能最丰富的查询语句

select语句的功能就是查询数据,也是SQL语句里面功能最丰富的语句,select不仅可以单表查询,还可以多表查询子查询

1. 单表查询

查询语句:

--查询 test表所有age大于20的数据的id和名字
select t_id,t_name from test where t_age > 20;
--查询 tes 表所有 age大于20的所有数据
select * from test where t_age > 20;
--将在test表中查询到的 t_name 拼接上 "拼接的内容"
select concat(t_name,"拼接的内容") from test;
2. 分组查询

查询语句:

--将查询到的数据按照gender分组
select * from student group by gender;
3. 多表查询

查询语句:

--查询 teacher(教师表)和student(学生表)为男性的数据
select * from teacher,student where gender="男";

去除重复行:distinct

--就算有同名,也只会显示一个名字
select distinct nane from teacher where gender="男";

自然连接查询:natural join (自然连接查询会以两表中同名列作为连接条件

--查询两张表中,学生表的全部和教师表的名字,语句中的student s ,用于简写,前面可以用 s 表示student表,因为先运行后面的代码
select s.*,t.t_name from student s natural join teacher t;
4. 子查询

子查询其实就是在查询语句中嵌套另外一个查询,子查询可以多层嵌套

--将(select * from teacher)当成数据表来用
select * from (select * from teacher) where age>20;
发布了5 篇原创文章 · 获赞 7 · 访问量 195

猜你喜欢

转载自blog.csdn.net/tanghaixu/article/details/105585065