1. 程式人生 > >mysql 數據庫的基本操作1

mysql 數據庫的基本操作1

MySQL

mysql數據庫管理 day01
相關概念問題
數據庫介紹? 存儲數據的倉庫

數據庫服務都那些公司在使用?
購物網站 遊戲網站 金融網站

數據服務存儲的是什麽數據?
帳號信息 對應的數據信息

提供數據庫服務的軟件有那些?
開源軟件 mysql 、 mongodb 、 redis
商業軟件 oracle 、 db2 、 SQL SERVER

軟件是否跨平臺? Linux Unix Windows

軟件包的來源: 官網下載 使用操作系統安裝光盤自帶軟件包

mysql軟件介紹? mysql mariadb
關系型數據型軟件: 要按照一定組織結構存儲數據,並且數據和數據之間可以互相關聯操作。

跨平臺 Linux Unix Windows
可移植性強
支持多種語言Python/Java/Perl/PHP

生產環境中,數據服務和網站服務一起使用 構建網站運行平臺
LNMP LAMP WNMP WAMP

mysql軟件包的封包類型: rpm包 源碼包 可以自定義安裝信息

非關系型數據庫軟件(NoSQL)mongodb 、
redis 、 memcached

1 搭建mysql數據庫服務器
2 mysql服務基本使用
3 mysql數據類型

一、搭建mysql數據庫服務器 192.168.4.51
裝包
修改配置文件
啟動服務
查看服務進程和端口號
服務名 mysqld

服務的主配置文件 /etc/my.cnf
數據目錄 /var/lib/mysql
日誌文件 /var/log/mysqld.log

二、數據庫服務的基本使用
2.1 使用初始密碼在本機連接數據庫服務
mysql [-h數據庫服務器ip地址 -u用戶名 -p‘密碼‘

2.2 重置本機連接密碼 mysql> alter user

root@"localhost" identified by "密碼";

2.3 把數據存儲到數據庫服務器上的過程?
2.4 sql命令分類? DDL DML DTL DCL
2.5 sql命令使用規則?

2.6 管理數據庫的sql命令 及 庫名的命名規則
2.7 管理表的 sql命令
建表的語法格式?
create table 庫名.表名(
字段名 類型(寬度) 約束條件,
字段名 類型(寬度) 約束條件,
.....
);

2.8 管理記錄的sql命令
查看
插入
更新
刪除
+++++++++++++++++++++++++
三、mysql數據類型
3.1 數值類型 (成績 年齡 工資 )
每種類型的存儲數據的範圍都是固定
整數類型 (只能存儲整數)
微小整型 小整型 中整型 大整型 極大整型
tinyint smallint MEDIUMINT INT bigint
*****unsigned 使用數值類型有符號的範圍。

浮點型 (存儲小數)
float(M,N)
double(M,N)

M 設置總位數
N 設置小數位位數

正數.小數 總位數 整數位 小數位
18088.88 7 5 2

3.2 字符類型 (商品名稱 籍貫 姓名 生產廠家)
char (255) 固定長度字符類型
varchar (65532) 變長字符類型

大文本類型 (音頻文件 視頻文件 圖片文件)
blob
text

3.3 日期時間類型
(註冊時間 約會時間 開會時間 入職時間 生日)

年 year YYYY 2018
日期 date YYYYMMDD 20180423
時間 time HHMMSS 161958
日期時間 datetime/timestamp
YYYYMMDDHHMMSS 20180423161958

獲取日期時間給對應的日期時間類型的字段賦值
獲取日期時間函數
now() 獲取當期系統的時間
year(日期時間)獲取指定時間中的年
month(日期時間)獲取指定時間中的月
date(日期時間)獲取指定時間中的日期
day(日期時間)獲取指定時間中的號(天)
time(日期時間)獲取指定時間中的時間

可以使用2位數字給year類型的字段賦值,規律如下:
01-69 20XX
70-99 19XX

3.4 枚舉類型(插入記錄 時 記錄的值 在列舉的範圍內選擇)
性別 愛好 專業

enum(值列表) 單選
set(值列表) 多選

數據類型的關鍵字 存儲範圍 賦值方式 合理使用數據類型

**劃重點
數值類型的寬度 是顯示寬度,不能夠給字段賦值的大小。字段的值由類型決

定。

mysql-day02
一 、字段約束條件
1.1 作用: 限制如何給字段賦值的
1.2 包括內容有: NULL Key Default Extra
NULL 是否允許給字段賦null值
null 默認允許賦null值
not null 不允許賦null值
key 鍵值類型:普通索引 唯一索引 全文索引 主鍵 外 鍵

Default 默認值 作用:當不被字段賦值時,使用默認值給字段賦值
不設置默認值是 系統定義的是null
default 值
Extra 額外設置 ,字段是否設置為自動增加,默認沒有自動增長功能

二、修改表結構
2.1 修改表結構的命令
mysql> alter table 庫.表 執行動作 ;

添加新字段 add 字段名 類型(寬度) [ 約束條件]

刪除已有字段 drop 字段名

修改已有字段的類型寬度及約束條件
*劃重點** 修改時不能與已經存儲的數據矛盾的話不允許修改
modify 字段名 類型(寬度) [ 約束條件]

修改字段名
change 源字段名 新字段名 類型(寬度) [ 約束條件]

修改表名
alter table 源表名 rename [to] 新表名;

三、mysql鍵值
設置在表中字段上的,作用是約束如何給字段賦值。同時會給字段做索引。

索引介紹: 樹狀目錄結構 類似與書的“目錄”
優點:加快查詢表記錄的速度
缺點 : 會減慢編輯表記錄的速度,且占用磁盤的物理存儲空間
(delete insert update)

字典 總頁面數 1000頁

目錄信息
1------100頁 記錄目錄信息
101---1000頁 正文

查字典的方法
筆畫
部首
拼音

修正內容時,修改內容 添加內容 刪除內容

stuinfo /var/lib/mysql/db2/stuinfo.*
name age home class
DBA

3.1 鍵值:普通索引 唯一索引 全文索引 主鍵 外 鍵


3.1.1普通索引的使用(index)
使用規則?

查看
desc 表名;
show index from 表名;
Table: t2
Key_name: aaa
Column_name: age
Index_type: BTREE (二叉樹)

創建
在已有表創建
create index 索引名 on 表名(字段名);

建表是時創建
create table 表名(
字段列表,
index(字段名),
index(字段名),
);

刪除
drop index 索引名 on 表名;

+++++++++++++++++++++++++++++++
3.1.2主鍵 primary key
(普通主鍵 復合主鍵 主鍵+auto_increment)

使用規則?

查看 desc 表; key ----> PRI

創建
在已有表創建 alter table 表 add primary key(字段名);

建表時創建
create table 表名(
字段列表,
primary key(字段名)
);

創建復合主鍵的使用:多個字段一起做主鍵,插入記錄時,只要做主鍵字段的值不同時重復,就可以插入記錄。(必須一起創建一起刪除,多個字段的值不允許同時相同)
desc mysql.db;
desc mysql.user;

主鍵primary key 通常和auto_increment連用。
讓字段的值自動增長 i++
數值類型 i=i+1

刪除主鍵 mysql> alter table 表 drop primary key;
++++++++++++++++++++++++++++++++++++++
3.1.3外 鍵(作用 限制如何給字段賦值的)
給當前表中字段賦值時,值只能在指定(其他)表的指定字段值的範圍裏選擇。

使用規則?

創建外鍵 foreign key 的命令格式:
create table 表(
字段名列表,
foreign key(字段名) references 表名(字段名)
on update cascade on delete cascade
)engine=innodb;

繳費表
use studb;
create table jfb(
jfb_id int(2) zerofill primary key auto_increment,
name char(15),
pay float(7,2)
)engine=innodb;

insert into jfb (name,pay)values("bob",26800);
insert into jfb (name,pay)values("tom",26000);

select * from jfb;

班級表
create table bjb(
bjb_id int(2) zerofill,
name char(15),
foreign key(bjb_id) references jfb(jfb_id)
on update cascade on delete cascade
)engine=innodb;

insert into bjb values(3,"lucy");
insert into bjb values(1,"bzengjiaob");
insert into bjb values(2,"tom");
select * from bjb;

mysql> update jfb set jfb_id=9 where name="bob";
mysql> delete from jfb where jfb_id=2;
select from jfb;
select
from bjb;

查看 mysql> show create table 表名;

刪除外鍵
alter table 表名 drop foreign key 外鍵名;
alter table bjb drop foreign key bjb_ibfk_1;
mysql> delete from jfb where jfb_id=02; 他有同步的作用 班級表也沒有這一條
mysql> update jfb set name="xixi"where jfb_id=05; 修改繳費表ID是05 把他的名字改成xixi

在已有表創建
mysql> delete from bjb;
mysql> alter table bjb add foreign key(bjb_id) references jfb
(jfb_id) on update cascade on delete cascade;

mysql 數據庫的基本操作1