MySQL 簡述

1 概述
2 安裝
3 數據庫的操作
4 注意事項

Mysql概述

MySql是一種關系型數據庫

連接到mysql數據庫:mysql -u root -p

什么是SQL:結構化的查詢語句

SQL分類:

DDL:數據定義語言

? ?* create,alter,drop…

  DML:數據操縱語言

??? * update,insert,delete

  DCL:數據控制語言

??? * grant,if..

  DQL:數據查詢語言

??? * select

數據庫的安裝?

安裝
yum groupinstallmariadbmariadb-client
systemctlstart mariadb
systemctlenable mariadb
?提高安全性
mysql_secure_installation
1設置數據庫管理員root口令
2禁止root遠程登錄
3刪除anonymous用戶帳號
4刪除test數據庫

數據庫增刪查改

創建數據庫:語法:create database 數據庫 [character 字符集 collate 校對規則]

查看數據庫:

  查看所有數據庫:show databases;

  查看某個數據庫:show create database 數據庫名;

修改數據庫:語法:alter database 數據庫名 character 字符集 collate 校對規則

刪除數據庫:語法:drop database 數據庫名;

切換數據庫:use 數據庫名;

查看當前使用數據庫:select database();

數據庫表操作

創建表語法:

  create table 表名 (

???   字段名 類型(長度) 約束,

???   字段名 類型(長度) 約束,

???   字段名 類型(長度) 約束

  );

數據類型:

?Java類型:???????????? MySQL:

? byte/short/int/long?? tinyint/smallint/int/bigint

? String??????????????? char/varchar

??????????????????????????? * 區別?char是固定長度的字符串,varchar可變長度的字符串.

??????????????????????????? * char(8) 和 varchar(8)

??????????????????????????????? * 如果插入一個字符串hello 插入到char 那么 插入hello?? .插入到varchar中 插入hello

?float????????????????? float

?double???????????????? double

?boolean??????????? bit

?Date?????????????????? date/time/datetime/timestamp

??????????????????????? * datetime和timestamp都是既有日期又有時間的日期類型

??????????????????????????? * 區別? datetime需要使用外部傳入的日期.如果沒傳這個值就是Null. timestamp會使用系統當前的時間作為這個值的默認值.

?文本文件??????????????? Text

?二級制文件?????????????? BLOB

***** Oralce使用CLOB/BLOB

***** MYSQL中除了字符串類型需要設置長度其他的類型都有默認長度******

  • 約束:

單表約束:

* 主鍵約束:primary key (默認就是唯一非空的)

* 唯一約束:unique

* 非空約束:not null

  • 創建一個表:
  • ***** 創建表之前先選擇數據庫:use 某個數據庫;

create table employee(

??? eid int primary key auto_increment,

??? ename varchar(20) not null,

??? email varchar(30) unique,

??? birthday date,

??? job varchar(20),

??? resume text

);

【表的查看】

  • 查看數據庫中有哪些表:

* show tables;

  • 查看表結構:

* desc 表名;

【表的刪除】

  • 表的刪除:

?drop table 表名;

【表的修改】

  • 修改表添加列:

* alter table 表名 add 列名 類型(長度) 約束;

??? * alter table employee add image varchar(50);

  • 修改表刪除列:

* alter table 表名 drop 列名;

??? * alter table employee drop job;

  • 修改表的列的類型長度及約束:

* alter table 表名 modify 列名 類型(長度) 約束;

??? * alter table employee modify image varchar(80) not null;

  • 修改表的列名

* alter table 表名 change 舊列名 新列名 類型(長度) 約束;

??? * alter table employee change image eimage varchar(60);

  • 修改表名

* rename table 舊表名 to 新表名;

??? * rename table employee to user;

  • 修改表的字符集:

* alter table 表名character set 字符集;

??? * alter table user character set gbk;

*******使用SQL操作數據庫中的表的記錄(對表的記錄的CRUD的操作)******

【插入記錄】

  • 語法

* insert into 表名 (列名,列名,…) values (值1,值2,…);???? —插入指定列的值

* insert into 表名 values (值1,值2,…);??????????????????? —插入所有列的值

?

  • 注意事項:

* 列名的個數與值的個數對應.

* 列的類型與值的類型對應.位置也要對應.

* 列的類型如果是字符串或者日期,寫值的時候使用單引號將值引起來.

* 插入的值的最大長度不能超過列的最大長度.

【修改記錄】

  • 語法:

* update 表 set 列名=值,列名=值 [where 條件];

  • 注意事項:

* 列名和值類型也要一致.

* 值不能超過列的最大長度.

* 值是字符串或日期,需要使用單引號.

  • 練習:

* 修改employee表中所有記錄的job為WORKER

??? * update employee set job=’WORKER’;

* 修改employee表將name為aaa的郵箱改為aaa@163.com

?? ?* update employee set email = ‘aaa@163.com’ where ename = ‘aaa’;

* 修改employee表將name為bbb的郵箱改為bbb@163.com同時修改jobHR

?? ?* update employee set email = ‘bbb@163.com’ , job=’HR’ where ename=’bbb’;

【刪除記錄】

  • 語法:

* delete from 表 [where 條件];

  • 注意事項:

* 刪除表中的一行記錄,不能刪除某列值

* 如果沒有條件刪除表中的所有列.

  • 練習:

* 刪除id為8的記錄:

?? ?* delete from employee where eid = 8;

* 刪除所有記錄:

??? * delete from employee;

  • 刪除表中的所有記錄truncate table 表名? 和 delete from 表? 區別?

* 區別:

??? * truncate table 刪除表的記錄:將整個表刪除掉,重新創建一個新的表.truncate屬于DDL.

??? * delete from 刪除表的記錄:一條一條進行刪除. delete屬于DML。

??????? * 事務管理 只能作用在DML語句上.如果再一個事務中使用delete刪除所有記錄,可以找回.

【基本查詢】

  • 查詢語句:

* select [distinct] *|列名 from 表 [where 條件];

【條件查詢】

  • where語句后面可以加:

條件的關鍵字:

= , > , >= , <, <= , <>

like中可以使用占位符: _ 和 %? :下劃線匹配一個字符, %:可以匹配任意多個字符.

【排序查詢】

`order by 對數據進行排序.默認升序. (asc升序,desc降序)

【聚合函數】

`sum() ? 求和

`count() ?統計

`max() ?最大值

`min() ?最小值

`avg() 平均數

【分組】

group by

* 交叉連接

??? * select * from A,B;?? — 獲得的是兩個表的笛卡爾積.

* 內連接: inner join — inner 可以省略

??? * 顯式內連接:select * from A inner join B on 條件;

??? * 隱式內連接:select * from A,B where 條件;

* 外連接:outer join — outer 可以省略

?? ?* 左外連接:left outer join? — select * from A left outer join B on 條件;

? ??* 右外連接:right outer join — select * from A right outer join B on 條件;

多表查詢的子查詢

  • 一個SQL語句查詢的過程中需要依賴另一個查詢語句.

SELECT * FROM customer c,orders o WHERE c.cid = o.cid AND? c.cid IN (SELECT cid FROM orders WHERE addr LIKE ‘鄭州%’);

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/87560

(0)
oranixoranix
上一篇 2017-09-25 09:41
下一篇 2017-09-25 10:50

相關推薦

欧美性久久久久