mysql8.0學習筆記

mysql8.0學習筆記

1.安裝過程:略。

MySQL有三大類數據類型, 分別爲數字、日期\時間、字符串, 這三大類中又更細緻的劃分了許多子類型:

數字類型
整數: tinyint、smallint、mediumint、int、bigint
浮點數: float、double、real、decimal
日期和時間: date、time、datetime、timestamp、year
字符串類型
字符串: char、varchar
文本: tinytext、text、mediumtext、longtext
二進制(可用來存儲圖片、音樂等): tinyblob、blob、mediumblob、longblob
複製代碼

2.關於mysql server (在linux系統下面(ubuntu18.04)).

service mysql start; (開啓服務) 須要管理員密碼
service mysql stop; (關閉服務)
service mysql status; (查看mysql服務運行狀態)
複製代碼

3.登陸mysql

mysql -h ip地址 -u 用戶 -p密碼;
例如:一個須要在本機登陸的用戶名是suhang 密碼是123456 登陸命令應該是這樣的 mysql -h localhost -u suhang -p123456
其中localhost表明的是本機的ip地址(這是普通的用戶的登陸方式);對於root用戶 只須要講用戶名換爲root便可.
複製代碼

4.建立用戶

create user 用戶名 identified by 密碼;
例如:建立一個用戶名是suhang密碼是123456的用戶: create user 'suhang' identified by '123456';
複製代碼

5.爲某一個數據庫添加用戶,而且給予用戶相應的權限具體的權限以下:

讀取 select
更新 update
刪除 delete
建立 create
刪除 表,庫 drop
如果挨個添加麻煩 可使用 all privileges 附給全部權限
賦予權限的命令以下 grant 權限 on 數據庫名/數據表名.* to '用戶名'@'%'; 百分號表明的是登陸該用戶的主機地址能夠是任意的。
一個簡單的例子:爲zhangsan數據庫添加一個zhang的管理員,賦予zhang的權限有讀取select和刪除drop的操做,要求該用戶只能夠經過本機登錄:
grant select drop zhangsan.* to 'zhang'@'localhost';
要是要求該用戶能夠從任意的ip地址登陸,將%改成localhost.
相應的:有增長權限,就會有移除權限,下面介紹移除權限的命令:
revoke 權限 on 數據庫名/表名.* from '用戶名'@'%';須要注意的是增長權限和刪除權限以後,都須要執行權限更新的操做執行flush privileges;
複製代碼

6.查看用戶對於數據庫的操做權限;

selct user,db,drop_priv,select_priv,delete_priv,update_priv,create_priv from mysql.db where user='用戶名';
上面的命令會打印出查找的用戶對於本身的數據庫的執行權限(僅有命令中的權限)
複製代碼

7.顯示有多少用戶(以管理員的身份登陸)

select user from mysql.user;
複製代碼

8.爲了防止用戶登陸mysqlde的方法:(1).鎖定用戶: alter user '用戶名'@'ip地址' account lock;

(2).解鎖用戶: alter user '用戶名'@'ip地址' account unlock;
複製代碼

9.沒法更改用戶名只能建立新用戶,將原來的用戶權限賦值給新用戶;具體操做以下:

create user '用戶'@'ip' identified by 'new_password';
grant '舊用戶'@'ip' to '新用戶'@'ip';
複製代碼

10.查詢當前全部的數據庫:show databases;

11.建立數據庫: create database 數據庫名; 刪除當前的數據庫: drop database 數據庫名;

12.使用當前的數據庫:use 數據庫名;

13.數據庫引擎 show engines;查詢結果中,engine參數指存儲引擎名稱;Support參數表明mysql是否支持該引擎;transaction參數表示是否支持事物處理;XA參數表明的是否分佈式交易處理的XA

規範;Savepoints參數表示是否支持保存點,以方便事物的回滾操做。
複製代碼

14.建立表:在執行use 數據庫名;命令以後便可執行建立表的操做;

create table 表名 {
	屬性名 數據類型 {完整約束條件}
	屬性名 數據類型 {完整約束條件}
	....
	屬性名 數據類型 {完整約束條件}
};
下面是個簡單的例子:
mysql> use example;
Database changed
mysql> create table student(
	-> id int,
	-> name varchar(20)
	-> );
Query OK, 0 rows affected (0.09 sec)
上面建立表的時候涉及到一個完整性約束條件,下面就列出一個完整性約束條件表:
約束條件           說明
PRIMARY KEY       標識該屬性爲該表的主鍵,能夠惟一的標識對應的元組
FOREIGN KEY       標識該屬性爲該表的外鍵,是與之聯繫某表的主鍵
NOT NULL          標識該屬性不能爲空
UNIQUE            標識該屬性的值是惟一的
AUTO_INCREMENT    標識該屬性的值是自動增長的,這是Mysql的SQL語言的特點
DEFAULT           爲該屬性設置默認值
下面講解一下完整性約束條件的應用:
(1)單字段主鍵格式:屬性名 數據類型 PRIMARY KEY
示例:
mysql> create table student1(
	-> id int PRIMARY KEY,
    -> name varchar(20),
    -> );
Query OK, 0 rows affected (0.06 sec)
(2)多字段主鍵格式:屬性名 數據類型 PRIMARY EKY(屬性名1,屬性名2,....,屬性名n)
示例:
mysql> create table student2(
    -> id int,
	-> stu_id int,
	-> name varchar(20),
	->PRIMARY KEY(id,stu_id)
	->);
Query OK,0 rows affected(0.00 sec)
(3)設置表的外鍵
格式:CONSTRAINT 外鍵別名 FOREIGN KEY(屬性1,屬性2,...,屬性n)REFERENCES 表名(屬性1',屬性2',...,屬性n')
示例:
mysql> create table teacher(
	-> id int PRIMARY KEY,
	-> stu_id int,
	-> name varchar(20),
	-> CONSTRAINT STUID FOREIGN KEY(stu_id)REFERENCES student1(id)
	->);
Query OK, 0 rows affected(0.00 sec)
(4)設置表的非空約束
格式:屬性名 數據類型 NOT NULL
(5)設置表的惟一約束
就是這個屬性的值不能重複的
格式:屬性名 數據類型 UNIQUE
(6)設置標的屬性的值自動增長
AUTO_INCREMENT約束的字段能夠是任何整數類型(TINYINT,SMALLINT,INT和BIGINT),在默認狀況下,該字段的值是從1開始自增
格式:屬性名 數據類型 AUTO_INCREMENT
(7)設置標的屬性的默認值
格式:屬性名 數據類型 DEFAULT 默認值
下面對於4-7進行綜合性講解
mysql> create table student3(
	->id int PRIMARY KEY AUTO_INCREMENT,
	->name varchar(20) NOT NULL,
	->sex varchar(10) DEFAULT 'male'
	->);
Query OK, 0 rows affected (0.01 sec)
複製代碼

15.查看錶的結構

查看錶的基本結構語句DESCRIBE
格式: DESCRIBE 表名;
經過查看錶的結構,就很明確的對錶進行解讀,並且能夠查看一下本身建立的表有沒有錯誤,這個SQL語句必需要會的啊
複製代碼

16.查看錶詳細結構語句 SHOW CREATE TABLE 經過這個語句能夠查看錶的詳細定義,除了字段名,字段的數據類型,約束條件外,還能夠查看錶的默認引擎和字符編碼

格式 SHOW CREATE TABLE 代表;
複製代碼

17.修改表:

(1).修改表名
代表能夠在一個數據庫中惟一的肯定一個表。
格式:alter table 舊錶名 raname 新表名;
示例:
mysql> alter table student raname student4;
Query OK, 0 rows affected (0.11 sec)
mysql> describe student;
ERROR 1146 (42S02): Table 'example.student'
doesn't exist
由上面的能夠看出,更名後的表已經不存在了.
複製代碼

18.修改字段的數據類型

格式:alter table 表名 MODIFY 屬性名 數據類型;
複製代碼

19.修改字段名

格式:alter table 表名 CHANGE 舊屬性名 新屬性名 新數據類型;
複製代碼

20.增長字段

格式:alter table 表名 add 屬性1 數據類型[完整性約束條件] [first|after 屬性名2]
其中,’屬性名1‘參數指須要增長的字段的名稱;'FIRST'參數是可選參數,其做用是將新增字段設置爲表的第一個字段;'alter'參數也是可選參數,其做用是將新增字段添加到’屬性名2‘
後面;’屬性名2‘固然就是指表中已經有的字段.
示例:在student1表中添加字段teacher_name ,數據類型爲varchar(20),完整性約束條件是 NOT NULL,將此字段添加到id字段的後面;
alter table student1 add teacher_name varchar(20) NOT NULL after id;
複製代碼

21.刪除字段

格式: alter table 表名 drop 屬性名;
示例:在student1中刪除剛纔添加的屬性名teacher_name
alter table student1 drop teacher_name;
複製代碼

22.更改表的存儲引擎

格式:alter table 表名 engine=存儲引擎名;
複製代碼

23.刪除表的外鍵約束

格式:alter table 表名 drop foreign key 外鍵別名;
複製代碼

24.刪除沒有被關聯的普通表: drop table 表名;

刪除被其餘表關聯的父表: 方法1:先刪除子表,再刪除父表 方法2:刪除父表的外鍵約束(上面有介紹),在刪除該表
複製代碼

25.將數據插到數據庫表中, 使用的通常形式以下:

insert [into] 表名 [(列名1, 列名2, 列名3, ...)] values (值1, 值2, 值3, ...);
有時咱們只須要插入部分數據, 或者不按照列的順序進行插入, 可使用這樣的形式進行插入:
insert into students (name, sex, age) values(「孫麗華」, 「女」, 21);
複製代碼

26.查詢表中的內容

select 屬性名 from 表名稱 [查詢條件];
按照特定條件進行查詢
where 關鍵詞用於指定查詢條件, 用法形式爲: select 列名稱 from 表名稱 where 條件;
以查詢全部性別爲女的信息爲例, 輸入查詢語句: select * from students where sex=」女」;
更加高級的操做:
查詢年齡在21歲以上的全部人信息: select * from students where age > 21;
查詢名字中帶有 「王」 字的全部人信息: select * from students where name like 「%王%」;
查詢id小於5且年齡大於20的全部人信息: select * from students where id<5 and age>20;
複製代碼

27.更新表中的數據:

update 表名稱 set 列名稱=新值 where 更新條件;
示例:將id爲5的手機號改成默認的」-「: update students set tel=default where id=5;
將手機號爲 13288097888 的姓名改成 「張偉鵬」, 年齡改成 19: update students set name=」張偉鵬」, age=19 where tel=」13288097888″;
複製代碼

28.刪除表中的數據

delete from 表名稱 where 刪除條件;
刪除id爲2的行: delete from students where id=2;
刪除全部年齡小於21歲的數據: delete from students where age<20;
刪除表中的全部數據: delete from students;
複製代碼

備註:上述文件的列名稱就是字段mysql

相關文章
相關標籤/搜索