知识大全 MySQL的重要语法
Posted 资料
篇首语:你不好好奋斗,拿什么显摆的自己的成功,对于背后的人看不起。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 MySQL的重要语法相关的知识,希望对你有一定的参考价值。
MySQL的重要语法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
一 帐号与权限 设定 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 * TO * @ * IDENTIFIED BY ; 把 这个资料库(含其下的所有资料表) 授权给 任何机器任何人 无密码(通常给不特定人士使用) 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+ 到 E 和 E 到 E+ DOUBLE 双精密)浮点数字 不能无符号 允许的值是 E+ 到 E 和 E 到 E+ 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 ment = 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 INTEGER b 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 (col col ) VALUES( col * ) 不可写成 mysql> INSERT INTO tbl_name (col col ) VALUES(col * ) 因为 栏位 col 的值先填入后 才可以计算栏位 col 从档案读入资料 语法 LOAD DATA [LOCAL] INFILE file_name txt [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 /data txt INTO TABLE db my_table; 从目前 MySQL 目录读入 data txt mysql> LOAD DATA INFILE / txt INTO TABLE TEACHER FIELDS TERMINATED BY ; 从目前 MySQL 目录(我的在 /var/lib/mysql )读入 data txt 每一栏位以 空白 分开 mysql> LOAD DATA INFILE persondata txt INTO TABLE persondata (col col …) 只将 persondata txt 里某些栏位的资料抓过来 删除纪录 DELETE [LOW PRIORITY] FROM 资料表名 WHERE 条件 [LIMIT rows] 语法 DELETE [LOW_PRIORITY] FROM tbl_name [WHERE where_definition] [LIMIT rows] LOW PRIORITY 是等到没有用户端使用时再删 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 =expr col_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 t name t salary from employee AS t info AS t where t name = t name; 显示资料库 employee(别名 t ) 里 资料表 t 的栏位 name 和 资料表 t 的栏位 salary 当…… mysql> select t name t salary from employee t info t where t name = t name; 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 user max(salary) from users group by user HAVING max(salary)> ; mysql> select user max(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 < batch file 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 Max size 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 o 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(M D) M+ bytes if D > M+ bytes if D = (D+ if M < D) NUMERIC(M D) 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( value value …) or bytes depending on the number of enumeration values ( values maximum) SET( value value …) or bytes depending on the number of set members ( members maximum) cha138/Article/program/MySQL/201311/29393相关参考
要学好英语是学语法重要还是培养语感重要?都重要。语法是学好英语的基础,它是掌握英语的工具。在你掌握了一定的词汇量后,了解一些语法知识是非常必要的。建立初步的语感,获得初步运用英语的能力,为真实交际打下
管理员必读10个重要MySQL客户启动选项 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 大部分
什么方法学习英语单词和语法速度快,记得牢?多听,多读,多说,不要害羞。。。最重要的是持之以恒。可以听听喜欢的英文歌,了解它的歌词,同时也唱出声音来。。。你也可以看一些英文卡通片,最好只有英文字幕的,不
[数据恢复故障描述] 一台重要的MYSQL数据库服务器GB*RAID约GBDATA卷存储了大约~个数据库平时管理员对每个数据库dump出以后直接压缩成gz包再将所有重要的gz包合起来压缩成一个总
怎么学好英语单词和语法。学英语语法切记不可盲目!如果你把语文的语法学通了,要学英语语法那是轻而易举的。而你只是一心要学好英语语法,却不注重将之融会贯通,那你就会越学越觉得烦、难,进而对学习英语语法、英
学了谢孟媛的语法还要学新概念英语的语法吗我认为结合学比较好。谢孟媛文法要听细,学透。特别要学习她的做题方法哦,顶呱呱滴。新概念的就拿来多读吧,有助于提高口语。语法不是学得越多就越好,是要学得扎实、深刻
***正则表达式语法(字符匹配语法重复匹配语法字符定位语法转义匹配语法)******** (字符 \\ 将下一个字符标记为
XPath语法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! XPath的语法 &nb
知识大全 我们现在学习的英语语法是外国人发明的,还是中国人总结
我们现在学习的英语语法是外国人发明的,还是中国人总结外国人也是人。中国人学语法,外国人怎么可能不学语法呢?中国人也不是所有人都学语法。外国人也不是所有人都学语法。语法是语言的规律,语言的规则。凡是语言
XML入门基础:XML的语法规则 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!提纲一XML语法规则