數據庫終端與服務器的鏈接建立、服務器的開啟與關閉、基本增刪改查數據操作

sql(structured query language 結構化的查詢語言);

資料庫中的語句和表屬性不區分大小寫,隻有表的名字區分大小寫;

資料庫的執行語句以分號','為結尾表示語句的結束;

註:sql中表示字符串的時候,既可以使用單引號也可以雙引號;

資料庫的分類:

資料庫的分類分為關系型資料庫和給關系型資料庫;

命令集合:

$ whereis mysql #查找資料庫的路徑

sudo /etc/init.d/mysql stop #關閉mysql伺服器 (計算機默認開啟)

sudo /etc/init.d/mysql start #啟動mysql伺服器

mysql -u root -p #打開終端客戶端,建立終端與mysql的鏈接

password:123456

\c #清空寫下的語句

\q #退出終端客戶端

CREATE DATABASE testDB; #建立資料庫

SHOW DATABASES; #顯示資料庫

use testDB; #使用資料庫

select * from customers;

show tables;

show create table customers;

1.關系型資料庫建模(構件塊):

數據以行和列的形式存儲數據;

這一系列的行和列成為表(關系);

表中每一行表示一條記錄(元組),即行-元組;

表中每一列表示記錄的一個屬性,即-列-屬性;

一組表組成瞭資料庫;

表與表之間的邏輯關聯叫關系。

2.關系型資料庫的核心內容是關系,即二維表:

常用的關系操作:查詢;插入、刪除、修改操作;

關系操作的對象是關系,操作結果也是關系;

關系操作的特點是集合操作方式,即操作的對象和結果都是集合。

3.集合操作:

選擇:

從表中抽取出滿足給定限制條件的行

選擇的結果是行;

投影的結果是列;

並:

屬於表1或者屬於表2的元組構成的集合,前提是表的屬性的順序和個數都相同

差:

兩個表中不一樣的部分,前提是兩個表中具有相同字段(屬性名可以不同)

笛卡爾積:

將兩個表中的元組以所有可能的方式組合起來;

元組數量是各個表的元組數(行數據)的乘積

4.mysql伺服器和客戶端

在Ubuntu安裝MySQL,要安裝

伺服器 – 管理資料庫(相當於QQ後臺);

客戶端 – 一系列訪問數據和創建應用的工具(相當於QQ軟件)。

實例:

終端打開資料庫:

mysql -u root -p123456 #ser為root,password為123456,-p後面沒有空格

mysql> show databases; #後面有分好表示結束

+——————–+

| Database |

+——————–+

| information_schema |

| mysql |

| performance_schema |

| sys |

+——————–+

4 rows in set (0.01 sec)

圖形界面資料庫:MySQL Workbench #點擊閃電開始運行程式

5.啟動MySQL伺服器(默認是開啟的,創建客戶端與伺服器的鏈接,所有都是先開啟伺服器後開啟客戶端):

終端建立與伺服器的鏈接:

mysql -u 用戶名 -p密碼 -h 伺服器名稱 -P 端口

例:mysql -u root -p123456

或者

mysql -u root -p

password:123456

6.退出sql客戶端程式(斷開與mysql伺服器的鏈接,退出客戶端即斷開):

quit;

\q

exit

7.清楚之前輸入的sql語句,重新開始輸入

\c

8.關閉MySQL伺服器:

sudo /etc/init.d/mysql stop #關閉mysql伺服器 (需要鍵入超級用戶的密碼)

sudo /etc/init.d/mysql start #啟動mysql伺服器

mysql -u root -p #打開客戶端,建立終端與mysql的鏈接

password:123456

實例:

yiquanchaoren@qiyu:~$ sudo /etc/init.d/mysql stop

[sudo] tarena 的密碼:

[ ok ] Stopping mysql (via systemctl): mysql.service.

yiquanchaoren@qiyu:~$ sudo /etc/init.d/mysql start

[ ok ] Starting mysql (via systemctl): mysql.service.

yiquanchaoren@qiyu:~$ mysql -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 4

Server version: 5.7.19-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

9.查找mysql伺服器的位置

yiquanchaoren@qiyu:~$ whereis mysql

實例:

mysql: /usr/bin/mysql /usr/lib/mysql /etc/mysql /usr/include/mysql /usr/share/mysql /usr/share/man/man1/mysql.1.gz

10.sql(structured query language 結構化的查詢語言)寫作規范

不區分字母的大小寫(註:MySQL對表的名字區分大小寫);

以關鍵字開頭:SELECT,INSERT,UPDATE,DELETE,ALTER,DROP,CREATE,USE,SHOW;

以分號;結尾

11.創建資料庫

CREATE DATABASE 資料庫名;

CREATE DATABASE testDB;

12.查詢已有的資料庫:

SHOW DATABASES;

實例:

mysql> CREATE DATABASE testDB;

Query OK, 1 row affected (0.00 sec)

mysql> SHOW DATABASES;

+——————–+

| Database |

+——————–+

| information_schema |

| mysql |

| performance_schema |

| sys |

| testDB |

+——————–+

5 rows in set (0.03 sec)

bug:沒有加分號,

13.選擇資料庫:

use 資料庫名

use testDB;

實例:

mysql> use testDB

Database changed

14.創建表格

create table 表名(column1 datatype,…,columnN datatype);

15.數據類型:

字符串:

定長 char

不定長 varchar

數值型:

整型 int

定長小數 decimal 例:decimal(5,2) 123.45

浮點型float

日期和時間

實例:

create table customers(ID INT,NAME VARCHAR(20),AGE INT,ADDRESS CHAR(25),SALARY DECIMAL(18,2));

實例:

mysql> use testDB

Database changed

mysql> create table customers(ID INT,NAME VARCHAR(20),AGE INT,ADDRESS CHAR(25),SALARY DECIMAL(18,2));

Query OK, 0 rows affected (0.04 sec)

16.查詢已有的表:

show tables

實例:

mysql> show tables;

+——————+

| Tables_in_testDB |

+——————+

| customers |

+——————+

1 row in set (0.00 sec)

17.選擇資料庫:

mysql> select * from customers;

Empty set (0.00 sec)

18.查詢已有的表

show tables;

19.查詢已有的表的各個字段(查詢使用表的所有屬性名稱和數據類型嗎)

show create table customers;

實例:

mysql> show create table customers;

+———–+

| Table | Create Table

+———–+

| customers | CREATE TABLE `customers` (

`ID` int(11) DEFAULT NULL,

`NAME` varchar(20) DEFAULT NULL,

`AGE` int(11) DEFAULT NULL,

`ADDRESS` char(25) DEFAULT NULL,

`SALARY` decimal(18,2) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

練習:

創建資料庫:schools

使用該資料庫;

創建表students,其中字段包括:

id int,name varchar(20),gender char(20),age int

查詢當前資料庫中的所有的表格

查詢表studets中的所有屬性名稱和數據類型

sudo mysql -u root -p123456

create database schools;

use schools;

create table student(id int,name varchar(20),gender char(20),age int)

show tables;

show create table student;

20.刪除表格

drop table 表名;

21.刪除資料庫:

drop database 資料庫名;

實例:

create database yangDB;

show databases;

use yangDB;

create table python(id int);

show tables;

drop table python;

show tables;

drop database yangDB;

show databases;

22.往表中插入數據

兩種語法:

(1)insert into 表名 (column1,column2,…,columnN) values (value1,value2,…,valueN);

(2)insert into 表名 values (value1,value2,value3,…,valueN);

實例:

insert into customers(id,name,age,address,salary) values (1,'Ann',30,'beijing',2000);

insert into customers(id,name,age,salary,address) values (2,'li',30,2000,'beijing'); #更換瞭屬性順序

insert into customers values (3,'jeremy',20,'shanghai',2000)

23.一次性插入N條數據:

insert into customers(ID,NAME,AGE,ADDRESS,SALARY) VALUES (4,'Bob',25,'beijing',6500),(5,'aaa',25,'beijing',6500),

(6,'bbb',25,'beijing',6500),(7,'ccc',27,'beijing',6500);

24.select查詢語句:

select column1,column2,…,columnN from 表名;

(1)查詢表中所有的記錄(包含所有列);

select * from 表名;

(2)自設定查找表中的記錄信息(非所有列):

select column1,column2 from 表名;

實例:

select * from customers;

select name,age from 表名;

25.用一個表去填充另一個表:

insert into 第二個表名

(column1,column2,…,columnN) select column1,column2,…,columnN from 第一個表

實例:

create table customers_2(ID INT,NAME VARCHAR(20),AGE INT,ADDRESS CHAR(25),SALARY DECIMAL(18,2));

insert into customers_2

(ID,NAME,AGE,ADDRESS,SALARY) select ID,NAME,AGE,ADDRESS,SALARY from customers;

26.指明操作符

代數:+-*/%

比較:=,!=,<>(不等於),>,<,>=,<=,!<,!>

邏輯:ALL , AND , ANY , BETWEEN , EXISTS ,

IN , LIKE , NOT , OR , IS NULL , UNIQUE

AND & OR:

select column1,column2,…columnN from 表名 where 條件1 and 條件2…and 條件N;

select column1,column2,…columnN from 表名 where 條件1 or 條件2…or 條件N;

27.where 條件語句(查詢,修改,刪除使用)

select column1,column2,…,columuN from 表名 where 條件;

實例:

select * from customers where name = 'Ann';

實例:

選擇customers表中,工資大於等於4000的顧客的姓名,地址,工資信息

select name,address,salary from customers where salary >= 4000;

實例:

select name,salary from customers where salary > 2000 and age <35;

練習:

查詢年齡大於24,工資大於5000或者小於3000的人的姓名,年齡,工資

select name,age,salary from customers where age > 24 and salary >5000 or salary < 3000;

select name,age,salary from customers where not(age > 24 and salary >5000 or salary < 3000);

註意:切記寫

select name,age,salary from customers where not(age > 24) and salary >5000 or salary < 3000;

結果中往往沒有實現not(age > 24) #@@@@@@@@@@@@@@@@@@@@@@@@@@@

28.查看當前庫

select database();

實例:

mysql> select database();

+————+

| database() |

+————+

| schools |

+————+

1 row in set (0.00 sec)

==========================================================================

練習:

創建資料庫:schools

使用該資料庫;

創建表students,其中字段包括:

id int,name varchar(20),gender char(20),age int

往表中插入幾條學生信息,要求用不同的方法進行插入:

首先插入一條數據,後同時插入多條數據,

創建一個新表叫做students_copy,

再復制students表到新表students_copy,選擇性別為女,並且年齡大於20歲的學生,將這些學生的插入到新生成的表students_copy

提示:

insert into

select …from

where …and

解:

create table students(id int,name varchar(20),gender char(20),age int

);

insert into students (id,name,gender,age) values (1,'yuxiu','F',24);

insert into students values (2,'yuanchenzhi','M',22);

insert into students (age,gender,name,id) values (19,'M','zhangyu',3);

insert into students (id,name,gender,age) values (4,'limingxia','F',19),(5,'zuoting','F',21),(6,'cuillixia','F',23);

create table students_copy(id int,name varchar(20),gender char(20),age int

);

insert into students_copy (id,name,gender,age) select id,name,gender,age from students where gender ='F' and age > 20;

執行結果:

mysql> select * from students_copy;

+——+———–+——–+——+

| id | name | gender | age |

+——+———–+——–+——+

| 1 | yuxiu | F | 24 |

| 5 | zuoting | F | 21 |

| 6 | cuillixia | F | 23 |

+——+———–+——–+——+

3 rows in set (0.00 sec)

mysql> select * from students;

+——+————-+——–+——+

| id | name | gender | age |

+——+————-+——–+——+

| 1 | yuxiu | F | 24 |

| 2 | yuanchenzhi | M | 22 |

| 3 | zhangyu | M | 19 |

| 4 | limingxia | F | 19 |

| 5 | zuoting | F | 21 |

| 6 | cuillixia | F | 23 |

| 3 | zhangyu | M | 19 |

+——+————-+——–+——+

7 rows in set (0.00 sec)

發佈留言