熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

MySQL的重要語法

2022-06-13   來源: MySQL 

  一帳號與權限
    設定 root 和其他 user 的密碼
    mysqladmin u root password 新密碼
    mysqladmin u root p
    Enter password:    此時再輸入密碼(建議采用)
    use mysql;
    mysql> UPDATE user SET password=password(新密碼) where user=root;
    只改 root 的密碼如果沒有用 where 則表示改全部 user 的密碼
    mysql> FLUSH PRIVILEGES; 在 mysql 資料庫內一定要用 flush 更新記憶體上的資料
    刪除空帳號
    mysql> DELETE FROM user WHERE User = ;
    mysql> FLUSH PRIVILEGES;
    建立新帳號
    mysql> GRANT 權限 ON 資料庫或資料表 TO 使用者 IDENTIFIED BY 密碼;
    權限
    資料庫或資料表
    ** 所有資料庫裡的所有資料表
    * 預設資料庫裡的所有資料表
    資料庫* 某一資料庫裡的所有資料表
    資料庫資料表 某一資料庫裡的特定資料表
    資料表  預設資料庫裡的某一資料表
    設定/修改權限
    用 root 登入 MySQL
    mysqladmin u root p
    Enter password:
    mysql> GRANT all ON db* TO s@localhost IDENTIFIED BY s;
    把 db 這個資料庫(含其下的所有資料表)授權給 s從 localhost 上來密碼為s
    mysql> GRANT all ON **  把所有資料庫及資料表授權給別人太危險了!
    mysql> GRANT all??? ON www* TO *@* IDENTIFIED BY ;
    把 www 這個資料庫(含其下的所有資料表)授權給 任何機器任何人無密碼(通常給不特定人士使用)
    mysql> FLUSH PRIVILEGES;   (最後一定要強迫更新權限)
    二資料庫/資料表/欄位的操作
    建立資料庫 CREATE DATABASE 資料庫名
    語法CREATE DATABASE db_name
    使用資料庫 USE 資料庫名
    語法USE db_name
    刪除資料庫 DROP DATABASE 資料庫名
    語法DROP DATABASE [IF EXISTS] db_name
    建立資料表
    CREATE TABLE 資料表名 (欄位 資料型態 欄位 資料型態 ……)
    語法
    CREATE TABLE [IF NOT EXISTS] tbl_name (create_definition…) [table_options] [select_statement]
    例
    craete database basic;
    use basic;
    create table basic(
    no char(
    name char(
    id char())
    create_definition:
    col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
    [PRIMARY KEY] [reference_definition]
    or    PRIMARY KEY (index_col_name…)
    or    KEY [index_name] KEY(index_col_name…)
    or    INDEX [index_name] (index_col_name…)
    or    UNIQUE [INDEX] [index_name] (index_col_name…)
    or    [CONSTRAINT symbol] FOREIGN KEY index_name (index_col_name…)
    [reference_definition]
    or    CHECK (expr)
    資料結構(type)
    資料型態 說明
    TINYINT 有符號的范圍是 無符號的范圍是
    SMALLINT 有符號的范圍是 無符號的范圍是
    MEDIUMINT 有符號的范圍是 無符號的范圍是
    INT 有符號的范圍是 無符號的范圍是
    INTEGER INT的同義詞
    BIGINT 有符號的范圍是無符號的范圍是
    FLOAT 單精密浮點數字不能無符號允許的值是E+ EEE+
    DOUBLE 雙精密)浮點數字不能無符號允許的值是 E+E EE+
    DOUBLE PRECISION DOUBLE的同義詞
    REAL DOUBLE的同義詞
    DECIMAL DECIMAL值的最大范圍與DOUBLE相 同
    NUMERIC DECIMAL的同義詞
    DATE 日期支援的范圍是
    DATETIME 日期和時間組合支援的范圍是 :: ::
    TIMESTAMP 時間戳記范圍是 ::年的某時
    TIME 一個時間范圍是::::
    YEAR 位數字格式的年(內定是位)允許的值是
    CHAR 固定長度個字元
    VARCHAR 可變長度個字元
    TINYBLOB
    TINYTEXT 最大長度為^)個字符
    MEDIUMBLOB
    MEDIUMTEXT 最大長度為^)個字符
    LONGBLOB
    LONGTEXT 最大長度為^)個字符
    ENUM 一個ENUM最多能有不同的值
    SET 一個SET最多能有個成員
    index_col_name:
    col_name [(length)]
    reference_definition:
    REFERENCES tbl_name [(index_col_name…)]
    [MATCH FULL | MATCH PARTIAL]
    [ON DELETE reference_option]
    [ON UPDATE reference_option]
    reference_option:
    RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
    table_options:
    type = [ISAM | MYISAM | HEAP]
    or      max_rows = #
    or      min_rows = #
    or      avg_row_length = #
    or      comment = string
    or      auto_increment = #
    select_statement:
    [ | IGNORE | REPLACE] SELECT …  (Some legal select statement)
    刪除資料表 DROP TABLE 資料表名


    語法DROP TABLE [IF EXISTS] tbl_name [ tbl_name…]
    改變資料表結構(新增/刪除欄位建立/取消索引改變欄位資料型態欄位重新命 名)
    語法
    ALTER [IGNORE] TABLE tbl_name alter_spec [ alter_spec …]
    alter_specification:
    ADD [COLUMN] create_definition [FIRST | AFTER column_name ]
    or    ADD INDEX [index_name] (index_col_name…)
    or    ADD PRIMARY KEY (index_col_name…)
    or    ADD UNIQUE [index_name] (index_col_name…)
    or    ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
    or    CHANGE [COLUMN] old_col_name create_definition
    or    MODIFY [COLUMN] create_definition
    or    DROP [COLUMN] col_name
    or    DROP PRIMARY KEY
    or    DROP INDEX key_name
    or    RENAME [AS] new_tbl_name
    or    table_option
    范例
    欄位重新命名
    mysql> ALTER TABLE t CHANGE a b INTEGER;
    將資料表 t 欄位 a 改名為 b (其資料型態是 integer)
    改變欄位資料型態
    mysql> ALTER TABLE t CHANGE b b BIGINT NOT NULL;
    mysql> ALTER TABLE t MODIFY b BIGINT NOT NULL;
    將資料表 t 欄位 b 的資料型態改為 bigint not null
    mysql> CREATE TABLE t (a INTEGERb CHAR())
    mysql> ALTER TABLE t RENAME t;
    將資料表 t 改名為 t
    mysql> ALTER TABLE t MODIFY a TINYINT NOT NULL CHANGE b c CHAR(
    將資料表 t 欄位 a 資料型態由 integer 改為 tinyint not null 欄位 b 改名為 c 資料型態改為 char(
    mysql> ALTER TABLE t ADD d TIMESTAMP;
    在資料表 t 增加新欄位 d 資料型態是 timestamp
    mysql> ALTER TABLE t ADD INDEX (d) ADD PRIMARY KEY (a)
    在資料表 t 對 d 欄位做索引並以欄位 a 作為主索引鍵
    mysql> ALTER TABLE t DROP COLUMN c;
    刪除欄位 c
    mysql> ALTER TABLE t ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT ADD INDEX (c)
    新增欄位 c並做索引(做索引的欄位必須為 not null )
    資料表最佳化 OPTIMIZE TABLE 資料表名
    語法OPTIMIZE TABLE tbl_name
    欄位長度有變動刪除大量資料都應進行資料表最佳化
    三紀錄的操作
    插入一筆或多筆紀錄 INSERT INTO 資料表(欄位欄位……) VALUES(值……) (值……) ……
    (MySQL 以後可插入多筆記錄)
    語法
    INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
    [INTO] tbl_name [(col_name…)]
    VALUES (expression…)(…)
    or  INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
    [INTO] tbl_name [(col_name…)]
    SELECT …
    or  INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
    [INTO] tbl_name
    SET col_name=expression col_name=expression
    范例
    mysql> INSERT INTO tbl_name (colcol) VALUES(col*
    不可寫成
    mysql> INSERT INTO tbl_name (colcol) VALUES(col*
    因為欄位 col 的值先填入後才可以計算欄位 col
    從檔案讀入資料
    語法
    LOAD DATA [LOCAL] INFILE file_nametxt [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [FIELDS
    [TERMINATED BY \t]    每一欄位以某字元分開(內定是 tab)
    [OPTIONALLY] ENCLOSED BY ]   每一欄位以某字元括住(內定是不使用括號)
    [ESCAPED BY \\ ]]
    [LINES TERMINATED BY \n]  設定換行的字元(內 定是 \n)
    [IGNORE number LINES]    忽略最前面幾行(最前面幾筆記錄不抄進來)
    [(col_name…)]
    范例
    mysql> USE db;
    mysql> LOAD DATA INFILE /datatxt INTO TABLE dbmy_table;
    從目前 MySQL 目錄讀入 datatxt
    mysql> LOAD DATA INFILE /txt INTO TABLE TEACHER FIELDS TERMINATED BY ;
    從目前 MySQL 目錄(我的在 /var/lib/mysql )讀入 datatxt 每一欄位以 空白 分開
    mysql> LOAD DATA INFILE persondatatxt INTO TABLE persondata (colcol…)
    只將 persondatatxt 裡某些欄位的資料抓過來
    刪除紀錄 DELETE [LOWPRIORITY] FROM 資料表名 WHERE 條件 [LIMIT rows]
    語法
    DELETE [LOW_PRIORITY] FROM tbl_name
    [WHERE where_definition] [LIMIT rows]
    LOWPRIORITY 是等到沒有用戶端使用時再刪
    LIMIT rows 限制刪除紀錄的筆數
    范例
    mysql> DELETE FROM 資料表名
    刪除所有紀錄
    mysql> DELETE FROM 資料表名 WHERE >;
    刪除所有紀錄但速度較慢方便在螢幕上看
    更新一筆紀錄 (語法與 INSERT 相同)
    REPLACE INTO 資料表(欄位欄位……) VALUES(值……)
    語法
    REPLACE [LOW_PRIORITY | DELAYED]
    [INTO] tbl_name [(col_name…)]
    VALUES (expression…)
    or  REPLACE [LOW_PRIORITY | DELAYED]
    [INTO] tbl_name [(col_name…)]
    SELECT …
    or  REPLACE [LOW_PRIORITY | DELAYED]
    [INTO] tbl_name
    SET col_name=expression col_name=expression
    更新多筆紀錄
    語法
    UPDATE [LOW_PRIORITY] tbl_name SET col_name=exprcol_name=expr…     [WHERE where_definition]
    如果沒有設定 WHERE 條件則整個資料表相關的欄位都更新
    范例
    mysql> UPDATE persondata SET age=age+;
    將資料表 persondata 中所有 age 欄位都加
    mysql> UPDATE persondata SET age=age* age=age+;
    將資料表 persondata 中所有 age 欄位都*再加
    四資料的輸出
    SELECT
    語法
    SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [DISTINCT | ALL]
    select_expression
    [INTO OUTFILE file_name export_options]
    [FROM table_references
    [WHERE where_definition]
    [GROUP BY col_name…]
    [HAVING where_definition]
    [ORDER BY {unsigned_integer | col_name} [ASC | DESC] …]
    [LIMIT [offset] rows]
    [PROCEDURE procedure_name] ]
    范例
    排序輸出
    select * from 資料表名 order by 欄位名欄位名欄位名……
    反向排序輸出
    select * from 資料表名 order by 欄位名欄位名欄位名…… desc
    mysql> select concat(last_name first_name) AS full_name
    from mytable ORDER BY full_name;
    mysql> select tname tsalary from employee AS t info AS t
    where tname = tname;
    顯示資料庫 employee(別名 t) 裡資料表 t 的欄位 name 和 資料表 t 的欄位 salary 當……
    mysql> select tname tsalary from employee t info t           where tname = tname;
    mysql> select college region seed from tournament
    ORDER BY region seed;
    mysql> select college region AS r seed AS s from tournament
    ORDER BY r s;
    mysql> select college region seed from tournament
    ORDER BY ;
    mysql> select col_name from tbl_name HAVING col_name > ;
    mysql> select col_name from tbl_name WHERE col_name > ;
    mysql> select usermax(salary) from users
    group by user HAVING max(salary)>;
    mysql> select usermax(salary) AS sum from users
    group by user HAVING sum>;
    mysql> select * from table LIMIT ;  # Retrieve rows
    mysql> select * from table LIMIT ;     # Retrieve first rows
    在命令列下進行批次處理
    shell> mysql h host u user p < batchfile
    Enter password: ********
    Type Bytes From To
    TINYINT
    SMALLINT
    MEDIUMINT
    INT
    BIGINT
    Column type ``Zero value
    DATETIME ::
    DATE
    TIMESTAMP (length depends on display size)
    TIME ::
    YEAR
    Column type Display format
    TIMESTAMP() YYYYMMDDHHMMSS
    TIMESTAMP() YYMMDDHHMMSS
    TIMESTAMP() YYMMDDHHMM
    TIMESTAMP() YYYYMMDD
    TIMESTAMP() YYMMDD
    TIMESTAMP() YYMM
    TIMESTAMP() YY
    Type Maxsize Bytes
    TINYTEXT or TINYBLOB ^
    TEXT or BLOB ^K
    MEDIUMTEXT or MEDIUMBLOB ^M
    LONGBLOB ^G
    Value CHAR() Storage required VARCHAR() Storage required
    bytes byte
    ab ab bytes ab bytes
    abcd abcd bytes abcd bytes
    abcdefgh abcd bytes abcd bytes
    Value Index
    NULL NULL
   
    one
    two
    three
    Other vendor type MySQL type
    BINARY(NUM) CHAR(NUM) BINARY
    CHAR VARYING(NUM) VARCHAR(NUM)
    FLOAT FLOAT
    FLOAT DOUBLE
    INT TINYINT
    INT SMALLINT
    INT MEDIUMINT
    INT INT
    INT BIGINT
    LONG VARBINARY MEDIUMBLOB
    LONG VARCHAR MEDIUMTEXT
    MIDDLEINT MEDIUMINT
    VARBINARY(NUM) VARCHAR(NUM) BINARY
    Column type Storage required
    TINYINT byte
    SMALLINT bytes
    MEDIUMINT bytes
    INT bytes
    INTEGER bytes
    BIGINT bytes
    FLOAT(X) if X <= or if <= X <=
    FLOAT bytes
    DOUBLE bytes
    DOUBLE PRECISION bytes
    REAL bytes
    DECIMAL(MD) M+ bytes if D > M+ bytes if D = (D+ if M < D)
    NUMERIC(MD) M+ bytes if D > M+ bytes if D = (D+ if M < D)
    Column type Storage required
    DATE bytes
    DATETIME bytes
    TIMESTAMP bytes
    TIME bytes
    YEAR byte
    Column type Storage required
    CHAR(M) M bytes <= M <=
    VARCHAR(M) L+ bytes where L <= M and <= M <=
    TINYBLOB TINYTEXT L+ bytes where L < ^
    BLOB TEXT L+ bytes where L < ^
    MEDIUMBLOB MEDIUMTEXT L+ bytes where L < ^
    LONGBLOB LONGTEXT L+ bytes where L < ^
    ENUM(valuevalue…) or bytes depending on the number of enumeration values ( values maximum)
    SET(valuevalue…) or bytes depending on the number of set members ( members maximum)


From:http://tw.wingwit.com/Article/program/MySQL/201311/29393.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.