1. 程式人生 > >Mysql基礎(一)

Mysql基礎(一)

基本管理 表結構

####################################################################################
什麽是數據庫:
DB,DataBase
--》數據庫 :依照某種數據模型進行組織並存放到存儲器的數據集合。
DBMS,DataBase Management System
--》數據庫管理系統:用來操縱和管理數據庫的大型服務軟件。
DBS,DataBase System
--》數據庫管理系統:即DB+DBMS,指帶有數據庫並整合了數據庫管理軟件的計算機系統。

常見的數據庫軟件?

關系型數據庫軟件服務軟件(RDBMS):
Oracle(甲骨文):Oracle(商業軟件),Mysql
Microsoft(微軟):SQL Server(商業軟件)
IBM:DB2(商業軟件)
非關系型數據庫服務軟件(NoSQL):(key-values鍵值對類型)
redis mongodb

mysql的特點:
--》適用於中小規模,關系型數據庫
--》跨平臺
--》通過API支持Python/Java/Perl/PHP等語言

應用環境:
LAMP LNMP

#####################################################################################################

一、搭建數據庫服務器:
裝包:Mysql
rpm -qa | grep -i mysql

修改配置文件:
#ls /etc/my.cnf //主配置文件
#ls /var/lib/mysqld //數據庫的存儲目錄
#cat /var/log/mysqld.log //日至文件

啟動服務:
#systemctl start mysqld

查看服務運行狀態:
#netstat -lnpt | grep :3306 //端口號:3306
#ps -C mysqld
#systemctl status mysqld

使用初始密碼登陸數據庫:
#grep password /var/log/mysqld.log
#mysql -hlocalhost -uroot -p密碼 //初始密碼中如果含有特殊字符應該使用單引

二、進入數據庫之後
修改登陸密碼:
#show databases; //提示需要修改密碼才能使用
#alter user root@localhost identified by123456; //提示密碼不符合安全性要求
#set global validate_password_policy=0; //設置只驗證長度
#set global validate_password_length=6; //設置長度默認值為8個字符
#alter user root@localhost identified by123456 //設置成功
#quit //退出

驗證:
#mysql -hlocalhost -uroot -p123456 //登陸成功。

永久設置密碼驗證策略:
#vim /etc/my.cnf
[mysql]
validate_password_policy=0
validate_password_length=6

#####################################################################################

三、sql命令的使用規則:
--》命令不區分大小寫(變量,密碼除外)
--》每條命令以分號結尾
--》不支持Tab補齊
--》\c可廢棄當前編輯錯的操作命令

四、數據庫基本管理:
庫管理:
#mysql -uroot -p123456
#show databases; //查看已有庫
#create database 庫名; //創建庫
#drop database 庫名; //刪除庫
#use 庫名; //使用庫
#select database(); //查看當前所在庫
#show tables; //查看當前庫裏已有的表

建表:
create table 庫名.表名(
字段名 類型(寬度) 約束條件,
字段名 類型(寬度) 約束條件,
...
);
create table gamedb.stuinfo(
name char(10),
age int
);

查看表結構:
desc 庫名.表名;

插入表記錄:
insert into 庫名.表名 values(值列表);
insert into gamedb.stuinfo values(“dcc”,23);

查看表記錄:
select * from 庫名.表名;

刪除表記錄:
delete from 庫名.表名; //刪除所有表中記錄,但表還在

刪除表:
drop 庫名.表名




#####################################################################################################

五、mysql數據類型

支持的數據類型有哪些?
數值類型 字符類型 日期時間類型 枚舉型

1、數值類型:整型,浮點型
根據存儲數值的範圍整型類型分為:
tinyint 1字節 -128~127(有符號) 0~255(無符號)
smallint 2字節 -32768-32767 0~65535
mediumint 3字節
int 4字節
bigint 8字節
//規律:無符號範圍為2的n次方-1,n表示位,1字節為8位
根據存儲數值的範圍浮點型分為:
單精度float(n,m) 4字節
雙精度float(n,m) 8字節
//其中n代表總位數
//m代表小數位的位數

create table t1(
pay float(5,2)
);

inserte into t1 values(199.99); //總位數為5位,小數點後2位

註意:
使用unsigned,表示使用無符號數
輸入整數時,會自動補全小數位
寬度僅是顯示寬度,存數值的大小由類型決定
數值超出範圍,報錯

¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

2、字符類型:
定長:char(字符數)
--》最大長度255
--》不夠指定的字符數在右邊用空格補齊
--》字符數超出設定,無法寫入

變長:varchar(字符數)
--》按照實際大小分配存儲空間
--》字符數超出設定,無法寫入

大文本類型:text/blob
--》字符數大於65535存儲時使用

¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

3、日期時間類型:
年 year YYYY 2017
日期 date YYYYMMDD 20171220
時間 time HHMMSS 155145

日期時間
datetime YYYYMMDDHHMMSS
timestamp YYYYMMDDHHMMSS

datetime與timestamp區別?
當未給timestamp字段賦值時,自動以當前系統時間賦值
當未給datetime字段賦值時,默認賦值為null

使用2位數字給year字段賦值的規律?
01~69為2000~2069
70~99為1970~1999

使用時間函數給日期時間類型的字段賦值。
now():當前時間 year():當前時間的年份 month():當前時間的月份
day():當前時間的天 date():當前時間的年月日 time():當前時間的時分秒

¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

4、枚舉類型:
enum:從給定值集合中取單個值 格式:enum(值1,值2,值N)
set:從給定值集合中取一個或多個值 格式:set(值1,值2,值N)

#########################################################################################

六、約束條件:
null: 允許為空,默認設置
not null: 不允許位空
key: 索引類型
default: 設置默認值,缺省為null

create table t3(
name char(10) not null, //字段名為name,類型為字符類型,寬度為10,設置不能為空
age tinyint unsigned default 23 //字段名為age,類型為微小整數,無符號(不能為負),默認值為23
);

desc t3; //查看表結構
insert into t3(name) values(“dcc”); //插入,僅給name字段賦值
select * from t3; //結果,age字段會取默認值23

####################################################################################

七:修改表結構:
alter table 表名 執行動作;

1、添加新字段:
add 字段 類型(寬度);
add 字段 類型( 寬度) 約束條件;
add 字段 類型( 寬度) 約束條件 first; //插入到第一列
add 字段 類型( 寬度) 約束條件 after 字段名; //插入到指定字段後

2、刪除字段:
drop 字段名;

3、修改字段類型:
modify 字段 類型(寬度) 約束條件;

4、修改字段名:
change 原字段 新字段 類型(寬度) 約束條件; //修改時,保持原始的類型(寬度) 約束條件。

修改表名:
alter table 原表名 rename 新表名;

################################################################################################

Mysql基礎(一)