mysql基础命令

mysql基础

数据库其实就是一个存储数据的地方,但不要小看这个“地方”,公司最看重的就是数据,所以任何时候,数据库里的数据对一个公司起到了生死存亡的至关重要的作用。
为此,数据库的管理有专门的相关人士进行。其中也分多个级别:
DBA:数据库管理员
运维DBA 开发DBA
初级DBA:安装,部署,调试服务器,怎删改查
中级DBA:高可用,高性能,高并发数据的架构,解决相关的业务
高级DBA:调优,开发提出指导意见,安全保障
其中,最高级的DBA是需要运维和开发一起的,相应的门槛较高,至少需要五年的工作经验,且熟悉运维和开发的细节。
数据库类型
数据库分为关系型数据库和非关系型数据库,一般,企业采取的都是非关系型数据库,例如:redis,memcached,mongodb,elasticsearch等,其中redis是企业最常用的一个数据库。
关系型数据库有熟知的SQL SERVER(WINDOWS),ORACLE(甲骨文),DB2(IBM),mysql
他们都是使用sql语言来操作的。

sql、DB、DBMS、DBA分别是什么,他们之间的关系?

DB: 
	DataBase(数据库,数据库实际上在硬盘上以文件的形式存在)

DBMS: 
	DataBase Management System(数据库管理系统,常见的有:MySQL Oracle DB2 Sybase SqlServer...)

SQL: 
	结构化查询语言,是一门标准通用的语言。标准的sql适合于所有的数据库产品。
	SQL属于高级语言。只要能看懂英语单词的,写出来的sql语句,可以读懂什么意思。
	SQL语句在执行的时候,实际上内部也会先进行编译,然后再执行sql。(sql语句的编译由DBMS完成。)

DBMS负责执行sql语句,通过执行sql语句来操作DB当中的数据。
DBMS -(执行)-> SQL -(操作)-> DB
DBA:数据库管理员

数据库编译安装

数据库的安装一般有yum安装,源代码安装,和二进制安装。yum安装是最少应用到实际状况下的,因为yum安装并不安全,而且并不能自主选择安装路径。现实情况下,面向对象的软件,如apache,nginx,tomcat,mysql等,通常都是需要源代码安装的。
二进制安装则是将编译完成的安装包进行初始化数据,既可进行完成安装。
mysql安装步骤:
1)首先需要安装完cmake,而后解压mysql包之后进行编译安装:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all

2)cp support-files/my-default.cnf /etc/my.cnf进行配置文件重置。也可以手动在/etc下创建my.cnf文件,编写如下内容:
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/opt/data
server_id=1
port=3306
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
prompt=mysql [\d]>

企业中多为自己配置mysql文件,其中datadir项不建议将数据和数据库放在一起,防止一损俱损的情况下发生。

3)初始化数据,即在已经安装好的数据库中输入以下代码:
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/opt/data

4)echo “PATH=$PATH:/usr/local/mysql/bin” >> /etc/profile将其添加至环境变量,以方便可以随时开启数据库

5)cp support-files/mysql.server /etc/init.d/mysqld以便可以过服务端口来进行启动
6)chkconfig --add mysqld&&service mysqld start
7)手动刷新配置文件source /etc/profile
8)添加可以启动的管理账号:mysqladmin -u root password ‘123456’
9)而后即可通过mysql -uroot -p输入密码来进入数据库。

数据库命令

查看命令
1、查看所有库
show databases;

2、创建库
create database xiaoyang;

3、进入某个库
use 库名;

4、导入sql数据
source 后续为.sql文件

5、删除数据库
drop database 数据库名;

6、查看表格
desc 表格名(需在库里面);

7、查看表格中的数据
select * from 表格名;

8、查看当前使用的是哪个库
select database();

9、查看mysql的版本号
select version();

10、查看表格数据中的某一项
select 表格数据名字,表格数据名字 from 表格名字;

11、退出
quit,exit

登陆命令

1、tcp/ip登录(本机,远端)
[root@my ~]# mysql -uroot -p -h 127.0.0.1 -P 3306
2、socket登录(本机)
[root@my ~]# mysql -uroot -p -S /tmp/mysql.sock
3、授权
GRANT ALL ON . to ‘root’@’%’ identified by ‘123456’;
flush privileges;
创建
学生信息包括:
学号、姓名、性别、班级编号、生日
学号:bigint
姓名:varchar
性别:char
班级编号:int
生日:char

	create table t_student(
		no bigint,
		name varchar(255),
		sex char(1),
		classno varchar(255),
		birth char(10)
	);

create table class1 (‘学号’ int,‘姓名’ varchar(255) not null);
删除数据表:drop table class;

在数据表格插入数据

如果数据表格没有做相应的空值允许条件,那么就可以直接输入以下命令:
insert into class1 values(1,‘小洋’);每一个值对应每一个设定的键。

如果数据表格做了响应的空值条件,那么需要先指明出对应的键(按顺序),在依顺序输入值。
insert into class1(学号,姓名) values(2,‘小狼’);

如果数据表格其中有允许键输入的值为空,即允许null出现,可以指明单独键入的值而忽略另外的键
insert into class1(姓名) values(‘小雨’);
在数据表格修改数据
复制表格
create table 创建表名 as select * from 已有表名;

修改数据

update HR set键 = 修改的值 where 索引出来的键=位置;
update HR set EMPNO = 1000 where EMPNO=7369;
如果不输入索引,则会全部修改

将部门10的LOC修改为SHANGHAI,将部门名称修改为RENSHIBU
update dept1 set loc = ‘SHANGHAI’, dname = ‘RENSHIBU’ where deptno = 10;

删除表格某数据的语法格式:
delete from 表名 where 条件;

注意:没有条件全部删除。

删除10部门数据?
	delete from dept1 where deptno = 10;

删除所有记录?
	delete from dept1;

怎么删除大表中的数据?(重点)
	truncate table 表名; // 表被截断,不可回滚。永久丢失。

约束

什么是约束?常见的约束有哪些呢?
在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的
合法性、有效性、完整性。
常见的约束有哪些呢?
非空约束(not null):约束的字段不能为NULL
唯一约束(unique):约束的字段不能重复
主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称PK)
外键约束(foreign key):…(简称FK)
检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束。

非空约束 not null
drop table if exists t_user;
create table t_user(
id int,
username varchar(255) not null,
password varchar(255)
);
insert into t_user(id,password) values(1,‘123’);
ERROR 1364 (HY000): Field ‘username’ doesn’t have a default value

insert into t_user(id,username,password) values(1,'lisi','123');

内外链接
内连接可以认为是两张表拼接在一起,他们的相同内容才会进行显示,外连接则是两张表拼接在一起,一张做主表,一张做附表,主表的内容会尽数显示,而附表哪怕不是相同内容也可以根据具操作参数进行显示。

笛卡尔积现象:
当两张表进行连接查询的时候,没有任何条件进行限制,最终的查询结果条数是两张表记录条数的乘积。

内连接:
select
a.ename ‘员工’, b.ename ‘领导’
from
emp a
join
emp b
on
a.mgr = b.empno;

外连接:(左外连接/左连接)
select
a.ename ‘员工’, b.ename ‘领导’
from
emp a
left join
emp b
on
a.mgr = b.empno;

// outer是可以省略的。
select
a.ename ‘员工’, b.ename ‘领导’
from
emp a
left outer join
emp b
on
a.mgr = b.empno;

外连接:(右外连接/右连接)
select
a.ename ‘员工’, b.ename ‘领导’
from
emp b
right join
emp a
on
a.mgr = b.empno;

去重

select distinct job from emp;

案例:统计岗位的数量?
select count(distinct job) from emp;

±--------------------+
| count(distinct job) |
±--------------------+
| 5 |
±--------------------+

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值