日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Mysql数据库基础(一)基本概述、构建服务、基本管理、数据类型

發布時間:2025/3/21 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mysql数据库基础(一)基本概述、构建服务、基本管理、数据类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL數據庫服務概述

什么是數據庫

數據庫介紹

  • 什么是數據庫?
    存儲數據的倉庫
  • 數據是什么?
    生活中,視頻、音頻、圖片、文本等都是數據
  • 提供數據庫服務的軟件有哪些?
軟件名開源跨平臺廠商
Oracle甲骨文
MySQL甲骨文
SQLServer微軟
DB2IBM
Redis開源軟件
Memcached開源軟件
MongoDB開源軟件
  • 如何決定使用哪種軟件搭建數據庫服務?
    1)是否要花錢買?
    2)是否跨平臺?

  • 專業術語

DB(DataBase)
數據庫
依照某種數據模型進行組織并存放到存儲器的數據集合

DBMS(DataBase Management System)
數據庫管理系統
用來操縱和管理數據庫的服務軟件

DBS(DataBase System)
數據庫系統 :即DB+DBMS
指帶有數據庫并整合了數據庫管理軟件的計算機系統

MySQL介紹

起源與發展

  • 應用最廣泛的開源數據庫軟件
    最早隸屬于瑞典的MySQL AB公司
    2008年1月,MySQL AB被Sun收購
    2009年4月,Sun被Oracle收購
  • 嶄新的開源分支MariaDB
    為應付MySQL可能會閉源的風險而誕生
    由MySQL原作者Windenius主導開發
    與MySQL保持最大的兼容

特點及應用

  • 主要特點
    1.適用于中小規模、關系型數據庫系統
    2.支持Linux、Unix、Windows等多種操作系統
    3.支持Python、Java、Perl、PHP等編程語言
  • 典型應用環境
    LAMP平臺,與Apache HTTP Server組合
    LNMP平臺,與Nginx組合

構建MySQL服務

MySQL安裝

  • 基本需求

1.創建CentOS系統虛擬機一臺

2.配置IP地址為192.168.4.51

3.關閉firewalld

systemctl stop firewalld

4.禁用SELinux

setenforce 0
vim /etc/sysconfig/selinux
7 SELINUX=permissive

5.拷貝軟件mysql-5.7.17.tar
tar包鏈接提取碼:nj8d

6.配置yum源

  • 安裝軟件

從官網下載RPM包鏈接在此!
如果有tar包則進行解包安裝

[root@host51 opt]# tar -xvf mysql-5.7.17.tar ./mysql-community-server-5.7.17-1.el7.x86_64.rpm ##提供服務的軟件包 [root@host51 opt]# yum -y install mysql-community*.rpm [root@host51 opt]# du -sh mysql-5.7.17.tar 544M mysql-5.7.17.tar [root@host51 opt]# rpm -qa | grep -i mysql mysql-community-common-5.7.17-1.el7.x86_64 //數據庫和客戶端庫共享文件 mysql-community-client-5.7.17-1.el7.x86_64 //客戶端應用程序 mysql-community-devel-5.7.17-1.el7.x86_64 //客戶端應用程序的庫和頭文件 mysql-community-test-5.7.17-1.el7.x86_64 mysql-community-libs-compat-5.7.17-1.el7.x86_64 //客戶端應用程序的共享兼容庫 mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64 mysql-community-libs-5.7.17-1.el7.x86_64 //MySQL數據庫客戶端應用程序的共享庫 mysql-community-server-5.7.17-1.el7.x86_64 mysql-community-embedded-5.7.17-1.el7.x86_64 //嵌入式函數庫 mysql-community-embedded-devel-5.7.17-1.el7.x86_64 //頭文件和庫文件作為MySQL的嵌入式文件 mysql-community-embedded-compat-5.7.17-1.el7.x86_64 //嵌入式兼容函數庫 [root@host51 opt]# rpm -qa | grep -i mysql | wc -l 11
  • 啟動服務
    首次啟動服務,會執行數據初始化
[root@host51 opt]# ls /var/lib/mysql #默認的數據庫目錄,沒有啟動時該目錄內容為空 [root@host51 opt]# systemctl start mysqld #起服務[root@host51 opt]# systemctl status mysqld #查看狀態 ● mysqld.service - MySQL ServerLoaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)Active: active (running) since 三 2020-02-12 18:22:54 CST; 2h 34min ago[root@host51 opt]# ls /var/lib/mysql #再次查看,此時目錄內已經加載出數據庫的目錄 auto.cnf client-key.pem ib_logfile1 mysql.sock.lock server-cert.pem ca-key.pem ib_buffer_pool ibtmp1 performance_schema server-key.pem ca.pem ibdata1 mysql private_key.pem sys client-cert.pem ib_logfile0 mysql.sock public_key.pem[root@host51 opt]# systemctl enable mysqld #設置開機自啟[root@host51 opt]# ss -nutlp | grep 3306 #查看服務信息 tcp LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=11724,fd=22))[root@host51 opt]# ps -C mysqld #查看進程PID TTY TIME CMD11724 ? 00:00:04 mysqld
  • 相關參數
文件說明
/etc/my.cnf主配置文件
/var/lib/mysql數據庫目錄
默認端口號3306
進程名mysqld
傳輸協議TCP
進程所有者mysql
進程所屬組mysql
錯誤日志文件/var/log/mysqld.log
[root@host51 opt]# mysql [tab][tab] mysql mysqld mysql_secure_installation mysqladmin mysqld-debug mysqlshow mysqlbinlog mysqld_pre_systemd mysqlslap mysqlcheck mysqldump mysql_ssl_rsa_setup mysql_client_test mysqldumpslow mysqltest mysql_client_test_embedded mysqlimport mysqltest_embedded mysql_config mysql_install_db mysql_tzinfo_to_sql mysql_config-64 mysql_plugin mysql_upgrade mysql_config_editor mysqlpump mysqlxtest [root@host51 opt]# ls /var/log/mysqld.log 顯示的進程所有者和所屬必須是mysql /var/log/mysqld.log [root@host51 opt]#ps aux | grep mysql #查看進程 mysql 11724 0.0 9.4 1119528 175516 ? Sl 18:22 0:04 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid root 11914 0.0 0.0 112720 972 pts/0 S+ 21:11 0:00 grep --color=auto mysql

MySQL初始配置

  • 初始密碼登錄
  • 數據庫管理員名為root
  • 默認允許root本機連接
  • 首次登錄密碼在安裝軟件時隨機生成
  • 隨機密碼存儲在日志文件/var/log/mysqld.log里
  • 連接命令mysql -h數據庫IP地址(如果連接本機服務器可以不用寫-h) -u用戶名 -p密碼 [數據庫名](如果加庫名可以直接進入該庫,如果不加庫名,則在/var/lib/mysql目錄中)
[root@host51 opt]# grep "password" /var/log/mysqld.log #查看隨機密碼 2020-02-12T10:22:51.184949Z 1 [Note] A temporary password is generated for root@localhost: r-yF/1/eQ,xk[root@host51 opt]# mysql -uroot -p'r-yF/1/eQ,xk' ##連接
  • 修改root密碼

使用alter user 命令修改登錄密碼
新密碼必須滿足密碼策略
管理員root使用新密碼連接服務

[root@host51 opt]# mysql -uroot -p'r-yF/1/eQ,xk' ..... mysql> show databases; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. #此時會報錯,必須要修改密碼才可以進行下一步操作mysql> alter user root@"localhost" identified by "123qqq...A"; Query OK, 0 rows affected (0.00 sec) #修改密碼為123qqq...A,密碼要必須包含字母數字特殊符號大寫字母 [root@host51 opt]# mysql -uroot -p'123qqq...A' #用重新設置的密碼再次連接數據庫
  • 修改密碼策略
策略名稱驗證方式
0 or LOW長度
1 or MEDIUM(默認)長度;數字,小寫/大寫和特殊字符
2 or STRONG長度;數字,小寫/大寫和特殊字符;字典文件
臨時配置 mysql> show variables like "%password%"; #查看變量 mysql> set global validate_password_policy=0; #修改密碼策略 mysql> set global validate_password_length=6; #修改密碼長度,默認值是8個字符永久配置 [root@host51 opt]#vim /etc/my.cnf 4 [mysqld] 5 validate_password_policy=0 #添加此行 6 validate_password_length=6 #添加此行

MySQL數據庫基本管理

連接MySQL服務

  • 連接方式

客戶端連接MySQL服務的方法
①命令行,優點是連接方式通用,更為便捷
②web頁面
③安裝圖形軟件
④編寫腳本(PHP、Java、Python…)
使用mysql命令
mysql -h服務器IP -u用戶名 -p密碼 [數據庫名]
quit或exit退出

  • 數據存儲流程

客戶端把數據存儲到數據庫服務器上的步驟
①連接數據庫服務器
②建庫 //類似于文件夾
③建表 //類似于文件
④插入記錄 //類似于文件內容
⑤斷開連接

  • MySQL管理環境

SQL命令使用規則
SQL命令不區分字母大小寫(密碼、變量值除外)
每條SQL命令以;結束
默認命令不支持Tab鍵自動補齊
\c或Ctrl+c鍵終止SQL命令

常用的SQL命令分類
管理數據庫使用SQL(結構化查詢語言)
①DDL 數據定義語言 如:create、alter、drop
②DML 數據操作語言 如:insert、update、delete
③DCL 數據控制語言 如:grant、revoke
④DTL 數據事物語言 如:commit、rollback、savepoint

MySQL基本操作

庫管理命令
  • 庫 類似于文件夾,用來存儲表
  • 可以創建多個庫,通過庫名區分
  • show databases; //顯示已有的庫
  • select user(); //顯示連接用戶
  • use 庫名; //切換庫
  • select database(); //顯示當前所在的庫
  • create database 庫名; //創建新庫
  • show tables; //顯示已有的表
  • drop database 庫名; //刪除表
  • 庫名 命名規則
  • 僅可以使用數字、字母、下劃線、不能純數字,也可以用中文
  • 區分字母大小寫,具有唯一性
  • 不可以使用指令關鍵字、特殊字符
mysql> show databases; #查看現有的庫 +--------------------+ | Database | +--------------------+ | information_schema | //信息概要庫 | mysql | //授權庫 | performance_schema | //性能結構庫 | sys | //系統元數據庫 +--------------------+ 4 rows in set (0.15 sec)mysql> create database db1; #創建庫 Query OK, 1 row affected (0.00 sec) [root@host51 opt]# ls /var/lib/mysql #查看數據庫,此時多了一個db1目錄,就是新創建的庫 auto.cnf client-key.pem ib_logfile0 mysql.sock public_key.pem ca-key.pem db1 ib_logfile1 mysql.sock.lock server-cert.pem ca.pem ib_buffer_pool ibtmp1 performance_schema server-key.pem client-cert.pem ibdata1 mysql private_key.pem sys ###################################################### /var/lib/mysql中沒有information_schema庫是因為information_schema是虛擬庫,存儲在內存中,其他庫都存放在硬盤中,只能讀取,存放一些服務運行時的參數信息
表管理命令
  • 建表
  • 表存儲數據的文件
    Mysql > create table 庫名.表名(“字段名1” 類型(寬度),“字段名2” 類型(寬度))DEFAULT CHARSET=utf8 ; //指定中文字符集,可以給字段賦值中文
mysql> create table db1.sutinfo( name char(10) , homeaddr char(20) ); Query OK, 0 rows affected (0.01 sec) mysql> show create table db1.user; #顯示建表時的字符集 +-------+---------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+---------------------------------------------------------------------------------------------+ | user | CREATE TABLE `user` (`name` char(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 | +-------+---------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)mysql> show create table db1.user \G #查看表結構,以列表形式展現,末尾不用寫分號 *************************** 1. row ***************************Table: user Create Table: CREATE TABLE `user` (`name` char(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec)建表時指定表的字符集,使其可以存儲中文 mysql> create table db1.user2 (name char(3)) default charset=utf8; Query OK, 0 rows affected (0.06 sec)mysql> show create table db1.user2 \G #查看user2表結構,以列表形式展現,末尾不用分號 *************************** 1. row ***************************Table: user2 Create Table: CREATE TABLE `user2` (`name` char(3) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 1 row in set (0.00 sec)mysql> insert into db1.user2 values ("哈哈哈"); Query OK, 1 row affected (0.01 sec)mysql> select * from db1.user2; +-----------+ | name | +-----------+ | 哈哈哈 | +-----------+ 1 row in set (0.00 sec)
  • 表 類似于文件
  • desc 庫名.表名; //查看表結構
  • drop table 庫名.表名; //刪除表
mysql> desc sutinfo; +----------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+----------+------+-----+---------+-------+ | name | char(10) | YES | | NULL | | | homeaddr | char(20) | YES | | NULL | | +----------+----------+------+-----+---------+-------+ 2 rows in set (0.00 sec)[root@host51 opt]# ls /var/lib/mysql/db1 db.opt sutinfo.frm sutinfo.ibdmysql> drop table db1.sutinfo; Query OK, 0 rows affected (0.01 sec)
記錄管理命令
  • 記錄類似于文件里的行
  • select * from 庫名.表名; //查看表記錄
  • insert into 庫名.表名 values(值列表); //插入表記錄
  • update 庫名.表名 set 字段=“值” //修改表記錄
  • delete from 表名; //刪除表記錄
mysql> select * from sutinfo; Empty set (0.00 sec) mysql> insert into db1.sutinfo values ("tian","china"),("haha","usa"); mysql> select * from sutinfo; +------+----------+ | name | homeaddr | +------+----------+ | tian | china | | haha | usa | +------+----------+ 2 rows in set (0.00 sec)mysql> insert into db1.sutinfo values ("aaa","zzz"); #添加 Query OK, 1 row affected (0.01 sec)mysql> select * from sutinfo; +------+----------+ | name | homeaddr | +------+----------+ | tian | china | | haha | usa | | aaa | zzz | +------+----------+ 3 rows in set (0.00 sec)mysql> select name from sutinfo; +------+ | name | +------+ | tian | | haha | | aaa | +------+ 3 rows in set (0.00 sec)mysql> update db1.sutinfo set homeaddr="bj"; #修改sutinfo表中所有homeaddr為bj Query OK, 3 rows affected (0.04 sec) Rows matched: 3 Changed: 3 Warnings: 0mysql> select * from sutinfo; +------+----------+ | name | homeaddr | +------+----------+ | tian | bj | | haha | bj | | aaa | bj | +------+----------+ 3 rows in set (0.01 sec)mysql> update db1.sutinfo set homeaddr="sz" where name="aaa"; Query OK, 1 row affected (0.00 sec) #修改sutinfo表中name字段為aaa的homeaddr為sz Rows matched: 1 Changed: 1 Warnings: 0mysql> select * from sutinfo; +------+----------+ | name | homeaddr | +------+----------+ | tian | bj | | haha | bj | | aaa | sz | +------+----------+ 3 rows in set (0.00 sec) mysql> delete from db1.sutinfo where name="aaa"; #刪除sutinfo表中名字叫aaa的字段 Query OK, 1 row affected (0.00 sec)mysql> select * from sutinfo; +------+----------+ | name | homeaddr | +------+----------+ | tian | bj | | haha | bj | +------+----------+ 2 rows in set (0.00 sec)mysql> delete from db1.sutinfo; #刪除表中所有 Query OK, 2 rows affected (0.00 sec)mysql> select * from sutinfo; #查看,此時sutinfo表中沒有表結構 Empty set (0.00 sec)mysql> desc sutinfo; +----------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+----------+------+-----+---------+-------+ | name | char(10) | YES | | NULL | | | homeaddr | char(20) | YES | | NULL | | +----------+----------+------+-----+---------+-------+ 2 rows in set (0.00 sec)mysql> drop table db1.sutinfo; Query OK, 0 rows affected (0.01 sec)mysql> show tables; Empty set (0.00 sec)

MySQL數據類型

常見的信息種類

  • 數值型:體重、身高、成績、工資
  • 字符型:姓名、工作單位、通信地址
  • 枚舉型:興趣愛好、性別、專業
  • 日期時間型:出生日期、注冊時間

字符類型

定長char

  • 定長:char(字符個數)
  • 最大字符個數255個
  • 不夠指定字符個數時在右邊用空格補全
  • 字符個數超出時,無法寫入數據

變長varchar

  • 變長:varchar(字符個數)
  • 按數據實際大小分配存儲空間
  • 字符個數超出時,無法寫入數據
  • 大文本類型:text/blob
  • 字符數大于65535存儲時使用
mysql> create table db1.t1 (-> name char(5),-> class char(7),-> email varchar(50) -> ); Query OK, 0 rows affected (0.06 sec)mysql> desc t1; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | name | char(5) | YES | | NULL | | | class | char(7) | YES | | NULL | | | email | varchar(50) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)mysql> insert into db1.t1 values(-> "aaa","bbb","ccc"); Query OK, 1 row affected (0.00 sec)mysql> insert into db1.t1 values( "zzz","yyy","xxx"); Query OK, 1 row affected (0.00 sec)mysql> select * from db1.t1; +------+-------+-------+ | name | class | email | +------+-------+-------+ | aaa | bbb | ccc | | zzz | yyy | xxx | +------+-------+-------+ 2 rows in set (0.00 sec)

數值類型

整數型

  • 只能存儲整數
類型名稱有符號范圍無符號范圍
tinyint微小整數-128~1270~255
smallint小整數-327678~327670~65535
mediumint中整型-2 23~223-10~224-1
int大整型-231~231-10~224-1
bigint極大整型-263~263-10~264-1
unsigned使用無符號存儲范圍
mysql> create table db1.t2(name char(10) , age tinyint unsigned); #name字段不超過10個字符,age字段為微笑整型,使用無符號的存儲范圍 Query OK, 0 rows affected (0.06 sec)mysql> insert into db1.t2 values ("bob" , 256); ERROR 1264 (22003): Out of range value for column 'age' at row 1 #會報錯,超出取值范圍 mysql> insert into db1.t2 values ("bob" , 25); Query OK, 1 row affected (0.00 sec)mysql> insert into db1.t2 values ("tom" , -1); ERROR 1264 (22003): Out of range value for column 'age' at row 1 #會報錯,age字段的取值范圍不在規定范圍內mysql> insert into db1.t2 values ("tom" , 1); Query OK, 1 row affected (0.01 sec)mysql> insert into db1.t2 values ("jerry" , 19.5); #整數型也支持小數,四舍五入 Query OK, 1 row affected (0.00 sec)mysql> insert into db1.t2 values ("jack" , 19.4); Query OK, 1 row affected (0.01 sec)mysql> select * from db1.t2; +-------+------+ | name | age | +-------+------+ | bob | 25 | | tom | 1 | | jerry | 20 | | jack | 19 | +-------+------+ 4 rows in set (0.00 sec)

浮點型

  • 浮點型
  • 格式1:字段名 類型;
  • 格式2:字段名 類型(總寬度,小數位數 )
類型名稱有符號范圍無符號范圍
float單精度-3.4028323466E+38 到 -1.175494351E-381.175494351E-38 到 3.402823466E+38
double雙精度-1.7976931348623157E+308 到 -2.2250738585072014E-3082.2250738585072014E-308 到 1.7976931348623157E+308

單精度和雙精度的區別
雙精度比單精度表示的位數大 精確的位數多
簡單地說, float表示的小數點位數少,double能表示的小數點位數多
單精度在32位機器上用4個字節存儲,而double則用8個字節存儲,雙精度比單精度占用空間大

mysql> insert into db1.t3 value ("aaa" , 4300);mysql> insert into db1.t3 value ("tian" , 18739.22); Query OK, 1 row affected (0.00 sec)mysql> select * from db1.t3; +------+----------+ | name | money | +------+----------+ | aaa | 4300.00 | | tian | 18739.22 | +------+----------+ 2 rows in set (0.00 sec)

日期時間類型

  • 日期時間 datetime

范圍:1000-01-01 00:00:00~9999-12-31 23:59:59
格式:yyyymmddhhmmss

  • 日期時間 timestamp

范圍:1970-01-01 00:00:00~2038-01-19 00:00:00
格式:yyyymmddhhmmss

  • 日期 date

0001-01-01~9999-12-31
yyyymmdd

  • 年 year

范圍:1901~2155
格式:yyyy

  • 時間 time

格式:HH:MM:SS

  • 關于日期時間字段

當未給timestap字段賦值時,自動以當前系統時間賦值,而datetime值為NULL(空)

  • year 類型

要求使用4位數賦值
當使用2位數賦值時:
01~69視為 2001~2069
70~99視為 1970~1999

日期時間類型:
年 ---------------------- year---------YYYY---------2020---------出生年份
日期-------------------- date--------- YYYYMMDD-------20200214----- 聚會時間
時間(24小時制)------- time---- HHMMSS------- 100000------ 聚會結束時間
日期時間----------------- datetime 和 timestamp-----YYYYMMDDHHMMSS

mysql> create table db1.t5 (name char(15) , csnf year , birthday date , up_class time ,party datetime ); Query OK, 0 rows affected (0.02 sec)mysql> desc db1.t5; +----------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+----------+------+-----+---------+-------+ | name | char(15) | YES | | NULL | | | csnf | year(4) | YES | | NULL | | | birthday | date | YES | | NULL | | | up_class | time | YES | | NULL | | | party | datetime | YES | | NULL | | +----------+----------+------+-----+---------+-------+ 5 rows in set (0.04 sec)mysql> insert into db1.t5 values ( "bob" , 1990 , 20200120 , 093000 , 20200214180000 ); Query OK, 1 row affected (0.00 sec)mysql> select * from db1.t5; +------+------+------------+----------+---------------------+ | name | csnf | birthday | up_class | party | +------+------+------------+----------+---------------------+ | bob | 1990 | 2020-01-20 | 09:30:00 | 2020-02-14 18:00:00 | +------+------+------------+----------+---------------------+ 1 row in set (0.00 sec)
  • 時間函數
  • 可以使用時間函數給字段賦值
類型用途
curtime()獲取當前系統的時間
curdate()獲取當前的系統日期
now()獲取當前系統日期和時間
year()獲取年
month()獲取月
day()獲取日
date()獲取日期
time()獲取時間

使用命令的值給日期時間類型字段賦值:

Linux命令行查當前時間 [root@host51 ~]# date +%F 2020-02-14 [root@host51 ~]# date +%Y 2020 [root@host51 ~]# date 2020年 02月 14日 星期五 09:36:23 CSTmysql> select curdate(); #獲取當前日期 +------------+ | curdate() | +------------+ | 2020-02-14 | +------------+ 1 row in set (0.06 sec)mysql> select curtime(); #獲取當前時間 +-----------+ | curtime() | +-----------+ | 09:36:54 | +-----------+ 1 row in set (0.00 sec)mysql> select now(); #查看當前日期和時間 +---------------------+ | now() | +---------------------+ | 2020-02-14 09:37:00 | +---------------------+ 1 row in set (0.00 sec)mysql> select month(now()); #獲取當前日期中的月份 +--------------+ | month(now()) | +--------------+ | 2 | +--------------+ 1 row in set (0.00 sec)mysql> select day(now()); #獲取當前日 +------------+ | day(now()) | +------------+ | 14 | +------------+ 1 row in set (0.00 sec)mysql> select time(now()); #獲取當前時間 +-------------+ | time(now()) | +-------------+ | 09:37:46 | +-------------+ 1 row in set (0.00 sec)mysql> select year(now()); #獲取當前年份 +-------------+ | year(now()) | +-------------+ | 2020 | +-------------+ 1 row in set (0.00 sec)mysql> select date(now()); #獲取當前系統日期 +-------------+ | date(now()) | +-------------+ | 2020-02-14 | +-------------+ 1 row in set (0.00 sec)mysql> insert into db1.t5 values ("jerry" , year(now()) , date(now()) ,time(now()),now() ); Query OK, 1 row affected (0.00 sec)mysql> select * from db1.t5; +-------+------+------------+----------+---------------------+ | name | csnf | birthday | up_class | party | +-------+------+------------+----------+---------------------+ | bob | 1990 | 2020-01-20 | 09:30:00 | 2020-02-14 18:00:00 | | jerry | 2020 | 2020-02-14 | 09:40:55 | 2020-02-14 09:40:55 | +-------+------+------------+----------+---------------------+

year類型:

mysql> insert into db1.t5 values ("tom" , 81 , date(now()) ,time(now()) , now() ); Query OK, 1 row affected (0.01 sec)mysql> insert into db1.t5 values ("john" , 53 , date(now()) ,time(now()) , now() ); Query OK, 1 row affected (0.01 sec)mysql> select * from db1.t5; +-------+------+------------+----------+---------------------+ | name | csnf | birthday | up_class | party | +-------+------+------------+----------+---------------------+ | bob | 1990 | 2020-01-20 | 09:30:00 | 2020-02-14 18:00:00 | | jerry | 2020 | 2020-02-14 | 09:40:55 | 2020-02-14 09:40:55 | | tom | 1981 | 2020-02-14 | 09:52:23 | 2020-02-14 09:52:23 | | john | 2053 | 2020-02-14 | 09:52:46 | 2020-02-14 09:52:46 | +-------+------+------------+----------+---------------------+ 4 rows in set (0.00 sec)

日期時間字段datetime和timestap:

mysql> create table db1.t6 (name char(10) , meeting datetime ,party timestamp ); Query OK, 0 rows affected (0.02 sec)mysql> insert into db1.t6 values ("tian" , 20200214130000 , 20200214183000 ); Query OK, 1 row affected (0.00 sec)mysql> desc db1.t6; +---------+-----------+------+-----+-------------------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +---------+-----------+------+-----+-------------------+-----------------------------+ | name | char(10) | YES | | NULL | | | meeting | datetime | YES | | NULL | | | party | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP | +---------+-----------+------+-----+-------------------+-----------------------------+ 3 rows in set (0.00 sec)mysql> select * from db1.t6; +------+---------------------+---------------------+ | name | meeting | party | +------+---------------------+---------------------+ | tian | 2020-02-14 13:00:00 | 2020-02-14 18:30:00 | +------+---------------------+---------------------+ 1 row in set (0.00 sec)mysql> insert into db1.t6(name,meeting) values ("nb" , 20200214140000); #此時沒有給party字段賦值,直接獲取當前系統時間賦值給party字段 Query OK, 1 row affected (0.00 sec)mysql> select * from db1.t6; +------+---------------------+---------------------+ | name | meeting | party | +------+---------------------+---------------------+ | tian | 2020-02-14 13:00:00 | 2020-02-14 18:30:00 | | nb | 2020-02-14 14:00:00 | 2020-02-14 10:03:53 | +------+---------------------+---------------------+ 2 rows in set (0.00 sec)mysql> insert into db1.t6(name ,party ) values ("wk" , 20200214203000 ); #此時沒有給meeting字段賦值,所以當前meeting值datetime為空 Query OK, 1 row affected (0.01 sec)mysql> select * from db1.t6; +------+---------------------+---------------------+ | name | meeting | party | +------+---------------------+---------------------+ | tian | 2020-02-14 13:00:00 | 2020-02-14 18:30:00 | | nb | 2020-02-14 14:00:00 | 2020-02-14 10:03:53 | | wk | NULL | 2020-02-14 20:30:00 | +------+---------------------+---------------------+ 3 rows in set (0.00 sec)

枚舉類型

  • enum 單選:

格式:字段名 enum(值1,值2,值N)
僅能選擇一個值
字段值必須在列表里選擇

  • set 多選

格式:字段名 set(值1,值2,值N)
選擇一個或多個值
字段值必須在列表里選擇

mysql> create table db1.t7 (name char(15) ,sex enum("boy" , "girl") , likes set("eat" , "game" , "money" , "it")); Query OK, 0 rows affected (0.01 sec)mysql> desc db1.t7; +-------+--------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------------------------+------+-----+---------+-------+ | name | char(15) | YES | | NULL | | | sex | enum('boy','girl') | YES | | NULL | | | likes | set('eat','game','money','it') | YES | | NULL | | +-------+--------------------------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)mysql> insert into db1.t7 values ("nb" , "boy" ,"eat,it"); Query OK, 1 row affected (0.00 sec)mysql> insert into db1.t7 values ("wk" , "man" ,"eat,it"); #報錯,sex字段只能選擇“boy”“girl” ERROR 1265 (01000): Data truncated for column 'sex' at row 1 mysql> insert into db1.t7 values ("wk" , "girl" ,"it"); Query OK, 1 row affected (0.01 sec)mysql> desc db1.t7; +-------+--------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------------------------+------+-----+---------+-------+ | name | char(15) | YES | | NULL | | | sex | enum('boy','girl') | YES | | NULL | | | likes | set('eat','game','money','it') | YES | | NULL | | +-------+--------------------------------+------+-----+---------+-------+ 3 rows in set (0.00 sec) like不能用做字段名,like是mysql的命令!!!!

總結

以上是生活随笔為你收集整理的Mysql数据库基础(一)基本概述、构建服务、基本管理、数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。