MySQL基本操作指令及数据类型

数据库(DB):存储数据的仓库
数据库管理系统(DBMS):用来操纵和管理数据库的大型服务软件
数据库系统(DBS):DB+DBMS,带有数据库并整合了数据库管理软件的计算机系统

提供数据库服务的软件:Oracle、DB2、SQL server、MySQL(Mariadb)
(都是关系型数据库,彼此之间能做关联操作)
非关系型数据库:Redis、MongoDB
开源 不等于 免费
开源软件:MySQL
商业软件:Oracle、DB2、SQL server
跨平台:Windows Unix Linux
SQL server只能用在Windows
MySQL开源+跨平台

MySQL的特点:
适合中小型企业的关系型数据库服务器软件
支持多种操作系统
支持多开发语言

二、MySQL服务器
步骤一:准备工作
环境要求:

# rpm -q mariadb 
未安装软件包 mariadb  
# rpm -q mariadb-server 
未安装软件包 mariadb-server  
# rm -rf /etc/my.cnf 
# rm -rf /var/lib/mysql/* 

步骤二:安装软件包

# rpm -Uvh mysql-community-*.rpm 
# yum -y install perl-JSON 
# rpm -Uvh mysql-community-*.rpm    //-U升级安装,可替换冲突文件 
# rpm -qa | grep -i mysql 
# rm -rf *.rpm 

步骤三:启动MySQL数据库服务并设置开机自启

# systemctl start mysqld    
//第一次启动比较慢是因为在做数据初始化,/var/lib/mysql(mysql数据库目录)  

# systemctl enable mysqld                 //设置开机自启 
# ss -ntulp | grep 3306 
# ps -C mysqld 或者 # ps aux | grep mysqld 
# ps aux | grep -i mysql       //进程的所有者、所属组用户都是用户mysql 
# ls /etc/my.cnf

步骤四:连接MySQL服务器,修改密码
没讲数据库用户授权之前,只能自己连接自己,其他主机连不上
格式:mysql -h 数据库服务器IP地址或主机名 -uroot -p密码
1)查看随机生成的root管理密码

# grep 'temporary password' /var/log/mysqld.log   //日志文件 
2018-11-16T02:24:46.229164Z 1 [Note] A temporary password is generated for root@localhost: gtf5owjoSX(k 

2)使用客户端命令mysql连接到MySQL服务器
提示验证时,填入前一步获得的随机密码,验证成功后即可进入“mysql> ”环境

# mysql -hlocalhost -uroot -p'gtf5owjoSX(k' 

用该密码登录到服务端后,必须马上修改密码,不然会报如下错误:
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

修改密码
密码要求其实与validate_password_policy的值有关,默认为1,所以刚开始设置的密码必须符合长度,且必须含有数字,小写或大写字母,特殊字符

mysql> alter user root@"localhost" identified by '123qqq...A'; 
Query OK, 0 rows affected (0.00 sec) 
mysql> quit 
# mysql -hlocalhost -uroot -p'123qqq...A' 
mysql> show databases; 

一、数据库基本管理
1.修改密码策略
如果我们不希望密码设置的那么复杂,需要修改两个全局参数:validate_password_policy与validate_password_length。validate_password_length默认值为8,最小值为4,如果你显性指定validate_password_length的值小于4,尽管不会报错,但validate_password_length的值将设为4
在这里插入图片描述

扫描二维码关注公众号,回复: 11018648 查看本文章
mysql> show variables like "%password%"; 
mysql>set global validate_password_policy=0;      //只验证长度 
mysql>set global validate_password_length=6;    //修改密码长度,默认值是8个字符  
mysql> alter user user() identified by "123456";  //修改登陆密码 
mysql> quit 
# vim /etc/my.cnf                    //在配置文件设置永久有效 
# systemctl restart mysqld 
# mysql -hlocalhost -uroot -p'123456' 

把数据存储到数据库服务器上的过程
连接数据库服务器---->建库-------------->建表-------------->插入记录---->断开连接
类似:(系统文件夹)—>(系统文件)—>(文件里的行)

常用的SQL操作指令:
DDL—数据定义语言(create、alter、drop)
DML—数据操作语言(insert、update、delete)
DCL—数据控制语言(grant、revoke)
DTL—数据事物语言(commit、rollback、savepoint)

库管理命令:
show databases; //显示已有的库
use 库名; //切换库
select database(); //显示当前所在的库
create database 库名; //创建新库
show tables; //显示已有的库
drop database 库名; //删除库

数据库命名规则:
可以使用数字、字母、下划线,但不能纯数字
区分大小写,具有唯一性
不可使用指令关键字、特殊字符

表管理指令:
create table 库名.表名(
字段名1 字段类型(宽度) 约束条件,
字段名2 字段类型(宽度) 约束条件,

字段名N 字段类型(宽度) 约束条件,
);
desc 表名; //查看表结构
select * from 表名; //查看表记录
drop table 表名; //删除表
表命名规则与数据库命名规则一样

记录管理命令:
select * from 表名; //查看表记录
insert into 表名 values(值列表); //插入表记录
update 表名 set 字段=值; //修改表记录
delete 表名; //删除表记录

例:

mysql> show databases; 
mysql> create database studb; 
mysql> use studb; 


 
mysql> show tables; 
mysql> create table studb.stuinfo(name char(10),age int);     //如果在库里面可以直接写表名stuinfo 
mysql> show tables; 
mysql> desc studb.stuinfo; 
mysql> select * from studb.stuinfo; 
 
mysql> insert into studb.stuinfo values("bob",21),("tom",23); 
mysql> select * from studb.stuinfo; 
mysql> update studb.stuinfo set age=19 where name="bob"; 
mysql> select * from studb.stuinfo; 
mysql> update studb.stuinfo set age=18; 
mysql> select * from studb.stuinfo; 
mysql> delete from studb.stuinfo where name="tom"; 
mysql> select * from studb.stuinfo; 
mysql> delete from studb.stuinfo; 
mysql> select * from studb.stuinfo; 
mysql> drop tables studb.stuinfo; 
mysql> show tables; 

设置表使用的字符集
在MySQL表内存储中文数据时,需要更改字符集(默认为latin1不支持中文),以便MySQL支持存储中文数据记录;比如,可以在创建库或表的时候,手动添加“DEFAULT CHARSET=utf8”来更改字符集
例:

mysql> create database studb; 
mysql> use studb; 
mysql> show tables; 
mysql> create table 学生表(姓名 char(3),年龄 int) 
    -> DEFAULT CHARSET=utf8;                  //手工指定字符集,采用utf8 
mysql> insert into 学生表 values ("张三丰",19); 
mysql> select * from 学生表; 

MySQL 数据类型 在这里插入图片描述

整数型:在这里插入图片描述

浮点型:
在这里插入图片描述
例:

mysql> create database db1; 
mysql> use db1; 
mysql> create table t1( 
    -> age tinyint unsigned, 
    -> pay float(7,2) 
    -> ); 
mysql> insert into t1 values(19,28000); 
mysql> select * from t1; 

字符类型:
1.定长:char(字符数) 确定多少个字符,用char
最大长度255字符
2.变长:varchar(字符数) 不确定多少个字符,用varchar
按数据实际大小分配存储空间
3.大文本类型:text/blob
字符数大于65535存储时使用
定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字符‘csdn’外,后面跟六个空格,而varchar就立马把长度变为4了,取数据的时候,char类型的要用trim()去掉多余的空格,而varchar是不需要的,尽管如此,char的存取速度还是要比varchar要快得多,因为其长度固定,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以难免会有多余的空格占位符占据空间,可谓是以空间换取时间效率,而varchar是以空间效率为首位的

例:

mysql> use db1; 
mysql> create table t3( 
    -> name char(3), 
    -> homedir varchar(15), 
    -> email varchar(30) 
    -> ); 
mysql> insert into t3 values  
    -> ("bob","beijing","[email protected]"); 
mysql> select * from t3; 

日期时间类型
日期时间,DATETIME
占用8个字节
范围:1000-01-01 00:00:00.000000~9999-12-31 23:59:59.999999
日期时间,TIMESTAMP
占用4个字节
范围:1970-01-01 00:00:00.000000~2038-01-19 03:14:07.999999
日期,DATE
占用4个字节
范围:0001-01-01~9999-12-30
年份,YEAR
占用1个字节
范围:1901~2155
时间,TIME
占用3个字节 格式:HH:MM:SS
例:

mysql> use db1; 
mysql> create table t4( 
    -> name char(10), 
    -> birthday date, 
    -> start year, 
    -> upwork time, 
    -> party datetime 
    -> ); 
mysql> desc t4; 
mysql> insert into t4 values( 
-> "bob",20181120,1990,083000,20181118203000); 
mysql> select * from t4; 

时间函数: 在这里插入图片描述
关于日期时间字段:当未给TIMESTAMP字段赋值时,自动以当前系统时间赋值,
而DATETIME字段默认赋值为NULL
YEAR年份处理:默认用4位数字表示,当只用2位数字赋值时,
01~69视为2001~2069
70~99视为1970~1999
例:

mysql> use db1; 
mysql> create table t6(meeting datetime,party timestamp); 
mysql> desc t6; 
mysql> insert into t6(meeting) values(20181117095010); 
可以在表名后面加只为哪一个条件赋值,其他的条件就会变成默认的 
mysql> select * from t6; 

枚举类型
1.从给定值集合中选择单个值,ENUM
定义格式:enum(值1,值2,值N)
从给定值集合中选择一个或多个值,SET
定义格式:set(值1,值2,值N)
例:

mysql> use db1; 
mysql> create table t5; 
mysql> create table t5( 
    -> name char(10), 
    -> hobby set("eat","sleep","game","film"), 
    -> sex enum("boy","girl","no") 
    -> ); 
mysql> desc t5; 
mysql> insert into t5 values("bob","sleep","boy"); 
mysql> select * from t5; 
发布了24 篇原创文章 · 获赞 2 · 访问量 1109

猜你喜欢

转载自blog.csdn.net/Kammingo/article/details/104982862