MySQL數據庫基本管理-001


MySQL數據庫
============
MySQL (RHEL5/6)
MariaDB  ( RHEL7 )
數據遷移  mysql ---> MariaDB
-------------------------
1.MySQL數據庫服務安裝:
# rpm  -q  mysql-server || yum -y  install  mysql-server
# service  mysqld   status |start|stop
# chkconfig  mysqld on

2.主配置文件:/etc/my.cnf
  服務名/進程名: mysqld
  進程所有者/組: mysql/mysql
  默認監聽端口號:3306
  傳輸協議:tcp
  數據庫目錄:/var/lib/mysql/
==============
3.安裝官網下載的mysql軟件提供數據庫服務
# /etc/init.d/mysqld  stop
# rpm -e  --nodeps  mysql-server   mysql
# rpm -q mysql-server   mysql
# rm  -rf /etc/my.cnf
# rm -rf /var/lib/mysql/*
# tar -xvf MySQL-5.6.rpm.tar
# rpm  -Uvh MySQL-*.rpm
# service  mysql start
# netstat -untlap  | grep mysql
# cat /root/.mysql_secret               //初始密碼存放位置
# mysql -hlocalhost -uroot  -pCxifrkkA
mysql>set password  for  root@"localhost"=password("123");  //首次進入數據庫需要更改密碼
mysql>quit;
# mysql -hlocalhost -uroot  -p123
mysql>show databases;
===============
4.把數據存儲到數據庫服務器上的過程?
4.1  連接數據庫服務器    mysql  -hlocalhost  -uroot  -p123
4.2  選擇庫    use  庫名;
4.3  創建表    create  table ...
4.4  向表中插入記錄   insert  into ...
4.5  查詢記錄
4.6  斷開連接  quit
-------------------------------
**數據以文件的形式存儲在數據庫目錄下
**庫或表都是以文件的形式存儲在數據庫目錄下的
===============

5.數據庫服務的基本使用?

SQL命令使用規則:            
                 命令不區分字母大小寫,
              \c 可廢棄當前編寫錯的操作
                 命令必須以;結尾
                 命令不支持tab鍵補齊

庫名的命名規則:             
                具有唯一性
                區分字母大小寫
                只能使用數字、字母  _
                不能是純數字
                不要使用特殊字符和關鍵字?* .  
===============

6.數據庫管理基本命令:
# mysql [-h服務器 -u用戶名 -p密碼 數據庫]
# quit 或 exit 退出

show  databases;           //查看服務器上已有的庫
select  database();        //查看當前所在的庫
show  tables;              //顯示當前所在庫下已有的表
select * from 表名;              //查看錶所有的記錄
select 字段名列表 from 表名;     //查看錶記錄
desc  表名;                        //查看錶結構
use  庫名;                        //切換庫

create  database  庫名;           //創建新數據庫
create  table  [庫名.]表名(
字段名   類型(寬度)  約束條件,
字段名   類型(寬度)  約束條件,
字段名   類型(寬度)  約束條件
);                                     //創建表
insert  into  表名  values();   //向表中插入記錄

drop  database  庫名;  //刪除已有的庫
drop   table  表名;    //刪除表
delete  from 表名;     //刪除表中的所有記錄
===============

7.mysql數據庫類型
字符類型  (名字  專業  家庭地址)
數值類型   (工資 成績 年齡 身高 體重)
日期時間類型  (生日  註冊時間 上課時間   約會   出生年份)
枚舉類型  set   enum(性別  愛好  )字段的值只能在列舉的範

7.1 字符型(名字  專業  家庭地址)
char      定長  255
varchar   變長  65532  //根據存儲數據的多少開闢存儲空間
大文本類型  大於65535時使用
blob/text

-----------------------------
7.2 數值類型

整數類型 (工資 成績 年齡 身高 體重)
根據存儲數值的範圍又分爲:  
                    有符號         無符號
tinyint    微小整型    -128~127        0~255
smallint   小整型      
MEDIUMINT  中整型
int (默認11字符)大整型   -2^31~~2^31-1   0~2^32-1
bigint     極大大整型

----------------------------
7.3 浮點型 (帶小數點的數)
float(m,n)    單精度
double(m,n)   雙精度

整數位.小數位  總位數
n  表示總位數
m 表小數位位數

decimal(M,D) 其中M爲有效位數,D爲小數位

***
注意):數值類型的寬度與字符類型寬度的區別?
***數值不夠指定寬度時,在左邊填空格補位
數值類型的寬度是顯示寬度,不能夠控制給字段賦值的大小,字段值的大小由字段類型決定。
1)zerofill   填0代替空格補位
2)unsigned   無符號(正數)

--------------------------
7.4.1 日期時間類型(生日  註冊時間 上課時間   約會   出生年份)
year   (佔用1字節)年    YYYY    2016
date  (佔用4字節)日期  YYYYMMDD    20161117
time  (佔用3字節)時間  HHMMSS        172358  
datetime(佔用8字節) 日期時間  YYYYMMDDHHMMSS
範圍:1000-01-01    --->   9999-12-31
timestamp (佔用4字節)日期時間  YYYYMMDDHHMMSS
範圍:1970-01-01    --->   2038-01-19

練習:
mysql> create table t16(name char(10), age tinyint(2) zerofill unsigned, money float(7,2), s_year year, birthday  date, up_class time, meeting  datetime);

mysql> insert into  t16  values("zhangbaoli",21,20000,1998,20161221,083000,20161218203000);


***
注意:
1):datetime 與 timestamp 的區別?
當未給TIMESTAMP字段賦值時,自動以當前系統時間賦值,而DATETIME字段默認賦值爲 NULL.
2):year年份處理?
當只用2爲數字賦值時,01-69視爲2000~2069,而70-99視爲1970~1999.


練習:
mysql> create table t17(time1 datetime,time2 timestamp);

mysql> insert into  t17   values(20161117174928,20161117174928);
mysql> insert into  t17(time1) values(20181117174929);
mysql> insert into  t17(time2)  values(20151117174929);

------------------------------

7.4.2 使用時間函數獲取時間給日期時間類型字段賦值?
now()    獲取調用此函數時的系統日期時間
year()   獲取年份
date()   獲取日期
month()  獲取月份
day()    獲取日期(幾號)
time()   獲取時間
sleep(N)  休眠N秒
sysdate() 獲取時間
curdate() 獲取當前系統時間
curtime() 獲取當前系統時刻

練習:
mysql> select now();
mysql> select  year( now() );
mysql> select  year( 20191224 );
mysql> select  date( now() );
mysql> create  table  t15(name char(10),age tinyint(2) unsigned,pay float(7,2),up_class time,birthday date,s_year year,
meetting  datetime);
mysql> insert into  t15  values("lili",21,18800.88,093000,20171008,1995,now());
mysql> insert into  t15  values("jerry",29,28800.88,now(),now(),now(),now());
mysql> insert into  t15  values("tom",21,18800.88,time(20171224201818),date(20171224201818),year(now()),now());

------------------------------
7.5 枚舉類型  set   enum(性別  愛好)字段的值只能在列舉的範
圍內選擇:
enum(值1,值2,值N)      只能在列舉的範圍內選擇一個值
set(值1,值2,值N)       能在列舉的範圍內選擇一個或多個值

練習:
mysql> create  table  t21(name char(10),age tinyint(2) unsigned,pay float(7,2),birthday date,sex enum("boy","girl","no"),likes set("book","film","game","it"));
mysql> insert into t21 values("bob",21,21000,20161118,"boy","book,it");
mysql> insert into t21 values("alic",23,11000,20161218,"man","book,it,football");
mysql> insert into t21 values("lucy",18,28000,20160918,2,"film,game");


================
約束條件:(限制如何給字段賦值)
作用:當向表中插入新記錄時,限制如何給字段賦值,若建表時不設置約束條件,使用mysql的默認設置。

null       允許賦null值 默認設置
not null   不允許賦null值
key        索引類型
default    設置默認值,缺省爲null

字段額外設置 :  字段的值自動增長   字段描述信息

練習:
mysql> create  table  t24(name char(10) not null ,age tinyint(2) unsigned default 24 ,pay float(7,2) ,birthday date,sex enum("boy","girl","no") default "boy",likes  set("book","film","game","it") default "film,game");

mysql> insert into t24  values(null,23,11000,20161218,"man","book,it");
mysql> insert into t24  values("null",23,11000,20161218,"man","book,it");
mysql> insert into t24  values("",23,11000,20161218,"man","book,it");
mysql> insert into t24(name,age)   vlaues("lilei",29);
mysql> insert into t24(name,pay,birthday)  values("jerry",12000,20161127);
mysql> insert into t24(name,age,pay,birthday)  values("jerry",31,12000,20161127);

==========================================================

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章