數據庫構建與基本管理

三大主流平臺: windows linux unix (尤尼斯)
數據庫軟件 : Oracle DB2 SQL server (微軟) —【非開源】 MySQL ------關係性數據庫軟件 (先設計結果,然後在存儲數據)
Redis MongoDB memcached (Nosql 非關係性)
如何選擇數據庫 :1.是否開源(商業)
2.是否跨平臺7

SQL server (微軟) ------》 只能 windows 不開源
Oracle DB2 ---------------》 跨三大平臺 ,不開源
MySQL Redis MongoDB memcached —》 跨三大平臺 ,開源
開源 : 免費下載源代碼,可以自己開發更改。如果代碼不能滿足,可以付費請人改(開源不等於免費)
rpm -Uvh (U升級安裝 i,全新安裝)
/etc/my.cnf (服務主配置文件)
/var/lib/mysql (數據庫目錄)
ps -C mysqld (單獨查進程)
ps aux | grep -i mysqld (查看mysqld所屬者) --------如果源碼包安裝要創建用戶,所屬組
ss -nutlp | grep :3306 (查mysqld )
mysql-community-client-5.7.17-1.el7.x86_64 (管理命令包)
ls /var/log/mysqld.log (首次登入密碼在裏面 ,報錯日誌)
grep password /var/log/mysqld.log (查初始化密碼)
mysql -hlocalhost -uroot -p’lItWpaiet5_R’ (登入本地,爲root的數據庫)『-h服務器 -u用戶 -p密碼 +數據庫名』
alter user root@“localhost” identified by “123qqq…A”; (初次登入要改密碼。至少八位)
show variables like “%password%”; 查看密碼
在數據庫中改(臨時設置)
validate_password_policy=0;(改爲0策越)只驗證長度
validate_password_length=6;(改爲密碼爲6位)

vim /etc/my。cnf (退出來 永久設置)
[mysqld]
validate_password_policy=0;(改爲0)
validate_password_length=6;(改爲密碼爲6位) 默認值是8個字符
systemctl restart mysqld

數據庫存儲流程
客服端把數據存儲到服務器上的步驟
連接數據庫服務器
建庫 //類似與系統文件夾
建表 //類似於系統文件
插入記錄 //類是於文件裏的行
斷開連接
mysql 命令:
DDL 數據定義語言 (create-創建 alter-修改 drop-刪除)
DML 數據操作語言 (insert-插入 update-修改表 delete-刪除表)
DCL 數據控制語言 (grant revoke)
DTL 數據事物語言 (commit rollback savepoint)
庫管理命令:
show databases; 查看庫 show databases \c; (放棄當前命令)
select database()顯示當前所在的庫
use mysql; 切換到mysql庫
create database 庫名; 創建新庫 ----------------在數據庫執行會自動創建mysq用戶與組(權限是mysql)-----------在命令行mkdir /var/lib/mysql/+庫 (在數據庫會有庫,能切換到庫,但不能創建,權限爲root )(chmod o+w或者加入mysql組/用戶)
show tables; 顯示已有的表
drop database 庫名; 刪除庫
注:庫命名規則 (可以使用數字/字母/下劃線,但不能純數字。。區分大小寫,具有唯一性。不可以使用指令關鍵字,特殊字符)

create database studb (創建庫)
use studb 進入庫
create table studb。student(name char,age int,homeaddress char); (創建表 內容name age home)
char(描述信息一個字符)—char(3)表示可以三個字符
int (數字描述信息很大數)----數值型
desc student (查看錶結構)
insert into studb.student values(“a”,“19”.“b”),(“b”,“22”,“f”);
select * from studb.student; (查看)
update student set age=20; (修改表所有age)
update student set age=28 where name=“a”; (修改a 的 age)
delete from student where name=“d“; (刪除name=d 的那一行)
delete from t2 where 年齡=255 and 級別=555;
delete from student; (刪除表student所有)
drop table student; (刪除表)
drop database stud; (刪除庫)
create table studb.student(name char(2),age int,home char(2));
insert into studb.student values (“aa”,“19”,“bb”),(“tt”,“20”,“ff”)(“cc”,“60”,“uu”);
show create table t1; (查看支持什麼)
create database 學生庫;
create database 學生庫;
create database 學生庫;
create table 學生庫.學生表(學號 char(9),姓名 char(3),性別 char)DEFAULT CHARSET=utf8;

常見的信息種類
數值型(int):體重 身高 成績 工資
字符型(char):姓名 工作單位 通信地址
枚舉型(enum): 興趣愛好 性別
日期時間型(datetime/timestamp):出生日期,註冊時間

數值類型

浮點
create table t2(年齡 tinyint unsigned,級別 smallint)DEFAULT CHARSET=utf8;
unsigned(不取負)
create table db1.t3(數值 float(5,2))DEFAULT CHARSET=utf8;
float(5,2)表示數值最大:999.99 最小:-999.99 範圍取值
int (最大支持10位數)
bigint (最大支持19位數)
手機號碼用 char
字符類型

char(5)定長:表示可以取五位,不足五位(默認在後空格補齊)—最大255字符
varchar(5)變長:表示最大取五位,不夠五位取實際值,根據實際大小分配空間(節省空間)
大文本類型:text/blob :字符數大於65535存儲時使用
create table db1.t4(class char(7),name char(3),email varchar(30));
insert into db1.t4 values(“nsd1809”,“ji”,"[email protected]"),(“nsd1808”,“tom”,"[email protected]");

日期時間類型
datetime : 佔用八個字節,範圍:1000-01-01 00:00:00.000000----9999-12-31 23:59:59.999999
timestamp: 佔用四個字節 ,範圍:1970-01-01 00:00:00.000000–2038-01-19 03:14:07.999999
date (四字節) yyyymmdd(年月日) 0001-01-01–9999-12-31
time (三字節) hhmmss (時分秒)
year (一字節)yyyy (年) 1901–2155
當未給timestamp字段賦值時,自動以當前系統時間賦值,而datetime字段默認賦值爲NULL
year年份處理
默認用四位 (當只有兩位 01-69視爲2001–2069;70-99視爲1970–1999)
create table db1.t7(meeting datetime,
-> party timestamp);
insert into db1.t7(meeting) values(20191230122500);
insert into db1.t7(party) values(20161225162000);
±--------------------±--------------------+
| meeting | party |
±--------------------±--------------------+
| 2018-12-10 12:30:00 | 2017-11-27 20:30:00 |
| 2019-12-30 12:25:00 | 2018-12-07 10:42:06 |
| NULL | 2016-12-25 16:20:00 |
±--------------------±--------------------+

create table db1.t5(姓名 char(3),開始 year,時間 time,生日 date,聚會時間 datetime)DEFAULT CHARSET=utf8;
insert into db1.t5 values(“張三”,1990,083025,20181228,20151224203212);
±-------±-------±---------±-----------±--------------------+
| 姓名 | 開始 | 時間 | 生日 | 聚會時間 |
±-------±-------±---------±-----------±--------------------+
| 張三 | 1990 | 08:30:25 | 2018-12-28 | 2015-12-24 20:32:12 |
±-------±-------±---------±-----------±--------------------+
insert into db1.t5 values(“張三”,1990,08,20181228,20151224203210);
±-------±-------±---------±-----------±--------------------+
| 姓名 | 開始 | 時間 | 生日 | 聚會時間 |
±-------±-------±---------±-----------±--------------------+
| 張三 | 1990 | 08:30:25 | 2018-12-28 | 2015-12-24 20:32:12 |
| 張三 | 1990 | 00:00:08 | 2018-12-28 | 2015-12-24 20:32:10 |
±-------±-------±---------±-----------±--------------------+
時間函數
select year(now());獲取系統當前年----select year(20181221)—獲取2018;
select now(); 獲取系統年月日。時分秒;
select date(now());獲取系統當前年月日; ==select curdate();
select time(now());獲取系統當前時分秒;===select curtime()
select day(now()); 獲取系統當前幾號;
select month(now());獲取系統當前幾月;
枚舉類型
從給定值集合中選擇單個值,enum(值1,值2.。。)
從給定值集合中選擇單個或多個值,set(值1,值2.。)
create table db1.t6(name char(3),sex enum(“boy”,“girl”,“no”),likes
desc db1.t6
±------±--------------------------±-----±----±--------±------+
| Field | Type | Null | Key | Default | Extra |
±------±--------------------------±-----±----±--------±------+
| name | char(3) | YES | | NULL | | NULL-----(空值)
| sex | enum(‘boy’,‘girl’,‘no’) | YES | | NULL | |
| likes | set(‘eat’,‘sleep’,‘game’) | YES | | NULL | |
±------±--------------------------±-----±----±--------±------+
set(“eat”,“sleep”,“game”));
insert into db1.t6 values(“tom”,“no”,“eat,sleep”);
±-----±-----±----------+
| name | sex | likes |
±-----±-----±----------+
| tom | no | eat,sleep |
±-----±-----±----------+

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