1?搭建數據庫服務器
2?MYSQL數據類型
3 修改表結構
1?搭建數據庫服務器
1.1 存在mariadb時:
#systemctl status mariadb
#systemctl stop mariadb
#rpm -e --nodeps ?mariadb-libs #不依賴關系卸載
#rm -rf /etc/my.cnf
#rm -rf /var/lib/mysql/*
1.2 新安裝時
[root@ser51 ~]# yum -y install perl-Data-Dumper perl-JSON
[root@ser51 ~]# rpm -Uvh?mysql-community-*.rpm ?
#無論軟件存在與否都執行升級
[root@ser51 ~]# rpm -qa | grep -i mysql
1.3啟動服務
服務名稱:mysqld
端口號:3306
主配置文件:/etc/my.cnf
數據庫目錄:/var/lib/mysql?啟動服務,數據數初始化會生成文件
日志文件:/var/log/mysqld.log
服務腳本:/usr/lib/systemd/system/mysqld.service
1.4 連接數據庫
[root@ser51 ~]# which mysql
/usr/bin/mysql
[root@ser51 ~]# rpm -qf /usr/bin/mysql #詢問文件屬于哪個包
mysql-community-client-5.7.17-1.el7.x86_64
[root@ser50 ~]# mysql -u root -p密碼
[root@ser50 ~]# mysql -h 服務器 -u用戶名 -p密碼 數據庫
查看登錄的初始密碼:
[root@ser51 ~]# grep password /var/log/mysqld.log
登錄:
[root@ser51 ~]# mysql -uroot -p'5;wG)DluZ)#Q' ?#特殊符號用單引
1.5 臨時登錄生效
第一次登錄需要重新設置密碼才能查看數據庫信息
設置全局密碼驗證策略:
mysql> set global validate_password_policy=0;
設置全局變量密碼長度:
mysql> set global validate_password_length=6;
mysql> alter user root@"localhost" identified by "123456" #修改密碼
1.6 全局永久生效
[root@ser51 ~]# vim /etc/my.cnf
[mysqld]
validate_password_policy=0
validate_password_length=6
1.7 數據庫使用命令
SQL指令:
DDL:數據定義語言
DML:數據操作語言
DCL:數據控制語言
DTL:數據事物語言
mysql> select database(); #查看當前所在的庫:
mysql> create database 庫名; ?#創建數據庫
mysql> use 庫名; ?#切換數據庫
mysql> system?ls /var/lib/mysql #不退出操作linux命令
mysql> drop database 數據庫名; ?#刪除數據庫
創建表
mysql> create table 庫名.表名(字段名1 字段類型(寬度) 約束條件, ...);
mysql> alter table 表名 add 字段 類型(寬度); #增加表字段
mysql> drop table 庫名.表名 ??#刪除表
mysql> describe 表名 #查看表內字段(desc)
mysql> insert into 表名 values();
mysql> select * from 表名;
mysql> update 表名 set 字段="新值" where 字段="值";
?
2?MYSQL數據類型
2.1 數值類型
tinyint ?1字節 ?-128~127 ?0~255
int? ? ? ? 4字節
float ???4字節 ??float(m,n) m:總位數 ?n:小數位位數
double ?8字節
2.2 字符類型
定長:char(255) 不寫寬度默認為1
不夠指定字符數時在右邊用空格補齊(會浪費磁盤空間)
變長:varchar ?按數據實際大小分配存儲空間(會消耗CPU資源,每次都會詢問需要的儲存的空間的大小)
大文本類型:text/blob
數值類型的寬度和字符類型的寬度的區別:
字符類型超出就不能寫入數據;
數值類型的寬度是顯示寬度,不能控制給字段賦值的大小,大小由類型本身決定;
?
案例:int類型的寬度
mysql> create table db1.t10(id int zerofill,pay int(3) zerofill);
#不夠字節的用0填充
mysql> insert into t10 values(25,25);
mysql> select *from t10;
+------------+------+
| id ????????| pay ?|
+------------+------+
| 0000000025 | ?025 |
+------------+------+
2.3 日期時間類型
年: ?year ?YYYY ?
日期:date ?YYYYMMDD
時間:time ?HHMMSS
日期時間:datetime/timestamp ??YYYYMMDDHHMMSS
Datetime占8個字節
Timestamp占4個字節
區別:當沒有給兩者分別賦值時,timestamp自動以當前系統時間賦值,而datetime默認為NULL
案例:
create ?table ??t15(
meetting ?datetime,
partty ??????timestamp
);
insert into ?t15 ?values(now(),now());
insert into ?t15(meetting) ?values(20171020091828);
insert into ?t15(partty) ?values(20191020091828);
select ?* from t15;
2.4 時間函數
now() ?獲取調用此函數時的系統日期時間
year() ?date() time() ?day() month()
mysql> select date(now()); #函數可以嵌套
Year的年份處理:默認使用4位數字表示
2位數字時:01~69為2000~2069 ?70~99為1970~1999
2.5 枚舉類型
字段只能在指定的范圍內選擇
格式:
字段名 enum(值1,值2,值N)??單選
字段名 set(值1,值2,值N) ?多選
案例:
create table t21(name char(10),sex enum("boy","girl"),
likes set("film","game","book","food"));
mysql> insert into t21 values("tom","boy","film,game");
mysql> insert into t21 values("hai",2,"film,game");#可以用數字表示
2.6 約束條件
作用:限制如何給字段賦值
NULL:空,不設置默認為空 ?NOT NULL:不允許為空
Key:索引類型
Default:默認設置
Extra:額外設置
案例:查看約束條件(desc)
mysql> create table t22(name char(10) not null,
????-> sex enum("boy","girl") default "boy",
????-> age tinyint(2) unsigned not null default 18,
->likes set("game","food","book","music") not null
default "game,book");
mysql> insert into t22(name) values("tom");
#其他字段沒有寫值,使用默認
mysql> insert into t22 values("jom",1,20,"game,music");
注意:“null” 和 “” 和 null的區別
mysql> insert into t22(name) values("null");
Query OK, 1 row affected (0.04 sec)
mysql> insert into t22(name) values(null);
ERROR 1048 (23000): Column 'name' cannot be null
mysql> insert into t22(name) values("");
Query OK, 1 row affected (0.03 sec)
3 修改表結構
alter table 庫.表 執行動作
3.1 添加新字段
add 字段名 ?類型(寬度);
add 字段名 ?類型(寬度) 約束條件;
add 字段名 ?類型(寬度) 約束條件 first; #添加在第一個
add 字段名 ?類型(寬度) 約束條件 after 字段名; #在...之后添加
add 字段名 ?類型(寬度),add 字段名 ?類型(寬度); #添加多個
案例:
mysql> alter table t21 add mail char(20);#默認添加在字段最后
mysql> alter table t21 ?add id int(4) not null default 0001 first;
mysql> alter table t21 ?add class int(4) not null default 1710 ?after name;
3.2 刪除已有字段
drop?字段名;
3.3 修改字段類型
modify?字段名 類型(寬度) 約束條件;
3.4 修改字段名
change 原字段名 新字段名 ?類型(寬度) 約束條件;
3.5 修改表名
alter table 舊表名 rename (to) 新表名
轉載于:https://blog.51cto.com/13452945/2063383