3.MySQL基础

數據庫的基本概念:

數據庫的(Database,簡稱DB):用於存儲和管理數據的倉庫。

數據庫的特點:

1.持久化存儲數據,其實數據庫就是一個文件系統
2.方便存儲和管理數據
3.使用了統一的方式操作數據庫--SQL

SQL:

Structured Query Language:結構化查詢語言,其實就是定義了操作關係型數據庫的規則。每一種數據庫操作的方式存在不一樣的地方,成爲“方言”。

SQL通用語法:

1.SQL語句可以單行或多行書寫,以分號結尾
2.可使用空格和縮進增强語句可讀性
3.MySQL數據庫的SQL語句不區分大小,關鍵字建議使用大寫
4.三种注釋:
(1)單行注釋:-- 注釋内容 或 # 注釋内容(mysql 特有)
(2)多行注釋:/* 注釋 */

SQL分類:

  • DDL(Data Definition Language)數據庫定義語言。用來定義數據庫對象--數據庫,表,列等。關鍵字:create、drop、alter等。
  • DML(Data Manipulation Language)數據庫操作語言。用來對數據庫中表的數據進行增刪改。關鍵字:insert、delete、update等。
  • DQL(Data Query Language)數據查詢語言。用來查詢數據庫中表的記錄(數據)。關鍵字:select、where等。
  • DCL(Data Control Language)數據控制語言(了解)用來定義數據庫的訪問權限和安全級別,及創建用戶。關鍵字:GRANT、REVOKE等。
DDL:操作數據庫、表
1.操作數據庫
1.C(Create):創建
建數據庫:create database 數據庫名稱
創建數據庫,判斷不存在再創建:create database if not exists 數據庫名稱;
創建數據庫,並指定字符集:create database 数据库名称 character set 字符集名;如:
create database if not exists db4 character set gbk;

2.R(Retrieve):查詢
查詢所有數據庫的名稱:show databases;
查詢某個數據庫的字符集:查詢某個數據庫的創建語句:show create database 数据库名称;

3.U(Update):修改
修改數據庫的字符集:alter database 数据库名称 character set 字符集名称;

4.D(Delete):刪除
刪除數據庫:drop database 数据库名称;
判斷數據庫存在,再刪除:drop database if exists 数据库名称;

5.使用數據庫
查詢當前正在使用的數據庫名稱:select database();
使用數據庫:use 數據庫名稱;
2.操作表

C(Create):创建

語法:
create table 表名(
                    列名1 数据类型1,
                    列名2 数据类型2,
                    ....
                    列名n 数据类型n
            );
#注意:最後一列,不需要加逗號(,)
3.數據庫類型:
int:整數類型
double:小數類型
date:日期,包含年月日,yyyy-MM-dd
datetime:日期,包含年月日時分秒,yyyy-MM-dd HH:mm:ss
timestamp:時間戳類型 包含年月日時分秒,yyyy-MM-dd HH:mm:ss
如果將來不給這個字段賦值,或賦值爲null,則默認使用當前的系統
時間,來自動賦值
 varchar:字符串
name  varchar(20):姓名最大20個字符

創建表
create table student(
                    id int,
                    name varchar(32),
                    age int ,
                    score double(4,1),
                    birthday date,
                    insert_time timestamp
                );

複製表:
create table 表名 like 被复制的表名;
R(Retrieve):查询
查詢某個數據庫中所有的表名稱:show tables;
查詢表結構:desc  表名;
U(Update):修改
修改表名:alter table 表名 rename to 新的表名;
修改表的字符集:alter table 表名 character set 字符集名称;
添加一列:alter table 表名 add 列名 数据类型;
修改列名稱  類型:
alter table 表名 change 列名 新列别 新数据类型;
                    alter table 表名 modify 列名 新数据类型;
刪除列:alter table 表名 drop 列名;
D(Delete):删除
  drop table 表名;
            drop table  if exists 表名 ;
DML:增刪改表中數據
添加數據
語法:insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
注意:
列名和值要一一對應
如果表名后,不定義列名,則默認給所有列添加值
insert into 表名 values(值1,值2,...值n);
除了數字類型,其他類型需要使用引號(單雙都可以)引起來
刪除數據:
語法:delete from 表名 [where 条件]
注意:
如果不加條件,則刪除表中所有記錄
如果要刪除所有記錄
delete from 表名; -- 不推荐使用。有多少条记录就会执行多少次删除操作
TRUNCATE TABLE 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表。
修改數據:
語法:update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
注意:如果不加任何條件,則會將表中所有記錄全部修改。
DQL:查詢表中的記錄
* select * from 表名;
  1.語法:
      select 
               字段列表
      from
               表名列表
      where
               條件列表
      group by
               分組字段
      having
               分組之後的條件
      order by
               排序
      limit
              分頁限定
  2.基礎查詢:
      (1)多個字段查詢:
           select 字段名1,字段名2... from 表名;
           注意:如果查詢所以字段則可以使用*來替代字段列表
      (2)去除重複:
            distinct
      (3)計算列:
            i.一般可以使用四則運算計算一些列的值。(一般只會進行數值型的計算)
            ii.ifnull(表達式1,表達式2):null參與的運算,計算結果都爲null
               a.表達式1:哪個字段需要判斷是否為null
               b.如果該字段為null后的替換值
      (4)起別名
          as:as也可以省略
  3.條件查詢:
      (1)where子句后跟條件
      (2)運算符:
           > 、< 、<= 、>= 、= 、<>
           BETWEEN...AND
           IN( 集合) 
           LIKE:模糊查询
           佔位符:
               _:單個任意字符
               *:多個任意字符
            IS NULL
            and  或 &&
            or  或 ||
            not  或 !
--查詢年齡大於20嵗
SELECT * FROM student WHERE age > 20;

--等於20嵗
SELECT * FROM student WHERE age = 20;

--不等於20嵗
SELECT * FROM student WHERE age != 20;
SELECT * FROM student WHERE age <> 20;

--大於等於20,小於等於30
SELECT * FROM student WHERE age >= 20 && age <= 30;
SELECT * FROM student WHERE age >= 20 AND age <= 30;
SELECT * FROM student WHERE age BETWEEN AND 30;

--查詢年齡22,18,25嵗的信息
SELECT * FROM student WHERE age = 20 OR age = 18 OR age = 25;
SELECT * FROM student WHERE age IN (22,18,25);

--查詢英語成績為null
SELECT * FROM student WHERE english = NULL;
SELECT * FROM student WHERE english IS NULL;

--查詢英語成績不爲null
SELECT * FROM student WHERE english IS NOT NULL;

--查詢姓馬的有哪些
SELECT * FROM student WHERE NAME LIKE '马%';

--查詢姓名第二個字為化的人
SELECT * FROM student WHERE NAME LIKE "_化%";

--查詢姓名是3個字的人
SELECT * FROM student WHERE NAME LIKE '___';(三個“_”)
--查詢姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';

你可能感兴趣的:(3.MySQL基础)