中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

初識MySQL之——SQL語言基礎

發布時間:2020-04-04 00:26:05 來源:網絡 閱讀:823 作者:志_恒 欄目:MySQL數據庫

寫在前面


  在對數據庫的日常管理和應用中,不論管理員合適要訪問一個數據庫,幾乎都要使用到SQL語言,因此,熟練掌握SQL語言以及其腳本程序的編寫是非常重要的。SQL(結構化查詢語言)是目前最流行的關系型數據庫查詢語言,也是數據庫的標準語言。

數據庫語言分類


  數據語言按照不同的功用可以分為四大類:數據庫定義語言(DDL)、數據庫操作語言(DML)、數據庫控制語言(DCL)、數據庫查詢語言(DSL)。

DDL:數據庫定義語言由一組SQL命令組成,用于創建和定義數據庫對象。比如可以創建數據庫,創建表,修改視圖等。數據庫對象有庫、用戶、視圖、表、觸發器、以及存儲過程等。DDL語句以及其功能如下:

create

alter

drop

rename

truncate

刪除數據庫對象

修改數據庫對象

創建數據庫對象

修改數據庫對象名稱

刪除表的全部內容

DML:數據庫操縱語言主要用來處理數據庫中的數據內容,增刪改等關于數據的內容變更的操作。

insert

update

delete

call

merge

commit

rollback

插入數據到表或者視圖

更新

刪除

調用過程

合并操作

將當前更改的事物提交,寫入數據庫

回滾,取消上次提交以來的所有操作

DCL:數據庫控制語言一般用來修改數據庫的操作權限問題

grant

revoke

授予權限

回收權限

DSL:數據庫查詢語言,對數據庫進行內容的查詢。其語法在整個SQL語言中最復雜,最豐富。功能也非常強大。

select

從表或者視圖中檢索數據

注意:對于MySQL等數據庫管理軟件來講,它不區分大小寫。但是為了養成良好的編程習慣還是要遵循一定的規則。建議SQL關鍵字大寫或者一直保持一致的書寫方式。因為SQL執行過的SQL關鍵字保存在緩存中,一致的書寫方式更容易緩存命中,提高執行效率。

SQL語句簡單實例


幫助使用方法

學習任何東西學會使用幫助用法是自我提高最有效的方式。mysql使用help keywords來查看幫助信息。

例如:

MariaDB [(none)]> help drop database    刪庫的正確姿勢

Name: 'DROP DATABASE'

Description:

Syntax:

DROP {DATABASE | SCHEMA} [IF EXISTS] db_name


簡單實例

[root@zachary  ~]#  mysql -u root –p

MariaDB  [(none)]> show databases;  #顯示所有數據庫

+--------------------+

|  Database          |

+--------------------+

|  information_schema|

|  mysql             |

|  performance_schema|

|  test              |

+--------------------+

4  rows in set (0.00 sec)

創建數據庫

MariaDB  [(none)]> create database if not exists zachary; 如果數據不存在就創建

Query  OK, 1 row affected (0.00 sec) 

MariaDB  [(none)]> use Zachary  把當前使用的數據庫切換為Zachary

Database  changed

創建表

MariaDB  [zachary]> create table person(

    -> id tinyint primary key,

    -> name varchar(8) not null,

    -> age tinyint);

Query  OK, 0 rows affected (0.02 sec)

MariaDB  [zachary]> show tables;

+-------------------+

|  Tables_in_zachary |

+-------------------+

|  person              |

+-------------------+

1  row in set (0.01 sec)

修改表

MariaDB  [zachary]> desc person;  #查看表結構

+-------+------------+------+-----+---------+-------+

|  Field | Type       | Null | Key |  Default | Extra |

+-------+------------+------+-----+---------+-------+

|  id    | tinyint(4) | NO   | PRI | NULL    |        |

|  name  | varchar(8) | NO   |      | NULL    |       |

|  age   | tinyint(4) | YES  |      | NULL    |       |

+-------+------------+------+-----+---------+-------+

3  rows in set (0.00 sec)

 

MariaDB  [zachary]> alter table person modify id int; 修改id字段的數據類型

MariaDB  [zachary]> alter table person add email varchar(20);新增列email

MariaDB  [zachary]> desc person;

+-------+-------------+------+-----+---------+-------+

|  Field | Type        | Null | Key |  Default | Extra |

+-------+-------------+------+-----+---------+-------+

|  id    | int(11)     | NO    | PRI | NULL    |       |

|  name  | varchar(8)  | NO    |     | NULL    |        |

|  age   | tinyint(4)  | YES   |     | NULL    |        |

|  email | varchar(20) | YES  |     | NULL     |       |

+-------+-------------+------+-----+---------+-------+

4  rows in set (0.01 sec)

MariaDB  [zachary]> alter table person drop email ; #刪除列mysql不支持多列刪除

MariaDB  [zachary]> alter table person change age sex varchar(2);修改列名

MariaDB  [zachary]> alter table person rename to student; 重命名表

MariaDB  [zachary]> rename table person to student; 重命名表

修改約束條件

MariaDB  [zachary]> alter table student add unique key(name);添加唯一鍵

MariaDB  [zachary]> alter table student add check(sex in('m','f'));添加check約束

MariaDB  [zachary]> desc student;

+-------+------------+------+-----+---------+-------+

|  Field | Type      | Null | Key |  Default| Extra |

+-------+------------+------+-----+---------+-------+

|  id    | int(11)   | NO   | PRI | NULL    |       |

|  name  | varchar(8)| NO   | UNI | NULL    |       |

|  sex   | varchar(2 | YES  |     | NULL    |       |

+-------+------------+------+-----+---------+-------+

3  rows in set (0.00 sec)

刪除表

MariaDB  [zachary]> drop table student;

插入數據

MariaDB  [(zachary)]> create table if not exists test(

    -> id tinyint unsigned primary key,

    -> name varchar(20) not null,

    -> sex enum('m','f') default 'm',      默認值 插入時若為指定值默認為'm'

-> email varchar(30));

MariaDB [zachary]>  insert into test values(1,'zachary','m','zachary_yzh@126.com');按照創建數據庫字段的順序插入數據

MariaDB [zachary]>  insert into test (id,sex,name,email) values(2,'f','marry','marry@163.com');按照自定義的字段順序插入數據

MariaDB [zachary]>  insert into test (id,sex,name,email)  values(3,'m','jack','jack@qq.com'),(4,null,'mali','mali@foxmail.com'); 一次插入多行數據

查詢和修改表中數據

MariaDB  [zachary]> select * from test;  查詢表中所有數據

+----+---------+------+---------------------+

|  id | name   | sex  | email               |

+----+---------+------+---------------------+

|  1 | zachary | m    | zachary_yzh@126.com |

|  2 | marry   | f    | marry@163.com       |

|  3 | jack    | m    | jack@qq.com         |

|  4 | mali    | NULL | mali@foxmail.com    |

+----+---------+------+---------------------+

MariaDB  [zachary]> update  test set sex='f'  where id=4;  修改mali的性別

MariaDB  [zachary]> select name from test where sex='m';查看表中的男性都有誰。

MariaDB  [zachary]> select name from test where id >=3; id大于3的人

MariaDB  [zachary]> select name from test where id >=2 and id <=4;使用邏輯運算確定查詢條件。表示id24之間的人。邏輯運算符有and or not

MariaDB  [zachary]> select name from test where id between 2 and 4;使用between and關鍵字來確定區間范圍。between and為閉區間

MariaDB  [zachary]> insert into test (id,name)value(5,'tom');插入tom的信息。

MariaDB  [zachary]> select * from test where name='tom'; 查看tom的信息。插入時沒有插入性別。使用在創建表時所使用的默認值。

+----+------+------+-------+

|  id | name | sex  | email |

+----+------+------+-------+

|  5 | tom   | m    | NULL  |

+----+------+------+-------+

1  row in set (0.01 sec)

MariaDB  [zachary]> select name from test where email rlike '.*[(163)|(126)].*'; 查看使用網易郵箱的人有哪些,rlike正則表達式匹配方式

MariaDB  [zachary]> select * from test where name like '__r%';通配符匹配查詢方式使用like關鍵字,查詢名字中第三個字母為r的用戶信息。_表示任意單個字符,%表示任意長度的任意字符。

MariaDB  [zachary]> select * from test where email is  null;查詢沒有使用郵箱的用戶。在查詢關鍵字為NULL時不能使用==號來進行匹配,要使用is null 或者is not null

使用select語句創建表中數據

MariaDB  [zachary]> create table  emp select  * from test;

MariaDB  [zachary]> select * from emp;

+----+---------+------+---------------------+

|  id | name   | sex  | email               |

+----+---------+------+---------------------+

|  1 | zachary | m    | zachary_yzh@126.com |

|  2 | marry   | f    | marry@163.com       |

|  3 | jack    | m    | jack@qq.com         |

|  4 | mali    | f    | mali@foxmail.com    |

|  5 | tom     | m    | NULL                |

+----+---------+------+---------------------+

5  rows in set (0.00 sec)

刪除表中數據

MariaDB  [zachary]> delete from emp where email is null;刪除email為空的用戶數據

MariaDB  [zachary]> truncate emp; 清空表中所有數據(不記錄日志)

創建用戶及授權

MariaDB  [zachary]> create user 'yzh'@'172.18.%.%' identified by 'yzh01';  創建用戶及修改密碼

mysql中用戶賬號由用戶名和用戶主機名組成。主機可以使用網段,通配符或者主機名,使用主機時要能與解析的ip相對應。

MariaDB [zachary]> set  password for 'yzh'@'172.18.%.%'=password('123456'); 修改用戶口令的正確姿勢,不建議直接更改mysql.user

MariaDB [zachary]>  grant select ,insert on Zachary.test to 'yzh'@'172.18.%.%'; 授予用戶yzhtest表的查詢和插入權限。

MariaDB [zachary]>  grant ALL on zachary.* to 'tony'@'localhost' identified by 'zacharyadmin'  with grant option;;在授予權限的時候直接創建用戶。授予tony用戶在Zachary數據庫上的所有權限,并且該用戶可以給其他用戶授予權限,with grant  option選項可以在授予其他用戶自己所擁有的權限,慎用。

MariaDB  [zachary]> revoke insert on zachary.test   from 'yzh'@'172.18.%.%'; 回收yzh用戶在Zachary.test表的插入權限

 

MariaDB [(none)]> create user  'test'@'localhost' identified by '123456';創建一個test用戶

[root@zachary ~]#  mysql -u tony -p   使用tony用戶連接

Enter password:

MariaDB [zachary]>  select user();

+----------------+

| user()         |

+----------------+

| tony@localhost |

+----------------+

1 row in set (0.00 sec)

MariaDB  [zachary]> grant select on zachary.* to 'test'@'localhost';

使用tony用戶授予test用戶對Zachary數據庫的查詢操作。

[root@zachary  ~]#  mysql -u root –p

MariaDB  [(none)]> revoke all on zachary.* from 'tony'@'localhost';回收tony用戶的所有權限,但是他授權的其他用戶的權限不受影響。Revoke的權限不會級聯回收

[root@zachary  ~]#  mysql -u test -p   #使用test用戶仍舊能夠查詢

MariaDB  [(none)]> select * from zachary.test;

+----+---------+------+---------------------+

|  id | name   | sex  | email               |

+----+---------+------+---------------------+

|  1 | zachary | m    | zachary_yzh@126.com |

|  2 | marry   | f    | marry@163.com       |

|  3 | jack    | m    | jack@qq.com         |

..  ..

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石屏县| 卢氏县| 深泽县| 英山县| 马鞍山市| 保德县| 图木舒克市| 威信县| 信阳市| 宁强县| 象山县| 皋兰县| 云南省| 彩票| 海门市| 乳山市| 陆丰市| 韩城市| 民和| 嘉善县| 长汀县| 渑池县| 临桂县| 获嘉县| 芜湖县| 和林格尔县| 江山市| 遵化市| 天峨县| 东辽县| 武安市| 元谋县| 鄂伦春自治旗| 龙江县| 封开县| 崇明县| 正安县| 新泰市| 田林县| 静乐县| 云浮市|