程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MYSQL常用簡單語句,mysql語句

MYSQL常用簡單語句,mysql語句

編輯:MySQL綜合教程

MYSQL常用簡單語句,mysql語句


使用SQL語法大寫,增加可讀性(小寫部分就是自己數據庫寫的表/字段喽,具體你懂得...)。

創建數據庫:CREATE DATABASE mysql_db;
刪除數據庫:DROP DATABASE mysql_db;
查看數據庫:SHOW DATABASES;
使用數據庫:USE mysql_db;
查看數據庫中的表:SHOW TABLES;

創建表:
CREATE TABLE user(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(20) UNIQUE NOT NULL,
sex ENUM('1','2','3') NOT NULL DEFAULT 3
);
查看表結構:①SELECT COLUMN FROM user;
      ②DESC user;


查看表創建語句(可查看各種自動生成的名字):SHOW CREATE TABLE user;
插入表記錄:
①INSERT INTO user(id,username,sex) VALUES(1,'Tom',1);
②INSERT user(username) VALUES ('John');
查找表:SELECT * FROM user;
刪除表中的數據(保留表結構):TRUNCATE TABLE user;
將查詢結果寫入新表:
INSERT [INTO] privinces(sex) SELECT sex FROM user GROUP BY sex;

(若表中有數據,請不要隨意更改表名、列名)
修改表名:
①ALTER TABLE user RENAME [AS|TO] users;
②RENAME TABLE user TO users;
添加單列:
ALTER TABLE user
 ADD [COLUMN] age SMALLINT NOT NULL UNSIGNED DEFUALT 18
 [FIRST | AFTER sex];
刪除列:ALTER TABLE user DROP sex[,DROP age];
修改列名稱和定義:
ALTER TABLE user
 CHANGE [COLUMN] age a_ge TINYINT NOT NULL UNSIGNED AFTER id;


單表更新:UPDATE user SET age = age + 5,sex = 1 [WHERE id = 2];
單表刪除:DELETE FROM user [WHERE id =3];
單(多)表連接:
SELECT p.userid,p.username FROM user AS p LEFT JOIN user AS s
 ON p.userid = s.age;
單(多)表刪除:
DELETE * FROM user [AS] u1 LEFT JOIN (
 SELECT p.userid FROM user AS p LEFT JOIN user AS s
 ON p.userid =s.age GROUP BY p.userid HAVING COUNT(s.age)>1 ) [AS] u2
 ON u1.userid = u2.age
WHERE u1.userid > u2.userid;

查找記錄:
SELETE select_expr [,select_expr]
 [
 FROM table_references
 [WHERE where_condition]
 [GROUP BY {col_name|position}[ASC|DESC],...] //查詢結果分組
 [HAVING where_condition] //設置分組條件
 [ORDER BY {col_name|expr|position}[ASC|DESC]] //對結果排序
 LIMIT {[offset,]row_count|row_count OFFSET offset}]//限制記錄數量
 ]


記錄為2、3行:SELECT * FROM user LIMIT 1,2;


別名使用(在項目中一般都使用別名)AS alias_name:
  SELECT id AS uid FROM user AS u ;


子查詢:
SELECT AVG(age) FROM user WHERE userid =
 [ALL|SOME|ANY|[NOT] IN|[NOT] EXISTS](SELECT uid FROM privinces WHERE pname = '河南');


外鍵約束:
(父表為user表,必須先在父表中插入數據,才能在子表中插入數據)
CASEADE:從父表中刪除或更新行 且 自動級聯刪除或更新子表中匹配的行;
SET NULL:從父表刪除或更新行,並設置子表中的外鍵列為NULL;
RESTRICT:拒絕對父表的更新或刪除操作;
CREATE TABLE privinces(
  pid SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
  pname VARCHAR(20) NOT NULL ,
  uid SMALLINT,
  FOREIGN KEY (uid) REFERENCES user (id)    //privinces的字段uid與user表的字段id外鍵約束
ON DELETE CASEADE   //刪除時 級聯刪除
);


增加主鍵、唯一、外鍵約束:
ALTER TABLE privinces
  ADD [CONSTRAINT uq_pname] UNIQUE(pname);
添加/刪除默認約束:
ALTER TABLE privinces
  ALTER pname {SET DEFAULT literal | DROP DEFAULT}; 
刪除主鍵約束:
ALTER TABLE privinces DROP PRIMARY KEY;
刪除唯一(索引)約束:
     (查看約束名字key_name: SHOW INDEXS FROM privinces;)
ALTER TABLE privinces DROP {INDEX | KEY} 約束名;
刪除外鍵約束:
     (查看約束名字:SHOW CREATE TABLE privinces;)
ALTER TABLE privinces DROP FOREIGN KEY 約束名;


多表更新:
UPDATE 表的參照關系 SET col_name = {[expr | value]};


表的參照關系:
tab1_reference {[INNER|CROSS] JOIN |{LEFT|RIGHT}[OUTER] JOIN} tab2_refenence ON conditional_expr;
內連接:INNER JOIN
左外連接:LEFT JOIN
右外連接:ROGHT JOIN
UPDATE user INNER JOIN privinces ON user_privince = pname
  SET user_privince = pid;//(更新user內連接privince,條件是 user_privince.=pname,設置user_privince=pid)

創建數據表的同時將查詢結果寫入數據表:
CREATE TABLE table_name
  [create_definition, ...]   //創建語句的定義
  select_statement;   //要插入查詢結果的 查詢語句


字符函數:
CONCAT()字符連接;CONCAT('I','LOVE','YOU');
CONCAT_WS()使用指定的分隔符進行字符連接;
CONCAT_WS('|','A','B');第一個為分割符
FORMAT();數字格式化;
FORMAT(99999.99,1);將數字格式化,並保留1位小數
LOWER();轉換成小寫字符
UPPER();轉換成大寫字符
LEFT();獲取左側字符
RIGHT();獲取右側字符
LENGTH();獲取字符長度;
LTRIN();刪除前導字符;
RTRIM();刪除後續字符
TRIM();刪除前導、後續字符;
SUBSTRING();字符串的截取;
SUBSTRING('MYSQL',1,2);從第一位中截取2位;(mysql不允許為負值)
[NOT] LIKE;模式匹配
SELECT * FROM user WHERE username LIKE '%1%%' ESCAPE '1';
REPLACE();替換字符串中的字符
REPLACE('M??Y??SQL','?','*');將M??Y??SQL中的?替換成*;


數值運算符:
CEIL();進一去整;
DIV;整數除法;
FLOOR();捨一去整;
MOD;取余數(模);
POWER();冪運算;
ROUND();四捨五入;ROUND(3.562,1);取一位小數
TRUNCATE();數字截取;TRUNCATE(125.89,1);小數後截取一位;


日期時間:
NOW();當前時間;
CURDATE();當前日期;
CURTIME();當前時間;
DATE_ADD();日期變化;
DATE_ADD('2015-6-23',INTERVAL 365 DAY);
DATEDIFF();倆日期之間的差值;
DATE_FORMAT();進行日期格式化;
SELECT DATE_FORMAT('2015-6-26','%m/%d/%Y');

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