目錄
一.認識Sql
1.什么是Sql
2.Sql的作用
3.Sql通用語法
4.Sql分類
二.數據庫的操作(DDL)
1.創建數據庫
2.顯示/使用數據庫
3.修改數據庫
4.刪除數據庫
三.常用數據類型
1.數值類型
2.字符串類型
3.日期類型
4.詳細的數據類型
四.表的操作(DDL)
1.創建表
2.查看表
3.修改表
4.刪除表
一.認識Sql
1.什么是Sql
????????結構化查詢語言(Structured Query Language)簡稱Sql.它是一種特殊的帶有目的的編程語言,是一種數據庫查詢和程序設計語言,用于存取數據以及查詢,更新和管理關系數據庫系統。
2.Sql的作用
????????①所有關系型數據庫都可以使用SQL
????????②是所有關系型數據庫的統一查詢規范,不同的關系型數據庫都支持SQL
????????③不同數據庫之間的sql有一些區別(我們在此主要學習MySql數據庫)
3.Sql通用語法
????????①SQL語句可以單行 或者 多行書寫,以分號 結尾 ; (Sqlyog中可以不用寫分號)
????????②可以使用空格和縮進來增加語句的可讀性。
????????③MySql中使用SQL不區分大小寫,一般關鍵字大寫,數據庫名 表名列名 小寫。
????????⑤注釋方式
注釋類型 | 語法 | 說明 | 示例 |
單行注釋 | -- 注釋內容 | 標準SQL單行注釋, 必須包含空格 ( -- 后緊跟一個空格) | SELECT * FROM users; -- 查詢所有用戶數據 |
多行注釋 | /* 注釋內容 */ | 標準SQL多行注釋,可跨越多行 | /* 該查詢用于獲取活躍用戶數據 創建日期:2023-01-01 */ |
MySQL單行注釋 | # 注釋內容 | MySQL特有單行注釋, 無需空格 ( # 后可直接寫內容) | SELECT * FROM products # 獲取所有商品信息 |
4.Sql分類
分類 | 簡稱 | 全稱 | 說明 |
數據定義語言 | DDL | Data Definition Language | 定義數據庫對象:數據庫、表、列等 (例如: CREATE , ALTER , DROP ) |
數據操作語言 | DML | Data Manipulation Language | 對數據庫中的表記錄進行更新操作 (例如: INSERT , UPDATE , DELETE ) |
數據查詢語言 | DQL | Data Query Language | 查詢數據庫中的表記錄 (核心命令: SELECT ) |
數據控制語言 | DCL | Data Control Language | 定義數據庫訪問權限、安全級別及創建用戶 (例如: GRANT , REVOKE ) (了解) |
- 建表結構 → DDL
- 增刪改數據 → DML
- 檢索數據 → DQL
- 設置用戶權限 → DCL
我們在此重點學習DML和DQL。
二.數據庫的操作(DDL)
1.創建數據庫
命令? | 說明 |
create database 數據庫名; | 創建指定名稱的數據庫。 |
create database 數據庫名 character set字符集; | 創建指定名稱的數據庫,并且指定字符集(一般都指定utf8mb4) |
? ? ? ? 示例:
????????創建名為 db_test的數據庫
create database db_test;
????????如果系統沒有 db_test 的數據庫,則創建一個使用utf8mb4字符集的 db_test 數據庫,如果有則不創建
create database if not exists db_test character set utf8mb4;
2.顯示/使用數據庫
命令 | 說明 | 示例 |
---|---|---|
USE 數據庫名; | 切換當前操作的數據庫 | USE shop_db; |
SELECT DATABASE(); | 查看當前正在使用的數據庫名稱 | SELECT DATABASE(); → 返回 shop_db |
SHOW DATABASES; | 列出MySQL服務器中所有數據庫 | SHOW DATABASES; → 顯示所有數據庫列表 |
SHOW CREATE DATABASE 數據庫名; | 查看指定數據庫的詳細定義信息 | SHOW CREATE DATABASE shop_db; |
????????示例:
? ? ? ?使用數據庫或切換數據庫到db_test
use db_test;
? ? ? ? 查看當前正在使用的數據庫
select database();
? ? ? ? 查看Mysql中有哪些數據庫
show databases;
? ? ? ? 查看一個數據庫的定義信息
show create database db_test;
3.修改數據庫
命令 | 說明 |
alter database 數據庫名 character set 字符集; | 數據庫的字符集修改操作 |
? ? ? ? 示例:? ? ? ??
????????將數據庫db_test 的字符集 修改為 utf8
alter database db_test character set utf8;
????????查看當前數據庫的基本信息,發現編碼已更改
show create database db_test;
4.刪除數據庫
命令 | 說明 |
drop database 數據庫名 | 從MySql中永久的刪除某個數據庫 |
? ? ? ? 示例:
? ? ? ? 刪除數據庫db_test
drop database db_test;
三.常用數據類型
1.數值類型
分為整數類型和浮點類型
數據類型 | 大小 | 說明 | 對應 Java 類型 |
---|---|---|---|
BIT[(M)] | M 位(1-64) | 二進制數,存儲范圍:0 到 2^M-1 默認 M=1(存 0/1) | Boolean |
INT | 4 字節 | 整數范圍:-231 到 231-1 (約 ±21 億) | Integer |
DOUBLE(M, D) | 8 字節 | 雙精度浮點數,M=總位數,D=小數位 | Double |
DECIMAL(M, D) | M/D 最大值 + 2 字節 | 精確小數,M=總位數,D=小數位 適合財務計算 | BigDecimal |
2.字符串類型
數據類型 | 大小 | 說明 | 對應 Java 類型 |
---|---|---|---|
VARCHAR(SIZE) | 0-65,535 字節 | 可變長度字符串,SIZE=最大字符數 推薦存儲長度不固定的文本(如用戶名) | String |
TEXT | 0-65,535 字節 (64KB) | 存儲長文本數據(如文章/評論) 不支持默認值 | String |
3.日期類型
數據類型 | 大小 | 說明 | 對應 Java 類型 |
---|---|---|---|
DATETIME | 8 字節 | 范圍:1000-01-01 00:00:00 到 9999-12-31 23:59:59 不涉及時區轉換 | java.util.Date java.sql.Timestamp |
TIMESTAMP | 4 字節 | 范圍:1970-01-01 00:00:01 UTC 到 2038-01-19 03:14:07 UTC 自動時區轉換 | java.util.Date java.sql.Timestamp |
4.詳細的數據類型
四.表的操作(DDL)
1.創建表
? ? ? ? 創建表student 包括學號,姓名,年齡字段 ,并且使用comment關鍵字 給字段起別名
create table student{id int comment '學號',name varchar(20) comment '名字',age int comment '年齡'
};
2.查看表
命令 | 說明 |
show tables; | 查看當前數據庫中的所有表名 |
desc 表名; | 查看數據表的結構 |
? ? ? ? 查看表student結構
desc student;
3.修改表
????????快速創建一個表結構相同的表(復制表結構)
? ? ? ??? ? ? ? 將student表結構復制給student1
create table student2 like student;
? ? ? ?修改表名?rename table 舊表名 to 新表名
????????????????將student表 改為 student1
rename table student to student1;
? ? ? ? 修改表的字符集?alter table 表名 character set 字符集
????????將student表的字符集 修改為gbk? ?
alter table student character set gdk;
? ? ? ? 向表中添加列??alert table 表名 add 字段名稱 字段類型
????????為student表添加一個新的字段為 學生描述 cdesc varchar(20)
ALTER TABLE student ADD cdesc VARCHAR(20);
? ? ? 修改表中的列的數據類型或長度,關鍵字modify?alter table 表名 modify 字段名稱 字段類型
????????對student表的age字段進行修改,類型varchar(50)
ALTER TABLE student MODIFY cdesc VARCHAR(50);
? ? ? 修改列名稱,關鍵字change?alter table 表名 change 舊列名 新列名 類型(長度)
????????對student表中的 age字段進行更換, 更換為 Age varchar(30)
ALTER TABLE student CHANGE cdesc description VARCHAR(30);
刪除列,關鍵字drop?alter table 表名 drop 列名;
????????刪除student表中description這列
ALTER TABLE student DROP description;
4.刪除表
命令 | 說明 |
drop table 表名; | 刪除表(從數據庫中永久刪除某一張表) |
drop table if exists 表名; | 判斷表是否存在, 存在的話就刪除,不存在就不執行刪除 |
? ? ? ? 示例:
? ? ? ? 刪除表student
drop table student;
? ? ? ? 判斷表student是否存在,再刪除
drop table if exists student;
????????如果要刪除表中的所有數據,有兩種做法
????????????????1. delete from 表名; 不推薦. 有多少條記錄 就執行多少次刪除操作. 效率低
????????????????2. truncate table 表名: 推薦. 先刪除整張表, 然后再重新創建一張一模一樣的表. 效率高
?
truncate table 表名;
有錯誤的地方,大家一起指出,一起學習!!!
完結撒花,下一章內容會學習對表中的數據進行操作!