1. 程式人生 > >MySQL(02)——SQL語句操作

MySQL(02)——SQL語句操作

1、SQL語句是什麼?

SQL語句:Structured Query Language結構化查詢語言。SQL語句不依賴於任何平臺,對所有的資料庫是通用的。學會了SQL語句的使用,可以在任何的資料庫使用。

SQL語句是一個非過程性的語言,每一條SQL執行完都會有一個具體的結果出現。

比如前面學習的Java等語言屬於過程性語言,在其中可以定義變數等完成複雜的運算。而SQL語句本身是不支援這些的,但是不同的資料庫廠商針對自己資料庫的特點在原有的SQL語句上進行的增強。比如 Sqlserver中的T-SQL、Oracle中的PL/SQL等可以編寫複雜的SQL語句。

SQL語句:操作資料庫,資料表,資料表中的資料記錄。

SQL是用來存取關係資料庫的語言,具有查詢、操縱、定義和控制關係型資料庫的功能。

2、SQL分類

DDL (資料定義問題)

資料定義語言 - Data Definition Language 用來定義資料庫的物件,如資料表、檢視、索引等

DML (資料操縱問題)

資料處理語言 - Data Manipulation Language 在資料庫表中更新,增加和刪除記錄 如 update, insert, delete

DCL (資料控制問題)

資料控制語言 – Data Control Language 指用於設定使用者許可權和控制事務語句 如grant,revoke,if…else,while,begin transaction

DQL (資料查詢問題)

資料查詢語言 – Data Query Language select

3、資料庫的操作

檢視資料庫

查詢當前所有的資料庫: 語法: show databases; 在這裡插入圖片描述 檢視當前資料的建立方式:檢視資料庫的編碼表 語法:show create database 庫名;

建立資料庫

1 建立一個名稱為mydb1的資料庫。 create database mydb1; 2 建立一個使用utf8字符集的mydb2資料庫。 create database mydb2 character set utf8;

刪除資料庫

刪除前面建立的mydb1資料庫; drop database if exists mydb1; 在這裡插入圖片描述

也可以直接寫成: drop database mydb1;

修改資料庫編碼集

語法:alter database 資料庫名稱 character set 字符集 [collate 排序規則]; 將mydb2的編碼集改成 gbk alter database mydb2 character set gbk; 在這裡插入圖片描述

檢視正在使用的資料庫

select database();

切換到某個資料庫

use mydb3; 在這裡插入圖片描述

4、資料表結構的操作

資料表的建立

語法: create table [if not exists] 表名( 列名 型別(長度), 列名 型別(長度)… );

create table stu(
id char(11),
name varchar(50),
password varchar(50),
sex char(10),
birthday date
); 


在這裡插入圖片描述

查看錶的結構

語法:desc 表名; 檢視stu表的結構: desc stu;

mysql 中的資料型別

Mysql資料庫中表每一列的資料型別主要有以下幾種:

字串型 Java中的String 和char 型別對應 mysql 中的 varchar(列的長度)、char(列的長度)

varchar:變長 char:定長 區別:假設我們要儲存 abcd 這個字串。 如果定義成varchar(10) 這時儲存的資料不足10個,這時會把多餘取消,只佔4個。 如果使用char(10),它會把儲存的資料新增到10個長度。 如果儲存的長度超出了表中列的長度,儲存報錯。

大資料型別 Java中: 位元組流:InputStream 字元流:Reader mysql中: BLOB 儲存的位元組資料 TEXT 儲存字元資料

通常我們不會把檔案儲存到資料庫。(佔用資源,操作速度慢) 我們會把檔案的路徑(通常存放在本地磁碟)存到資料庫中。

數值型 Java中:byte、short 、 int 、 long 、float、 double mysql中:tinyint 、smallint、int、bigint、FLOAT、DOUBLE 在建立資料表的時候,數值型也有自己的長度,一般不需要指定,使用預設的長度。

邏輯型 Java中的boolean mysql中:BIT

日期型 TimeStamp 時間戳, 顯示 是一個long整形值 Java中的Date、Time、DateTime、TimeStamp(1970-1-1 0:0:0) mysql中:DATE、TIME、DATETIME、TIMESTAMP timestamp:它和datetime都可以儲存年月日時分秒,但是timestamp它在儲存資料的時候表中的這一列會自動的變成當前儲存資料時的時間。

單表建立時約束

約束:通過某些限制,來規定當前某張資料表中的某列資料是否可以為null,是否可以重複,當前某一列中的資料在當前表中必須唯一等限制。 約束的目的:只是為了保證儲存在資料表中的資料完整性和有效性。 約束語法:列名 資料型別 約束條件 約束型別: 1、主鍵約束:primary key 主鍵一般表示資料庫中的某一列,使用這一列來區分資料表中的資料和其他資料不同。這一列的資料在整個資料表中是不允許重複的。 舉例:建立一張表,儲存學生的資訊,需要在表中建立一列,來區分當前的這個一行資料和其他的行不同。這個列稱為主鍵。 主鍵的定義格式: 列名 列的型別 primary key

2、唯一約束,unique 該列(欄位)的值不允許重複。 解釋:一張表中可以有很多個唯一約束,只能有一個(兩個)作為主鍵約束。 即就是在一張表唯一約束的列可以有多列,但是主鍵一般只會使用一列或者兩列(聯合主鍵)

3、非空約束,not null 該欄位的值不能為空

補充:自增長 auto_increment 如果表的主鍵是int 型別,這時可以在主鍵的後面新增 auto_increment ,這時表中這一列在新增資料的時候,會自動的增長。 一般主鍵使用java中的UUID類產生。

示例: 建立表stu2:學號 整形 主鍵 自增長,使用者名稱 唯一且不為空,密碼不為空, 性別 , 生日。

create table if not exists stu2(
id int primary key auto_increment,
username varchar(50) unique not null,
password varchar(50) not null,
sex char(10),
birthday date
);

資料表結構修改

1 修改資料表: 可以對錶名、表中的列名、列的型別、列的約束進行增刪改。 語法:alter table 表名 增/刪/改 列名 型別(長度) 約束;

需求1:在stu2表上增加salary列 需求2:在stu2表上增加age列

alter table stu2 add salary double; alter table stu2 add age int;

2 修改現有列型別、長度和約束 語法:alter table 表名 modify 列名 型別(長度) 約束;

需求:修改username列的長度為60 alter table stu2 modify username varchar(60) unique not null;

3 修改現有列名稱 語法:alter table 表名 change 舊列名 新列名 型別(長度) 約束;

需求:修改列名username為name alter table stu2 change username name varchar(60) unique not null;

4 刪除現有列 語法:alter table 表名 drop 列名;

需求:刪除age列 alter table stu2 drop age;

5 修改表名 語法: rename table 舊錶名 to 新表名;

需求:將stu2表名修改為person表 rename table stu2 to person;

6 修改表的字符集 語法:alter table 表名 character set 編碼集;

需求: 將stu的編碼修改成utf8 alter table stu character set utf8;

資料表刪除

語法:drop table 表名; 需求:刪除emp表

檢視資料表結構

檢視庫中所有的表: show tables;

查看錶結構: desc 表名;

檢視定義表時,表的編碼表 show create table 表名;