程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 搞定linux上MySQL編程(二):MySQL語法基礎操作

搞定linux上MySQL編程(二):MySQL語法基礎操作

編輯:MySQL綜合教程

搞定linux上MySQL編程(二):MySQL語法基礎操作


	sql(structured query language)是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系數據庫系統。
	sql語言包含3部分:
1. 數據定義語言(DDL),用於定義和管理對象,例如數據庫、數據表以及試圖等。例如create、drop、alter等語句。
2. 數據操作語言(DML),用於操作數據庫中數據,例如select、 insert、update、delete等。
3. 數據控制語言(DCL),用於管理數據庫,包含管理權限及數據更改。例如grant、revoke、commit、rollback等。

	類似高級開發語言,sql中數據也有不同的類型,不同的數據類型存放不同的數據,sql中數據類型分為5種:字符型(存放一段較短的字符串)、文本型(存儲大串的字符)、數值型(存放整數、實數、浮點數)、邏輯型(即布爾型,取值0或1)、日期型。sql語句中也可以添加注釋,有如下三種:“#”(類似shell腳本的注釋)、“--”、和類似c語言的/*....*/可多行注釋。


數據庫的操作:
1.創建數據庫:create database <數據庫名稱>。例如:
create database db_users;

mysql> create database db_users; Query OK, 1 row affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | db_users | | mysql | | test | +--------------------+ 5 rows in set (0.00 sec)
2.刪除數據庫:drop database <數據庫名稱>。例如:
mysql> drop database db_users;
Query OK, 0 rows affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
+--------------------+
3 rows in set (0.00 sec)

mysql> 
表的操作:表是數據庫重要組成部分,數據庫通常由一個或多個數據表組成。數據庫中所有數據或信息都被保存在這些數據表中。每一個表名稱在數據庫中是唯一的,表由行和列組成,每一列列包括該列名稱、數據類型和其他屬性,而行則具體包含某一列的記錄或數據。1.創建表: create table <表名> (<列名> <數據類型> [<列級完整性約束條件>][,<列名> <數據類型> [<列級完整性約束條件>] ]...[,<表級完整性約束條件> ])實際使用中一般只用到比較簡單的表創建語言,只需要表面和字段定義。例如:
mysql> use db_users;
Database changed
mysql> create table regusers (
    -> userid int auto_increment not null primary key,
    -> username char(32),
    -> birth date);
Query OK, 0 rows affected (0.01 sec)
 
mysql> describe regusers;
+----------+----------+------+-----+---------+----------------+
| Field    | Type     | Null | Key | Default | Extra          |
+----------+----------+------+-----+---------+----------------+
| userid   | int(11)  | NO   | PRI | NULL    | auto_increment |
| username | char(32) | YES  |     | NULL    |                |
| birth    | date     | YES  |     | NULL    |                |
+----------+----------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
2.修改表,當發現表結構不滿足要求時,使用alter table語句修改列屬性,甚至可以修改表名稱。修改語法如下:alter table <表名>[ADD <新列名> <數據類型> [完整性約束] ][DROP <完整性約束>][ALTER COLUMN <列名> <數據類型>];例如原來regusers表中沒有“最後登錄時間”屬性,可以通過修改表解決該問題。如下:
mysql> alter table regusers add last_login date;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> describe regusers;
+------------+----------+------+-----+---------+----------------+
| Field      | Type     | Null | Key | Default | Extra          |
+------------+----------+------+-----+---------+----------------+
| userid     | int(11)  | NO   | PRI | NULL    | auto_increment |
| username   | char(32) | YES  |     | NULL    |                |
| birth      | date     | YES  |     | NULL    |                |
| last_login | date     | YES  |     | NULL    |                |
+------------+----------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

mysql> 
3. 刪除表,drop table <表名>,<表名>...;可以指定多個表,同時刪除。記錄的操作:數據庫中記錄就是實際的數據信息,數據的存儲也是通過數據記錄來體現的。sql的功能主要體現在對這些記錄的操作上。存儲記錄的前提是必須有數據庫和數據表,有了表之後就可以進行插入、刪除、更新操作了。1.插入記錄,使用insert語句向指定數據表中插入新的數據行。語法格式如下:insert into <表名> [(<屬性列1>,<屬下列2>...)] values (<常量1> [,<常量2>] ...); 例如:
mysql> insert into regusers (userid, username, birth, last_login) values (10000, 'allen', '1981-1-1', '2014-2-2');
Query OK, 1 row affected (0.00 sec)

mysql> insert into regusers (username, birth, last_login) values ('brooks', '1982-4-2', '2014-4-30');
Query OK, 1 row affected (0.00 sec)

mysql> insert into regusers (username, birth, last_login) values ('curry', '1985-8-12', '2014-1-17');
Query OK, 1 row affected (0.00 sec)

mysql> select * from regusers;
+--------+----------+------------+------------+
| userid | username | birth      | last_login |
+--------+----------+------------+------------+
|  10000 | allen    | 1981-01-01 | 2014-02-02 |
|  10001 | brooks   | 1982-04-02 | 2014-04-30 |
|  10002 | curry    | 1985-08-12 | 2014-01-17 |
+--------+----------+------------+------------+
3 rows in set (0.00 sec)

mysql> 
4. 更新記錄,使用update語句更新或修改滿足規定條件的記錄。update語句格式為:update <表名> set <列名>=<表達式> [,<列名>=<表達式>]... [where <條件>];例如將regusers表中姓名為brooks的記錄的記錄修改為ben,如下:
mysql> update regusers set username='ben' where username='brooks';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from regusers;
+--------+----------+------------+------------+
| userid | username | birth      | last_login |
+--------+----------+------------+------------+
|  10000 | allen    | 1981-01-01 | 2014-02-02 |
|  10001 | ben      | 1982-04-02 | 2014-04-30 |
|  10002 | curry    | 1985-08-12 | 2014-01-17 |
+--------+----------+------------+------------+
3 rows in set (0.01 sec)

mysql> 
5. 刪除記錄。使用delete語句刪除數據表中滿足指定條件的記錄。delete語句的語法為:delete from <表名> [where <條件>]; 例如刪除表中userid為10002的的記錄如下:
mysql> delete from regusers where userid=10002;
Query OK, 1 row affected (0.02 sec)

mysql> select * from regusers;
+--------+----------+------------+------------+
| userid | username | birth      | last_login |
+--------+----------+------------+------------+
|  10000 | allen    | 1981-01-01 | 2014-02-02 |
|  10001 | ben      | 1982-04-02 | 2014-04-30 |
+--------+----------+------------+------------+
2 rows in set (0.00 sec)

mysql> 
數據庫查詢操作:sql使用select語句實現數據庫的查詢。查詢是數據庫使用最為頻繁的操作。select可以查詢表中指定滿足條件的若干列,同時可對查詢結果按一定順序排序。
查詢表tb_users中所有記錄sql如下:

mysql> select * from tb_users;  
+--------+----------+------------+------------+  
| userid | username | birth      | last_login |  
+--------+----------+------------+------------+  
|  10000 | allen    | 1981-01-01 | 2014-02-02 |  
|  10001 | ben      | 1982-04-02 | 2014-04-30 |  
|  10002 | curry    | 1985-08-12 | 2014-01-17 |  
+--------+----------+------------+------------+  
3 rows in set (0.00 sec)  
查詢出生年月小於1983-1-1的所有用戶:

mysql> select * from tb_users where birth < '1983-1-1';  
+--------+----------+------------+------------+  
| userid | username | birth      | last_login |  
+--------+----------+------------+------------+  
|  10000 | allen    | 1981-01-01 | 2014-02-02 |  
|  10001 | ben      | 1982-04-02 | 2014-04-30 |  
+--------+----------+------------+------------+  
2 rows in set (0.00 sec)  
查詢出生年月大於1982-1-1,並且按最後登錄時間排序:

mysql> select * from tb_users where birth > '1982-1-1' order by last_login;  
+--------+----------+------------+------------+  
| userid | username | birth      | last_login |  
+--------+----------+------------+------------+  
|  10002 | curry    | 1985-08-12 | 2014-01-17 |  
|  10001 | ben      | 1982-04-02 | 2014-04-30 |  
+--------+----------+------------+------------+  
2 rows in set (0.00 sec)  
只顯示用戶及其最後登錄時間:

mysql> select username,last_login from tb_users;  
+----------+------------+  
| username | last_login |  
+----------+------------+  
| allen    | 2014-02-02 |  
| ben      | 2014-04-30 |  
| curry    | 2014-01-17 |  
+----------+------------+  
3 rows in set (0.00 sec)


						

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved