天天看點

MySQL資料庫的建立和基本的查詢語句

資料庫的定義

資料庫是按照資料結構來組織、存儲和管理資料的建立在計算機儲存設備上的倉庫

分類

非結構化資料:

資料相對來說沒有固定的特點

半結構化資料:

資料之間有着相同的存儲結構 屬性 值

每一條資料的屬性可以不同

結構化資料:

建立在關系模型基礎上的資料庫,借助于集合代數等數學概念和方法來處理資料庫中的

資料。

資料之間有着相同的存儲結構 屬性 值

同一個結構模型中每一條資料的屬性都是相同的,但是值有可能不同,這些資料非常便于存儲和管理。

SQL結構化查詢語言

DDL:資料庫定義語言

DML:資料庫操作語言

DQL:資料庫查詢語言

DCL:資料庫控制語言

資料庫相關操作

  • show databases; 檢視目前的所有資料庫
  • create database 資料庫名 default charset utf8 collate utf8_general_ci; 建立資料庫,也可也直接create database 資料庫名
  • drop database 資料庫名; 删除資料庫
  • use 資料庫名; 進入資料庫
    MySQL資料庫的建立和基本的查詢語句
  • show tables; 檢視此資料庫下的所有表
  • exit; 退出,或者輸入ctrl+z
  • 建立一個表
create table tb1(
id int,
name varchar(16) not null, --
age int default 3
)default charset=utf8;
           
  • drop table 表名; 删除一個表
  • delete from 表名; 或 truncate table 表名;(速度快、無法撤銷)
  • 修改表
  1. 添加列

    alter table 表名 add 列名 類型;

    alter table 表名 add 列名 類型 default 預設值;

    alter table 表名 add 列名 類型 not null default 預設值;

    alter table 表名 add 列名 類型 not null primary key auto_increment;

  2. 删除列

    alter table 表名 drop column 列名 類型;

alter table tb3 drop sex;
alter table tb3 drop column age;
           
  1. 修改列類型

    alter table 表名 modify column 列名 類型;

alter table tb3 modify column sex char(12);
           
  1. 修改列類型加名稱

    alter table 表名 change 原列名 新列名 類型;

alter table tb3 change sex age varchar(12);
           
  1. 修改列預設值

    alter table 表名 alter 列名 set default 1000;

alter table tb3 alter age set default 1000;
           
  1. 删除列預設值

    alter table 表名 alter 列名 drop default;

  2. 添加主鍵

    alter table 表名 add primary key(列名);

alter table tb3 add primary key(id);
           
  1. 删除主鍵

    alter table 表名 drop primary key;

常見列類型

(常用的有int,varchar,decimal,datetime)

int[(m)][unsigned][zerofill]

int 表示有符号,取值範圍:-2147483648 ~ 2147483647

int unsigned 表示無符号,取值範圍:0 ~ 4294967295

int(5)zerofill 僅用于顯示,當不滿足五位時,按左邊補0,例如:00002;滿足時,正常顯示

tinyint[(m)] [unsigned] [zerofill]`

有符号,取值範圍:-128 ~ 127.

無符号,取值範圍:0 ~ 255

bigint[(m)][unsigned][zerofill]

有符号,取值範圍:-9223372036854775808 ~ 9223372036854775807

無符号,取值範圍:0 ~ 18446744073709551615

decimal[(m[,d])] [unsigned] [zerofill]`

準确的小數值,m是數字總個數(負号不算),d是小數點後個數。m最大值為65,最大值為30.

FLOAT[(M,D)] [UNSIGNED] [ZEROFILL]

單精度浮點數,非準确小數值,m是數字總個數,d是小數點後個數。

DOUBLE[(M,D)] [UNSIGNED] [ZEROFILL]

雙精度浮點數(非準确小數值),m是數字總個數,d是小數點後個數。

char(m)

定長字元串,m最大255,即使内容長度小于m,也會占用m長度

varchar(m)

變長字元串,m最大65535,内容小于m時會按真實資料長度存儲,如果超出m長度限制會報錯。

text

text資料類型用于儲存變長的大字元串,長文本會用,如文章、新聞

mediumtext

A TEXT column with a maximum length of 16,777,215 (2**24 − 1) characters.
           

longtext

A TEXT column with a maximum length of 4,294,967,295 or 4GB (2**32 − 1)
           

datetime

YYYY-MM-DD HH:MM:SS(1000-01-01 00:00:00/9999-12-31 23:59:59)
           

timestamp

YYYY-MM-DD HH:MM:SS(1970-01-01 00:00:00/2037年)
           
對于TIMESTAMP,它把用戶端插入的時間從目前時區轉化為UTC(世界标準時間)進行存儲,查詢時,将其又轉化為用戶端目前時區進行傳回。

對于DATETIME,不做任何改變,原樣輸入和輸出。
           

date

YYYY-MM-DD(1000-01-01/9999-12-31)
           

time

HH:MM:SS('-838:59:59'/'838:59:59')
           

DQL資料庫查詢語言

概念

  • 關系:可以了解為一張二維表,每個關系都有一個關系名,就是通常說的表名
  • 元組:二維表中的一行,在資料庫中經常被稱為記錄
  • 屬性:二維表中的一列,在資料庫中經常被稱為字段
  • 域:屬性的取值範圍,也就是資料庫中某一列的取值限制
  • 關鍵字:一組可以唯一辨別元組的屬性,資料庫中常稱為主鍵,由一個或多個列組成
  • 關系模式:指對關系的描述。其格式為:關系名(屬性1,屬性2, ... ... ,屬性N),在資料庫中成為表結構

DQL查詢語句

格式:

select 列名*N from 表名 where 查詢條件1 and/or 查詢條件2 group by 列 Having 分組條件 Order by 排序
           

規則: sql在書寫的時候除了查詢條件之外,大小寫都可以

​ select * from user where uname ='zs';

​ SELECT * FROM USER WHERE UNAME = 'zs';

-- 屬于SQL語句的注釋

​ 所有的查詢條件為字元串時,需要用'xxx'進行修飾,否則就會當做列名去處理

select查詢

--查詢姓名為bfy的學生資訊
select *(通配符,預設查詢所有列) from emp(表名) where(過濾符合條件的資訊)
name='bfy'(查詢條件為字元串時,需要用'xxx'進行修飾) (條件查詢:= > <  !=  <> >= <=其中<>和!=是一個意思) 
and(并列查詢條件) id in(001,002,003)(in 在某個範圍中查找) 
and phone is null(空值查詢用 is null/is not null) 
and score between 90 and 100 (範圍比較)
and sex like '%S%'(模糊查詢,%代表任意個字元,這裡的意思是帶有s的字元串,
同理,'%S'是最後一個字元是s的字元串,'S%'第一個字元是s的字元串。'_S%'中的
_代表占位符,占一個字元的位置,這裡的意思就是第二個字元是S的字元串,由于是模糊查詢,字母的大小寫都會查詢出來,這點要注意)
order by age(結果排序,使用asc是升序排列(預設),使用desc可以降序排序,也可也多列排序如:order by deptno,sal desc)
           
--顯示不帶有"R"的員工的姓名
select ename from emp where ename not like '%R%';

--顯示所有員工的姓名、工作和薪金,按工作的降序排序,若工作相同則按薪金排序.
select ename,job,sal from emp order by job desc,sal;


           

select結果分頁

--每次查詢前N行
select * from student limit 4;
--查詢第N頁,每頁顯示M個
select * from student limit 0,3;