<output id="r87xx"></output>
    1. 
      
      <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
        •   

               當前位置:首頁>軟件介紹>關(guān)于MySql的SQL語言-MySQL入門教程 查詢:
               
          關(guān)于MySql的SQL語言-MySQL入門教程

                  目前常用的數(shù)據(jù)庫有 Oracle 公司的 Oracle , Microsoft 公司的 SQL Server , IBM 公司的 DB2 和 MySql 公司的 MySql, 而免費的數(shù)據(jù)庫目前只有 MySql ,當然盜版的不算。

                  SQL (Structured Query Language) 結(jié)構(gòu)化查詢語言是目前一個國際上標準的數(shù)據(jù)庫專用語言。 不過不同的數(shù)據(jù)庫所使用的 SQL 語句都會稍有一些不同,但基本的標準還是會遵循 SQL ,例如:

                  用與 SQL Server 的叫做 T-SQL,用于 Oracle 的叫做PL-SQL ,它們都是 SQL 的子類,或者說是派生類。用于 MySql 的我還不知道它叫做什么 SQL ,不過個人覺得它反而最接近標準的 SQL 語言,不過,從另一方面來說,它對 SQL 所做的擴展最少。

                  就我現(xiàn)在的理解 SQL 語言就是用來使用數(shù)據(jù)庫和操作數(shù)據(jù)用的,不包括操作數(shù)據(jù)庫,那些操作數(shù)據(jù)庫的代碼應(yīng)該叫做命令,如:啟動,關(guān)閉數(shù)據(jù)庫,設(shè)置字SQL 語言,不同的數(shù)據(jù)庫都有自己符集,設(shè)置訪問連接用戶數(shù)等,這些不屬于的命令,這些命令是生產(chǎn)企業(yè)制定的。下面,我大概來說一下 SQL 所做的事情創(chuàng)建數(shù)據(jù)庫,創(chuàng)建表,插入、修改、刪除數(shù)據(jù), 查詢數(shù)據(jù)(最主要的是這個功能,方便數(shù)據(jù)的儲存和查詢是人們發(fā)明數(shù)據(jù)庫的理由)。

                  當然,我下面介紹的 SQL 都是用于 MySql 的。

                  SQL 基礎(chǔ)知識

                  一、 數(shù)據(jù)類型

                  INT [ 常用 ] 整數(shù) BIGIN 大整數(shù) FLOAT ( 單精密 ) 浮點數(shù)字 DOUBLE [ 常用 ] ( 雙精密 ) 浮點數(shù)字

                  NUMERIC(M,D) [ 常用 ] 未壓縮 (unpack) 的浮點數(shù)字, “ 未壓縮 ” 意味著數(shù)字作為一個字符串被存儲,值的每一位使用一個字符。例: NUMERIC(16,2) 表示這個 浮點數(shù)字的儲存空間為 16 個字節(jié),精度為 2 (即小數(shù)點后保留 2 位數(shù)字)。

                  DATE [ 常用 ] 日期 DATETIME [ 常用 ] 日期和時間組合 CHAR(M) 一個定長字符串

                  TIMESTAMP(M) [ 常用 ] 時間戳記。以 YYYYMMDDHHMMSS 、 YYMMDDHHMMSS 、 YYYYMMDD 或 YYMMDD 格式來顯示 TIMESTAMP 值,例: TIMESTAMP(14) 格式為YYYYMMDDHHMMSS、TIMESTAMP(8) 格式為YYYYMMDD

                  VARCHAR(M) [ 常用 ] 可變長度的字符串 BLOB 大對象存儲類型 TEXT [ 常用 ] 大文本存儲類型, 最大長度為 65535(2^16-1) 個字符 我覺得用的多的類型用 [ 常用 ] 標記了一下,相關(guān)時間的那幾個各有各的優(yōu)點,就看你的需要了。

                  二、 變量

                  declare @iAge int -- 聲明變量

                  set @iAge = 12 -- 給變量附值

                  print @iAge -- 打印變量

                  select @ iAge:= ’iage’ from employe where name=’Bill’ ; 將查詢到字段給變量附值

                  注意 : 這里, select 語句中我們不得不使用 := 句法,因為 = 是為比較保留的

                  三、 邏輯控制

                  -- IF 條件判斷

                  declare @i int

                  set @i = 12

                  if (@i > 10)

                  begin

                  print 'Dadadada!'

                  print 'Dadadada!'

                  end

                  else

                  begin

                  print 'XiaoXiao!'

                  print 'XiaoXiao!'

                  end

                  -- While 循環(huán)控制

                  declare @i int; set @i = 12;

                  print @i

                  return;

                  while (@i < 18) begin

                  print @i;

                  set @i = @i + 1;

                  if @i < 17

                  continue;

                  if @i > 15

                  break;

                  end;

                  -- CASE 分支判斷

                  select au_lname, state, ' 猶他州 ' from authors where state = 'UT'

                  select au_lname, state, ' 密西西比州 ' from authors where state = 'MI'

                  select au_lname, state, ' 肯塔基州 ' from authors where state = 'KS'

                  select au_lname, state,

                  case state

                  when 'UT' then ' 猶他州 '

                  when 'MI' then ' 密西西比州 '

                  when 'KS' then ' 肯塔基州 '

                  when 'CA' then ' 加利福利亞 '

                  else state

                  end

                  from authors

                  四、 函數(shù)

                  這部分的內(nèi)容很多 , 我也不是很熟這里就我所知道的列一點 :

                  -- 獲取給定字符串的長度

                  print length('abcdef')

                  -- 大小寫轉(zhuǎn)換

                  print lower('ABCDEF') print upper('abcdef') -- 去空格

                  print ltrim(' abcd dfd df ')

                  print rtrim(' abcd dfd df ')

                  -- 求絕對值

                  print abs(-12)

                  冪 --

                  -- 3 的 2 次方

                  print power(3,2)

                  -- 隨機數(shù)

                  -- 0 - 1000 之間的隨機數(shù)

                  print rand() * 1000 -- 獲取圓周率

                  print pi()

                  -- 獲取系統(tǒng)時間

                  print now()

                  -- 獲取指定時間之間相隔多少年

                  print datediff(year, '2005-01-01', '2008-01-01')

                  -- 字符串合并

                  print 'abc' + 'def'

                  print 'abc' + '456'

                  獲取指定時間的特定部分 --

                  print datepart(year, now())

                  -- 獲取字符串中的一段

                  print SUBSTRING( ‘ abcdef ’ ,1,3)

                  -- 獲取紀錄個數(shù)

                  select count(*) from employe;

                  -- 獲取指定工資的和

                  select sum(salary) from employe;

                  -- 獲取年齡大于 30 歲員工的最高工資

                  select max(salary) from employe where iage>30; 等等

                  五、 注釋

                  # 單行注釋 -- 單行注視 /* 內(nèi)容 */ 多行注釋

                  SQL 常規(guī)應(yīng)用

                  一、 創(chuàng)建數(shù)據(jù)庫

                  用給定的名字創(chuàng)建一個數(shù)據(jù)庫

                  CREATE DATABASE db_name 刪除數(shù)據(jù)庫中給定名字的數(shù)據(jù)庫(慎重使用)

                  DROP DATABASE [IF EXISTS] db_name

                  調(diào)出要用的數(shù)據(jù)庫

                  USE db_name

                  下面是一個完整的創(chuàng)建例子,同時創(chuàng)建了一個數(shù)據(jù)庫 log 文件 -- 指定數(shù)據(jù)庫名稱

                  -- ( 注:如果數(shù)據(jù)庫名中包含空格可以使用 [] 將其標示 ) create database [Super WC] -- 關(guān)于數(shù)據(jù)文件的定義

                  on

                  (

                  name = Super_WC_Data, -- 邏輯名

                  filename = 'C:Super_WC_Data.MDF', -- 物理路徑以及物理名 size = 2MB, -- 初始大小

                  maxsize = 4MB, -- 最大限制

                  filegrowth = 1MB -- 增長大小 )

                  -- 關(guān)于日志文件的定義

                  log on

                  (

                  name = Super_WC_Log,

                  filename = 'C:Super_WC_Log.LDF', size = 3MB,

                  maxsize = 7MB,

                  filegrowth = 20% -- 增長比例 )

                  二、 創(chuàng)建表

                  drop table if exists auto_incr_test; -- 先把以前數(shù)據(jù)庫中有可能存在的表刪除

                  create table auto_incr_test ( id int not null auto_increment, -- 這里的 not null 代表這一列的值不能為空默認是 null

                  name char(40),

                  timestamp timestamp,

                  primary key (id) -- 創(chuàng)建主鍵

                  foreign key (name) references students (no), -- 創(chuàng)建外鍵 )

                  /* 上面出現(xiàn)的 auto_increment 代表了 id 這個列是一個自動增長列 */ 要刪除這個表就用 drop table auto_incr_test; 就可以了 .

                  下面是包含約束的情況(設(shè)置約束可以增強數(shù)據(jù)庫的完整性,但需要事先精確的設(shè)計,因為改動起來實在是太麻煩了):

                  create table students

                  (

                  no char(4) not null auto_increment primary key,

                  name nvarchar(8) not null, birthday datetime check(datediff(year, birthday, now()) >= 18),

                  age as datediff(year, birthday, now ()),

                  sex nchar(1) not null default(' 女 ') check(sex = ' 女 ' or sex = ' 男 '),

                  phone char(11) check((phone is null) or (length(phone) = 11)),

                  address nvarchar(24)

                  )

                  注意:表創(chuàng)建后修改起來比較麻煩,如果不是一定要修改的話可以刪了再創(chuàng)建,

                  盡量設(shè)計時就把握好需求,設(shè)計完美一點。

                  三、 數(shù)據(jù)操作 ( 添、刪、改、查 ) , 傳說中著名的添刪改查

                  添加操作 (insert) 的語法格式:

                  Insert [into] 數(shù)據(jù)表 ( 字段 ) values ( 數(shù)據(jù) ) -- [into] 可以省略 例:INSERT tbl_name (col1,col2) VALUES(15, ’abc’ );

                  修改操作 (update) 的語法格式:

                  Update 數(shù)據(jù)表 set 字段 = 新值 where 條件

                  例:UPDATE tbl_name SET col2= ’BBB’ WHERE col2=’abc’;

                  刪除操作 (delete) 的語法格式:

                  Delete [from] 數(shù)據(jù)表 where 條件 -- [] 內(nèi)的可寫可不寫,最好是寫,不過懶人都不寫

                  例:DELETE tbl_name WHERE col2=’abc’ ;

                  查詢操作 (select) 的語法格式:

                  select 字段 from 數(shù)據(jù)表 where 條件 order by 字段 desc/asc /* 這里的 order by 是用來指定排序依賴列, desc 是指以降序排列(默認的是 asc 升序) */

                  例:SELECT col1,col2 FROM tbl_name WHERE col2=’abc’ ORDER BY col1 DESC ;

                  注意:方便數(shù)據(jù)的儲存和查詢是人們發(fā)明數(shù)據(jù)庫的理由,所以查詢操作是 SQL 中的精髓之一,我上面的格式只是列出了較常用的格式,但只要是程序功能要求稍微復(fù)雜點的就要用到許多查詢語句的高級特性了,我會在后面介紹我所能了解的。

                  SQL 高級應(yīng)用

                  一、 高級查詢

                  1 (高級查詢(就是把 SQL 定義的 SELECT 語句的語法都用到了的) SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY] [DISTINCT | DISTINCTROW | ALL]

                  select_expression,...

                  [INTO {OUTFILE | DUMPFILE} 'file_name' export_options]

                  [FROM table_references

                  [WHERE where_definition]

                  [GROUP BY col_name,...]

                  [HAVING where_definition]

                  [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]

                  [LIMIT [offset,] rows]

                  [PROCEDURE procedure_name] ]

                  GROUP BY 用于分組查詢

                  HAVING 用于聚合函數(shù)的查詢條件

                  LIMIT 用于限制SELECT語句返回的行數(shù)

                  2 (多表查詢(又叫聯(lián)合查詢)

                  查找與多個表相關(guān)的數(shù)據(jù),例:

                  Select name,iage,city from students a inner join address b where

                  a.addressid=b.id and name= ’Bill’ ;

                  3 (子查詢(很多內(nèi)容,我不能盡舉)

                  有兩種類型的子查詢:“嵌套”子查詢和“相關(guān)”子查詢。

                  例:

                  -- 子查詢

                  -- 根據(jù)作者的名查找其編寫的書籍

                  -- 先通過子查詢獲取作者編號

                  -- 然后,將其作為查詢條件,找出相應(yīng)的書籍編號

                  -- 最后,在利用所得到的書籍編號來得到書籍信息

                  select au_id, title_id from titleauthor where au_id =

                  (select au_id from authors where au_lname = 'Green')

                  select * from titles

                  where title_id in

                  (

                  select title_id from titleauthor

                  where au_id =

                  (select au_id from authors where au_lname = 'Green')

                  )

                  二、 視圖

                  CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE |

                  TEMPTABLE}]

                  VIEW view_name [(column_list)]

                  AS select_statement

                  [WITH [CASCADED | LOCAL] CHECK OPTION]

                  例:

                  CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM

                  t;

                  三、 存儲過程

                  CREATE PROCEDURE ([[,...]]) sp_nameproc_parameter

                  [characteristic ...] routine_body

                  例:

                  create procedure proGetJobsByPage @CurrentPageSize int,

                  @PageSize int,

                  @CurrentPage int

                  as

                  Declare @strSql nvarchar(400)set @strSql = 'select * from

                  (select top ' + convert(nvarchar(4), @CurrentPageSize) + ' *

                  from (select top ' + convert(nvarchar(4),(@PageSize *

                  @CurrentPage)) + ' * from jobs) as tt

                  order by job_id desc) as stt

                  order by job_id'

                  exec sp_executesql @strSql

                  四、 觸發(fā)器

                  CREATE TRIGGER trigger_nametrigger_timetrigger_event

                  ON tbl_name FOR EACH ROW trigger_stmt

                  例:

                  -- 創(chuàng)建插入觸發(fā)器

                  create trigger emp_marins

                  on emp_mgr

                  for insert

                  as

                  declare @e char(30),@m char(30)

                  declare cur_mgr cursor for

                  select emp_mgr.emp

                  from emp_mgr,inserted

                  where emp_mgr.emp = inserted.mgr

                  open cur_mgr

                  fetch next from cur_mgr into @e

                  while @@fetch_status = 0

                  begin

                  update emp_mgr

                  set emp_mgr.NoOfReports = emp_mgr.NoOfReports + 1

                  where emp_mgr.emp = @e

                  fetch next from cur_mgr into @e end

                  close cur_mgr

                  deallocate cur_mgr

                  五、 索引(很有用,可以提高查詢語句的執(zhí)行效率)

                  CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name

                  [USING index_type]

                  ON tbl_name (index_col_name,...)

                  例:

                  此處展示的語句用于創(chuàng)建一個索引,索引使用列 name 。

                  CREATE INDEX part_of_name ON customer (name);

                  


          MySQL使用教程MySQL快速入門
          MySQL數(shù)據(jù)庫連接MySQL基本用法
          MySQL日期數(shù)據(jù)類型使用總結(jié)MySQL的使用方法
          MySQL數(shù)據(jù)庫導(dǎo)出和導(dǎo)入的方法MySQL字符集及MySQL編碼轉(zhuǎn)換
          一些MySQL的常見問題怎樣在MySQL中直接儲存圖片
          安裝 MySQL與MySQL GUI ToolsMySQL實用命令
          MySQL配置文件示例MySQL集群解決方案
          MySQL使用手冊十分鐘MySQL入門教程
          信息發(fā)布:廣州名易軟件有限公司 http://m.jetlc.com
          • 勁爆價:
            不限功能
            不限用戶
            1998元/年

          • 微信客服

            <output id="r87xx"></output>
          1. 
            
            <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
              • 69一区 | 日本岛国红桃A | 无码在线中文字幕 | 免费看毛片电影 | 日韩操逼网 | 久久ai精品 | 成人性爱影院 | 丝袜足交片| 中文在线亚洲 | 在线观看色天堂 |