前端MySQL數據庫知識點

阿里雲大學 鏈接地址:https://edu.aliyun.com/course/153/lesson/list
mysql 數據庫的簡單介紹,安裝配置MYSQL,基本的SQL命令。

01 簡介

SQL:一種編程語言,strcutured query language 結構化的查詢語言,主要用於數據庫中的增刪改查

select * from tb

MySQL 關係型數據庫,是數據庫的一種(其他的Oracle)。MYSQL是開源數據庫。

02 安裝

官網:dev.mysql.com/downloads/mysql

windows 安裝

在官網下載安裝包後,選擇默認的developer安裝方式進行安裝;

安裝過程中如果檢測到office中缺少插件,可以不用處理,因爲主要在CLI模式下使用MYSQL

安裝中需要設置root用戶的密碼,其他類型的用戶(不添加其他用戶)

按照安裝包的流程安裝完成後,可以在任務管理器下面看到服務正在運行,需要在cmd下面確認安裝.

mysql -u root -p
# -u 表示用戶 -p 表示需要密碼

linux 安裝

sudo yum install mysql mysql-server
sudo apt-get install mysql mysql-server (ubuntu)
mysqladmin -u root -p password 'root'
# 設置新密碼是root

Mac 安裝

安裝包的格式是 dmg 安裝完畢後需要設置root密碼

/usr/local/mysql/bin/mysqladmin -u root -p password root
# 安裝測試成功,密碼和開機密碼一致

開啓或者關閉服務有兩種方法

CLI

sudo /Library/StartupItems/MySQLCOM/MYSQLCOM start | stop | restart

GUI

系統配置 - MYSQL - stop |start

注意:安裝過程中,會選擇強密碼或者是弱密碼。現在本地測試使用弱密碼。密碼最少是8位,這裏設置12345678 作爲root的密碼。

注意2

如果mysql已經運行,但是輸入 mysql 顯示命令不存在:遇上-bash: mysql: command not found的情況彆着急

這個是因爲/usr/local/bin目錄下缺失mysql導致,只需要一下方法建立軟鏈接,即可以解決:
把mysql安裝目錄,比如MYSQLPATH/bin/mysql,映射到/usr/local/bin目錄下:

# cd /usr/local/bin
# ln -fs /MYSQLPATH/bin/mysql mysql

還有其它常用命令mysqladmin、mysqldump等不可用時候都可按用此方法解決。
注:其中MYSQLPATH是mysql的實際安裝路徑(MAC 默認路徑 /usr/local/mysql/bin/mysql)

原文鏈接:https://www.cnblogs.com/yang1314/p/9288767.html

03 配置

MYSQL 的配置文件是一個文本文件 my.cof

Mac 的文件路徑是 /usr/local/mysql/my.cof 默認的配置文件是空的

可以配置字符集,緩存大小等

[client]
default-character-set=utf8
# 添加字符集,避免亂碼

[mysqld]
character-set-server=utf8
default-storage-engine=INNODB
# 默認存儲引擎 INNODB

修改配置後,需要重啓 mysql (或者在設置中重啓)

sudo /Library/StartupItems/MySQLCOM/MYSQLCOM restart

自己配置的問題:使用vim編輯器保存的時候,不能保存配置;使用sudo也不行

“/usr/local/mysql-8.0.18-macos10.14-x86_64/my.cof” E212: Can’t open file for writing
Warning: Changing a readonly file

04 數據庫操作

show databases;
create database gc;
drop database gc;

不同數據庫的數據是不會干擾的。數據庫是數據庫軟件中基本的單位

05 數據類型

database 包括 tables 表中每一行就是一條數據;列就是不同的字段,不同的字段對應不同的數據類型和數據結構(例如ID是自增長的整形,Name是長字符串),是否有默認值等。下面是常見的數據類型。根據實際業務邏輯使用不同的數據類型。

文本類

VARCHAR(size) 長度小於255的可變長度字符串:varchar 長度小於65535字符(通常文本足夠使用),長度可以改變(mqsql 5.0.3 之前表示65535字節),查詢速度中等

TEXT 長度中等的字符串,text 字符串長度不受限制,查詢速度最慢,通常優先使用varchar

LONGTEXT 長度很長的字符串

CHAR:char 表示傳統的字符串,字符串的長度小於255字符,長度固定,適用於較短固定長度的數據(身份證號和電話號),查詢錶速度最快

Foreign key 外鍵

primary key 主鍵

在mysql中,如果把表的主鍵設爲auto_increment類型,數據庫就會自動爲主鍵賦值。

日期類

DATETIME 年月日時分秒

數值類

TINYINT -128~127 或者存儲布爾值

INT 小數字

BIGINT 大數字(ID,自增長)

DOUBLE 浮點型(不使用FLOAT)

06 數據表操作(table)

CREATE TABLE account(
  id bigint(20),
  createTime datetime,
  ip varchar(255),
  mobile varchar(255),
  name varchar(255),
  brief text,
  comments text,
  location varchar(255),
  qq varchar(255),
  gender int(11),
  city varchar(255),
  province varchar(255)
);

drop table account;

describe account;
# 查看當前的表的內部結構

create database Michael;
use Michael;
show tables;
CREATE TABLE gc(...);
describe gc;
drop table gc;

表重命名

alter table 表名 rename 新表名

07 列操作

增加刪除表的列

alter table 表名 add 新列名 列數據類型 not null default 1;
# 後面的 not null default 1 是可選參數
alter table 表名 drop 已有列名;

修改列名或者數據類型: 可以單獨修改列名後者數據類型,可以一起修改列名和數據類型

alter table 表名 change 舊列名 新列名 新的數據類型

08 表數據操作

insert 插入

增加(插入)表數據

insert into 表名 values(key1, key2, key3...)
insert into tableName (column1, column2) values(key1, key2)

select 查詢

查詢表數據

select * from 表名
select 列名1, 列名2 from 表名

where 篩選

select * from tableName where title = 't';
# 查詢條件可以是大於小於等於不等於,或者between範圍
# 可以通過 and or 進行多元選擇,括號增加優先級
# 注意:判斷相等是 = 不是兩個等號
select * from gc where name = 'Michael' and (id = 20 or id = 22);

判斷 null 是特殊的,需要通過 is is not 判斷,不能通過 = != 判斷

select * from gc where email is null and name is not null;

distinct 去重

如果篩選過程中有重複的數據,那麼可以加上關鍵字 distinct 去除重複的行。下面的查詢結果中,如果name和age相同的數據有多行,那麼結果中只顯示一行

select distinct name,age from gc;

order by 排序

升序或者降序

# 查詢結果排序(升序或者降序) order by columnName desc/asc
select * from gc order by id asc;
# 將查詢的結果按照ID升序的情況進行排序
select * from gc order by age asc, name desc;

limit 限制

使用 limit 截取查詢結果(類似於splice函數)limit 第一個參數是開始的位置(默認是0,可以不選),第二個參數是截取的數量。

select * from gc [where name is not null] [order by id asc] limit 5;
select * from gc [where name is not null] [order by id asc] limit 3, 5;
# 中括號內部是可選參數(order必須在where後面)
# 第一句:在獲取的結果中,截取前五條記錄(index = 0 到 index = 4)
# 第二句:limit 從index=3 開始截取,截取5條記錄

組合使用 insert select

可以在一個表中查詢數據,select * from table, 然後把查詢的結果插入到另一個表中(數據遷移會用到)

insert into account values(10);
insert into account select name, age from oldAccount;

update 更新

update tableName set columnName = newValue where XXX

如果使用where添加,那麼修改滿足條件的部分;否則修改整列的數據;

update account set name = 'Tom', email = '[email protected]' where id = 1;

where 高級用法

in 字符串範圍(離散值)

select * from account where id in (value1, value2...);
select * from account where id in (select id from oldAccount where id  < 10);

從一個集合中選擇另一個集合(選擇的可以使字符串範圍,是數值範圍的擴大)

between 數值範圍(連續)

select * from account where id between 5 and 10;
# 這裏的選擇是[5, 10]
select * from account where id not between 5 and 10;

# Like 字符串的模糊匹配
select * from account where name like '%ab%';
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章